xserver/hw/kdrive/src kaa.c, 1.34, 1.35 kaa.h, 1.7, 1.8 kdrive.h, 1.58, 1.59 kinput.c, 1.42, 1.43
Keith Packard <xserver-commit-u7BhqnqprCWvj1b/[email protected]> Tue, 8 Feb 2005 14:43:56 -0800 (PST)
| Newsgroups | gmane.comp.freedesktop.xserver.cvs |
|---|---|
| Message-ID | <[email protected]> |
Committed by: keithp Update of /cvs/xserver/xserver/hw/kdrive/src In directory gabe:/tmp/cvs-serv18753/hw/kdrive/src Modified Files: kaa.c kaa.h kdrive.h kinput.c Log Message: 2005-02-08 Keith Packard <[email protected]> * hw/kdrive/ati/radeon_composite.c Support linear filtering * hw/kdrive/fbdev/fbinit.c: (InitInput): * hw/kdrive/ipaq/ipaq.c: (InitInput): * hw/kdrive/linux/Makefile.am: * hw/kdrive/linux/linux.c: (LinuxFini): * hw/kdrive/mach64/mach64stub.c: (InitCard): * hw/kdrive/src/kaa.c: (kaaFillTiled): * hw/kdrive/src/kaa.h: * hw/kdrive/src/kdrive.h: * hw/kdrive/src/kinput.c: (KdMouseProc), (KdAddMouseDriver), (KdInitInput): Change how touch screens work -- make them just another 'mouse' device. Add unfinished (and unused) code to accelerate tiled fills. Index: kaa.c =================================================================== RCS file: /cvs/xserver/xserver/hw/kdrive/src/kaa.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- kaa.c 30 Aug 2004 22:16:46 -0000 1.34 +++ kaa.c 8 Feb 2005 22:43:54 -0000 1.35 @@ -384,6 +384,53 @@ return kaaPixmapIsOffscreen (pPixmap); } +#if 0 +static void +kaaFillTiled(int dst_x, + int dst_y, + int width, + int height, + int src_x, + int src_y, + int src_width, + int src_height, + void (*Copy) (int srcX, + int srcY, + int dstX, + int dstY, + int width, + int height)) +{ + modulus (src_x, src_width, src_x); + modulus (src_y, src_height, src_y); + + while (height) + { + int dst_x_tmp = dst_x; + int src_x_tmp = src_x; + int width_tmp = width; + int height_left = src_height - src_y; + int height_this = min (height, height_left); + + while (width_tmp) + { + int width_left = src_width - src_x_tmp; + int width_this = min (width_tmp, width_left); + + (*Copy) (src_x_tmp, src_y, + dst_x_tmp, dst_y, + width_this, height_this); + + width_tmp -= width_this; + dst_x_tmp += width_this; + } + height -= height_this; + dst_y += height_this; + src_y = 0; + } +} +#endif + static void kaaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n, DDXPointPtr ppt, int *pwidth, int fSorted) @@ -956,6 +1003,18 @@ kaaDrawableDirty (pDrawable); } +#if 0 +static void +kaaFillRegionTiled (DrawablePtr pDrawable, + RegionPtr pRegion, + Pixmap pTile) +{ + else + { + KdCheckSync +} +#endif + static void kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what) { @@ -977,6 +1036,11 @@ case BackgroundPixel: kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel); return; +#if 0 + case BackgroundPixmap: + kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap); + return; +#endif } break; case PW_BORDER: @@ -985,6 +1049,13 @@ kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel); return; } +#if 0 + else + { + kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap); + return; + } +#endif break; } KdCheckPaintWindow (pWin, pRegion, what); Index: kaa.h =================================================================== RCS file: /cvs/xserver/xserver/hw/kdrive/src/kaa.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- kaa.h 11 Sep 2004 09:23:12 -0000 1.7 +++ kaa.h 8 Feb 2005 22:43:54 -0000 1.8 @@ -1,5 +1,5 @@ /* - * $RCSId$ + * $RCSId: $ * * Copyright © 2001 Keith Packard * Index: kdrive.h =================================================================== RCS file: /cvs/xserver/xserver/hw/kdrive/src/kdrive.h,v retrieving revision 1.58 retrieving revision 1.59 diff -u -d -r1.58 -r1.59 --- kdrive.h 13 Nov 2004 16:41:00 -0000 1.58 +++ kdrive.h 8 Feb 2005 22:43:54 -0000 1.59 @@ -708,6 +708,9 @@ void KdInitInput(KdMouseFuncs *, KdKeyboardFuncs *); +void +KdAddMouseDriver(KdMouseFuncs *); + int KdAllocInputType (void); @@ -722,11 +725,6 @@ void KdUnregisterFds (int type, Bool do_close); -#ifdef TOUCHSCREEN -void -KdInitTouchScreen(KdMouseFuncs *pTsFuncs); -#endif - void KdEnqueueKeyboardEvent(unsigned char scan_code, unsigned char is_up); @@ -778,6 +776,7 @@ ProcessInputEvents (void); extern KdMouseFuncs LinuxMouseFuncs; +extern KdMouseFuncs LinuxEvdevFuncs; extern KdMouseFuncs Ps2MouseFuncs; extern KdMouseFuncs BusMouseFuncs; extern KdMouseFuncs MsMouseFuncs; Index: kinput.c =================================================================== RCS file: /cvs/xserver/xserver/hw/kdrive/src/kinput.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- kinput.c 13 Nov 2004 16:41:00 -0000 1.42 +++ kinput.c 8 Feb 2005 22:43:54 -0000 1.43 @@ -45,7 +45,10 @@ static DeviceIntPtr pKdKeyboard, pKdPointer; -static KdMouseFuncs *kdMouseFuncs; +#define MAX_MOUSE_DRIVERS 4 + +static KdMouseFuncs *kdMouseFuncs[MAX_MOUSE_DRIVERS]; +static int kdNMouseFuncs; static KdKeyboardFuncs *kdKeyboardFuncs; static int kdBellPitch; static int kdBellDuration; @@ -58,10 +61,6 @@ { 0, 1, 0 } } }; -#ifdef TOUCHSCREEN -static KdMouseFuncs *kdTsFuncs; -#endif - int kdMouseButtonCount; int kdMinScanCode; int kdMaxScanCode; @@ -327,12 +326,8 @@ case DEVICE_ON: pDev->on = TRUE; pKdPointer = pDevice; -#ifdef TOUCHSCREEN - if (kdTsFuncs) - (*kdTsFuncs->Init) (); -#endif - if (kdMouseFuncs) - (*kdMouseFuncs->Init) (); + for (i = 0; i < kdNMouseFuncs; i++) + (*kdMouseFuncs[i]->Init)(); break; case DEVICE_OFF: case DEVICE_CLOSE: @@ -340,12 +335,8 @@ { pDev->on = FALSE; pKdPointer = 0; - if (kdMouseFuncs) - (*kdMouseFuncs->Fini) (); -#ifdef TOUCHSCREEN - if (kdTsFuncs) - (*kdTsFuncs->Fini) (); -#endif + for (i = 0; i < kdNMouseFuncs; i++) + (*kdMouseFuncs[i]->Fini) (); } break; } @@ -579,6 +570,13 @@ } void +KdAddMouseDriver(KdMouseFuncs *pMouseFuncs) +{ + if (kdNMouseFuncs < MAX_MOUSE_DRIVERS) + kdMouseFuncs[kdNMouseFuncs++] = pMouseFuncs; +} + +void KdInitInput(KdMouseFuncs *pMouseFuncs, KdKeyboardFuncs *pKeyboardFuncs) { @@ -594,7 +592,8 @@ kdMouseButtonCount = mi->nbutton; } - kdMouseFuncs = pMouseFuncs; + kdNMouseFuncs = 0; + KdAddMouseDriver (pMouseFuncs); kdKeyboardFuncs = pKeyboardFuncs; memset (kdKeyState, '\0', sizeof (kdKeyState)); if (kdKeyboardFuncs) @@ -629,14 +628,6 @@ #endif } -#ifdef TOUCHSCREEN -void -KdInitTouchScreen(KdMouseFuncs *pTsFuncs) -{ - kdTsFuncs = pTsFuncs; -} -#endif - /* * Middle button emulation state machine *