hw/kdrive/ati/radeon_composite.c Support linear filtering
Change how touch screens work -- make them just another 'mouse' device. Add
    unfinished (and unused) code to accelerate tiled fills.
			
			
This commit is contained in:
		
							parent
							
								
									70d3a9192f
								
							
						
					
					
						commit
						db2c83551c
					
				| 
						 | 
					@ -164,7 +164,7 @@ R100TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ATIScreenInfo *atis = accel_atis;
 | 
						ATIScreenInfo *atis = accel_atis;
 | 
				
			||||||
	KdScreenPriv(pPix->drawable.pScreen);
 | 
						KdScreenPriv(pPix->drawable.pScreen);
 | 
				
			||||||
	CARD32 txformat, txoffset, txpitch;
 | 
						CARD32 txfilter, txformat, txoffset, txpitch;
 | 
				
			||||||
	int w = pPict->pDrawable->width;
 | 
						int w = pPict->pDrawable->width;
 | 
				
			||||||
	int h = pPict->pDrawable->height;
 | 
						int h = pPict->pDrawable->height;
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
| 
						 | 
					@ -196,10 +196,24 @@ R100TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
 | 
				
			||||||
	if ((txpitch & 0x1f) != 0)
 | 
						if ((txpitch & 0x1f) != 0)
 | 
				
			||||||
		ATI_FALLBACK(("Bad texture pitch 0x%x\n", txpitch));
 | 
							ATI_FALLBACK(("Bad texture pitch 0x%x\n", txpitch));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						switch (pPict->filter) {
 | 
				
			||||||
 | 
						case PictFilterNearest:
 | 
				
			||||||
 | 
							txfilter = (RADEON_MAG_FILTER_NEAREST |
 | 
				
			||||||
 | 
								    RADEON_MIN_FILTER_NEAREST);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case PictFilterBilinear:
 | 
				
			||||||
 | 
							txfilter = (RADEON_MAG_FILTER_LINEAR |
 | 
				
			||||||
 | 
								    RADEON_MIN_FILTER_LINEAR);
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							ATI_FALLBACK (("Bad filter 0x%x\n", pPict->filter));
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BEGIN_DMA(7);
 | 
						BEGIN_DMA(7);
 | 
				
			||||||
	if (unit == 0) {
 | 
						if (unit == 0) {
 | 
				
			||||||
		OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXFILTER_0, 3));
 | 
							OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXFILTER_0, 3));
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXFILTER_0, 0);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXFILTER_0, txfilter);
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXFORMAT_0, txformat);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXFORMAT_0, txformat);
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXOFFSET_0, txoffset);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXOFFSET_0, txoffset);
 | 
				
			||||||
		OUT_RING(DMA_PACKET0(RADEON_REG_PP_TEX_SIZE_0, 2));
 | 
							OUT_RING(DMA_PACKET0(RADEON_REG_PP_TEX_SIZE_0, 2));
 | 
				
			||||||
| 
						 | 
					@ -209,7 +223,7 @@ R100TextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TEX_PITCH_0, txpitch - 32);
 | 
							OUT_RING_REG(RADEON_REG_PP_TEX_PITCH_0, txpitch - 32);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXFILTER_1, 3));
 | 
							OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXFILTER_1, 3));
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXFILTER_1, 0);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXFILTER_1, txfilter);
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXFORMAT_1, txformat);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXFORMAT_1, txformat);
 | 
				
			||||||
		OUT_RING_REG(RADEON_REG_PP_TXOFFSET_1, txoffset);
 | 
							OUT_RING_REG(RADEON_REG_PP_TXOFFSET_1, txoffset);
 | 
				
			||||||
		OUT_RING(DMA_PACKET0(RADEON_REG_PP_TEX_SIZE_1, 2));
 | 
							OUT_RING(DMA_PACKET0(RADEON_REG_PP_TEX_SIZE_1, 2));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -47,7 +47,7 @@ InitInput (int argc, char **argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
					    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					#ifdef TOUCHSCREEN
 | 
				
			||||||
    KdInitTouchScreen (&TsFuncs);
 | 
					    KdAddMouseDriver (&TsFuncs);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -52,7 +52,7 @@ InitInput (int argc, char **argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
					    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					#ifdef TOUCHSCREEN
 | 
				
			||||||
    KdInitTouchScreen (&TsFuncs);
 | 
					    KdAddMouseDriver (&TsFuncs);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,7 @@ liblinux_a_SOURCES = 	\
 | 
				
			||||||
	klinux.h	\
 | 
						klinux.h	\
 | 
				
			||||||
	linux.c		\
 | 
						linux.c		\
 | 
				
			||||||
	mouse.c		\
 | 
						mouse.c		\
 | 
				
			||||||
 | 
						evdev.c		\
 | 
				
			||||||
	ms.c		\
 | 
						ms.c		\
 | 
				
			||||||
	ps2.c		\
 | 
						ps2.c		\
 | 
				
			||||||
	$(TSLIB_C)	\
 | 
						$(TSLIB_C)	\
 | 
				
			||||||
| 
						 | 
					@ -32,6 +33,7 @@ liblinux_a_DEPENDENCIES = \
 | 
				
			||||||
	keyboard.c	\
 | 
						keyboard.c	\
 | 
				
			||||||
	linux.c		\
 | 
						linux.c		\
 | 
				
			||||||
	mouse.c		\
 | 
						mouse.c		\
 | 
				
			||||||
 | 
						evdev.c		\
 | 
				
			||||||
	ms.c		\
 | 
						ms.c		\
 | 
				
			||||||
	ps2.c		\
 | 
						ps2.c		\
 | 
				
			||||||
	$(TSLIB_C)	\
 | 
						$(TSLIB_C)	\
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -429,28 +429,31 @@ LinuxFini (void)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    memset (&vts, '\0', sizeof (vts));	/* valgrind */
 | 
					    memset (&vts, '\0', sizeof (vts));	/* valgrind */
 | 
				
			||||||
    ioctl (LinuxConsoleFd, VT_GETSTATE, &vts);
 | 
					    ioctl (LinuxConsoleFd, VT_GETSTATE, &vts);
 | 
				
			||||||
    /*
 | 
					    if (vtno == vts.v_active)
 | 
				
			||||||
     * Find a legal VT to switch to, either the one we started from
 | 
					 | 
				
			||||||
     * or the lowest active one that isn't ours
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    if (activeVT < 0 || 
 | 
					 | 
				
			||||||
	activeVT == vts.v_active || 
 | 
					 | 
				
			||||||
	!(vts.v_state & (1 << activeVT)))
 | 
					 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
	for (activeVT = 1; activeVT < 16; activeVT++)
 | 
						/*
 | 
				
			||||||
	    if (activeVT != vtno && (vts.v_state & (1 << activeVT)))
 | 
						 * Find a legal VT to switch to, either the one we started from
 | 
				
			||||||
		break;
 | 
						 * or the lowest active one that isn't ours
 | 
				
			||||||
	if (activeVT == 16)
 | 
						 */
 | 
				
			||||||
 | 
						if (activeVT < 0 || 
 | 
				
			||||||
 | 
						    activeVT == vts.v_active || 
 | 
				
			||||||
 | 
						    !(vts.v_state & (1 << activeVT)))
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    for (activeVT = 1; activeVT < 16; activeVT++)
 | 
				
			||||||
 | 
							if (activeVT != vtno && (vts.v_state & (1 << activeVT)))
 | 
				
			||||||
 | 
							    break;
 | 
				
			||||||
 | 
						    if (activeVT == 16)
 | 
				
			||||||
 | 
							activeVT = -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						/*
 | 
				
			||||||
 | 
						 * Perform a switch back to the active VT when we were started
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						if (activeVT >= -1)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    ioctl (LinuxConsoleFd, VT_ACTIVATE, activeVT);
 | 
				
			||||||
 | 
						    ioctl (LinuxConsoleFd, VT_WAITACTIVE, activeVT);
 | 
				
			||||||
	    activeVT = -1;
 | 
						    activeVT = -1;
 | 
				
			||||||
    }
 | 
						}
 | 
				
			||||||
    /*
 | 
					 | 
				
			||||||
     * Perform a switch back to the active VT when we were started
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    if (activeVT >= -1)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
	ioctl (LinuxConsoleFd, VT_ACTIVATE, activeVT);
 | 
					 | 
				
			||||||
	ioctl (LinuxConsoleFd, VT_WAITACTIVE, activeVT);
 | 
					 | 
				
			||||||
	activeVT = -1;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    close(LinuxConsoleFd);                /* make the vt-manager happy */
 | 
					    close(LinuxConsoleFd);                /* make the vt-manager happy */
 | 
				
			||||||
    fd = open ("/dev/tty0", O_RDWR|O_NDELAY, 0);
 | 
					    fd = open ("/dev/tty0", O_RDWR|O_NDELAY, 0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,8 @@ InitCard (char *name)
 | 
				
			||||||
	KdCardInfoAdd (&mach64Funcs, &attr, 0);
 | 
						KdCardInfoAdd (&mach64Funcs, &attr, 0);
 | 
				
			||||||
    else if (LinuxFindPci (0x1002, 0x4c46, 0, &attr))
 | 
					    else if (LinuxFindPci (0x1002, 0x4c46, 0, &attr))
 | 
				
			||||||
	KdCardInfoAdd (&mach64Funcs, &attr, 0);
 | 
						KdCardInfoAdd (&mach64Funcs, &attr, 0);
 | 
				
			||||||
 | 
					    else if (LinuxFindPci (0x1002, 0x4c42, 0, &attr))
 | 
				
			||||||
 | 
						KdCardInfoAdd (&mach64Funcs, &attr, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,37 @@
 | 
				
			||||||
 | 
					2005-02-08  Keith Packard  <keithp@keithp.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reviewed by: <delete if not using a buddy>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* ChangeLog:
 | 
				
			||||||
 | 
						* neomagicstub.c: (InitInput):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2005-02-08  Keith Packard  <keithp@keithp.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reviewed by: <delete if not using a buddy>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* ChangeLog:
 | 
				
			||||||
 | 
						* neomagicstub.c: (InitInput):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2005-02-08  Keith Packard  <keithp@keithp.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reviewed by: <delete if not using a buddy>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* ChangeLog:
 | 
				
			||||||
 | 
						* neomagicstub.c: (InitInput):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2005-02-08  Keith Packard  <keithp@keithp.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reviewed by: <delete if not using a buddy>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* ChangeLog:
 | 
				
			||||||
 | 
						* neomagicstub.c: (InitInput):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2005-02-08  Keith Packard  <keithp@keithp.com>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						reviewed by: <delete if not using a buddy>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						* neomagicstub.c: (InitInput):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2004-07-21  Phil Blundell  <pb@nexus.co.uk>
 | 
					2004-07-21  Phil Blundell  <pb@nexus.co.uk>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	* Makefile.am (Xneomagic_LDADD): Include -lts if appropriate.
 | 
						* Makefile.am (Xneomagic_LDADD): Include -lts if appropriate.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,7 +53,7 @@ InitInput (int argc, char **argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
					    KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					#ifdef TOUCHSCREEN
 | 
				
			||||||
    KdInitTouchScreen (&TsFuncs);
 | 
					    KdAddMouseDriver (&TsFuncs);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -384,6 +384,53 @@ kaaDrawableIsOffscreen (DrawablePtr pDrawable)
 | 
				
			||||||
    return kaaPixmapIsOffscreen (pPixmap);
 | 
					    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
 | 
					static void
 | 
				
			||||||
kaaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n, 
 | 
					kaaFillSpans(DrawablePtr pDrawable, GCPtr pGC, int n, 
 | 
				
			||||||
	     DDXPointPtr ppt, int *pwidth, int fSorted)
 | 
						     DDXPointPtr ppt, int *pwidth, int fSorted)
 | 
				
			||||||
| 
						 | 
					@ -956,6 +1003,18 @@ kaaFillRegionSolid (DrawablePtr	pDrawable,
 | 
				
			||||||
    kaaDrawableDirty (pDrawable);
 | 
					    kaaDrawableDirty (pDrawable);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
					static void
 | 
				
			||||||
 | 
					kaaFillRegionTiled (DrawablePtr pDrawable,
 | 
				
			||||||
 | 
							    RegionPtr	pRegion,
 | 
				
			||||||
 | 
							    Pixmap	pTile)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
						KdCheckSync
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
 | 
					kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -977,6 +1036,11 @@ kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
 | 
				
			||||||
	case BackgroundPixel:
 | 
						case BackgroundPixel:
 | 
				
			||||||
	    kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel);
 | 
						    kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->background.pixel);
 | 
				
			||||||
	    return;
 | 
						    return;
 | 
				
			||||||
 | 
					#if 0	    
 | 
				
			||||||
 | 
						case BackgroundPixmap:
 | 
				
			||||||
 | 
						    kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->background.pixmap);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    	}
 | 
					    	}
 | 
				
			||||||
    	break;
 | 
					    	break;
 | 
				
			||||||
    case PW_BORDER:
 | 
					    case PW_BORDER:
 | 
				
			||||||
| 
						 | 
					@ -985,6 +1049,13 @@ kaaPaintWindow(WindowPtr pWin, RegionPtr pRegion, int what)
 | 
				
			||||||
	    kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel);
 | 
						    kaaFillRegionSolid((DrawablePtr)pWin, pRegion, pWin->border.pixel);
 | 
				
			||||||
	    return;
 | 
						    return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					#if 0
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
						    kaaFillRegionTiled((DrawablePtr)pWin, pRegion, pWin->border.pixmap);
 | 
				
			||||||
 | 
						    return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
	break;
 | 
						break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    KdCheckPaintWindow (pWin, pRegion, what);
 | 
					    KdCheckPaintWindow (pWin, pRegion, what);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * $RCSId$
 | 
					 * $RCSId: $
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright © 2001 Keith Packard
 | 
					 * Copyright © 2001 Keith Packard
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -708,6 +708,9 @@ KdScreenInfoDispose (KdScreenInfo *si);
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
KdInitInput(KdMouseFuncs *, KdKeyboardFuncs *);
 | 
					KdInitInput(KdMouseFuncs *, KdKeyboardFuncs *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					KdAddMouseDriver(KdMouseFuncs *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int
 | 
					int
 | 
				
			||||||
KdAllocInputType (void);
 | 
					KdAllocInputType (void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -722,11 +725,6 @@ KdRegisterFdEnableDisable (int fd,
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
KdUnregisterFds (int type, Bool do_close);
 | 
					KdUnregisterFds (int type, Bool do_close);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
KdInitTouchScreen(KdMouseFuncs *pTsFuncs);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
KdEnqueueKeyboardEvent(unsigned char	scan_code,
 | 
					KdEnqueueKeyboardEvent(unsigned char	scan_code,
 | 
				
			||||||
		       unsigned char	is_up);
 | 
							       unsigned char	is_up);
 | 
				
			||||||
| 
						 | 
					@ -778,6 +776,7 @@ void
 | 
				
			||||||
ProcessInputEvents (void);
 | 
					ProcessInputEvents (void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern KdMouseFuncs	LinuxMouseFuncs;
 | 
					extern KdMouseFuncs	LinuxMouseFuncs;
 | 
				
			||||||
 | 
					extern KdMouseFuncs	LinuxEvdevFuncs;
 | 
				
			||||||
extern KdMouseFuncs	Ps2MouseFuncs;
 | 
					extern KdMouseFuncs	Ps2MouseFuncs;
 | 
				
			||||||
extern KdMouseFuncs	BusMouseFuncs;
 | 
					extern KdMouseFuncs	BusMouseFuncs;
 | 
				
			||||||
extern KdMouseFuncs	MsMouseFuncs;
 | 
					extern KdMouseFuncs	MsMouseFuncs;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,10 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static DeviceIntPtr	pKdKeyboard, pKdPointer;
 | 
					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 KdKeyboardFuncs	*kdKeyboardFuncs;
 | 
				
			||||||
static int		kdBellPitch;
 | 
					static int		kdBellPitch;
 | 
				
			||||||
static int		kdBellDuration;
 | 
					static int		kdBellDuration;
 | 
				
			||||||
| 
						 | 
					@ -58,10 +61,6 @@ static KdMouseMatrix	kdMouseMatrix = {
 | 
				
			||||||
     { 0, 1, 0 } }
 | 
					     { 0, 1, 0 } }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					 | 
				
			||||||
static KdMouseFuncs	*kdTsFuncs;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int		kdMouseButtonCount;
 | 
					int		kdMouseButtonCount;
 | 
				
			||||||
int		kdMinScanCode;
 | 
					int		kdMinScanCode;
 | 
				
			||||||
int		kdMaxScanCode;
 | 
					int		kdMaxScanCode;
 | 
				
			||||||
| 
						 | 
					@ -327,12 +326,8 @@ KdMouseProc(DeviceIntPtr pDevice, int onoff)
 | 
				
			||||||
    case DEVICE_ON:
 | 
					    case DEVICE_ON:
 | 
				
			||||||
	pDev->on = TRUE;
 | 
						pDev->on = TRUE;
 | 
				
			||||||
	pKdPointer = pDevice;
 | 
						pKdPointer = pDevice;
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
						for (i = 0; i < kdNMouseFuncs; i++)
 | 
				
			||||||
	if (kdTsFuncs)
 | 
						    (*kdMouseFuncs[i]->Init)();
 | 
				
			||||||
	    (*kdTsFuncs->Init) ();
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	if (kdMouseFuncs)
 | 
					 | 
				
			||||||
	    (*kdMouseFuncs->Init) ();
 | 
					 | 
				
			||||||
	break;
 | 
						break;
 | 
				
			||||||
    case DEVICE_OFF:
 | 
					    case DEVICE_OFF:
 | 
				
			||||||
    case DEVICE_CLOSE:
 | 
					    case DEVICE_CLOSE:
 | 
				
			||||||
| 
						 | 
					@ -340,12 +335,8 @@ KdMouseProc(DeviceIntPtr pDevice, int onoff)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
	    pDev->on = FALSE;
 | 
						    pDev->on = FALSE;
 | 
				
			||||||
	    pKdPointer = 0;
 | 
						    pKdPointer = 0;
 | 
				
			||||||
	    if (kdMouseFuncs)
 | 
						    for (i = 0; i < kdNMouseFuncs; i++)
 | 
				
			||||||
		(*kdMouseFuncs->Fini) ();
 | 
							(*kdMouseFuncs[i]->Fini) ();
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					 | 
				
			||||||
	    if (kdTsFuncs)
 | 
					 | 
				
			||||||
		(*kdTsFuncs->Fini) ();
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	break;
 | 
						break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -578,6 +569,13 @@ KdInitModMap (void)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					KdAddMouseDriver(KdMouseFuncs *pMouseFuncs)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (kdNMouseFuncs < MAX_MOUSE_DRIVERS)
 | 
				
			||||||
 | 
						kdMouseFuncs[kdNMouseFuncs++] = pMouseFuncs;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
KdInitInput(KdMouseFuncs    *pMouseFuncs,
 | 
					KdInitInput(KdMouseFuncs    *pMouseFuncs,
 | 
				
			||||||
	    KdKeyboardFuncs *pKeyboardFuncs)
 | 
						    KdKeyboardFuncs *pKeyboardFuncs)
 | 
				
			||||||
| 
						 | 
					@ -594,7 +592,8 @@ KdInitInput(KdMouseFuncs    *pMouseFuncs,
 | 
				
			||||||
	    kdMouseButtonCount = mi->nbutton;
 | 
						    kdMouseButtonCount = mi->nbutton;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    kdMouseFuncs = pMouseFuncs;
 | 
					    kdNMouseFuncs = 0;
 | 
				
			||||||
 | 
					    KdAddMouseDriver (pMouseFuncs);
 | 
				
			||||||
    kdKeyboardFuncs = pKeyboardFuncs;
 | 
					    kdKeyboardFuncs = pKeyboardFuncs;
 | 
				
			||||||
    memset (kdKeyState, '\0', sizeof (kdKeyState));
 | 
					    memset (kdKeyState, '\0', sizeof (kdKeyState));
 | 
				
			||||||
    if (kdKeyboardFuncs)
 | 
					    if (kdKeyboardFuncs)
 | 
				
			||||||
| 
						 | 
					@ -629,14 +628,6 @@ KdInitInput(KdMouseFuncs    *pMouseFuncs,
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef TOUCHSCREEN
 | 
					 | 
				
			||||||
void
 | 
					 | 
				
			||||||
KdInitTouchScreen(KdMouseFuncs *pTsFuncs)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    kdTsFuncs = pTsFuncs;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Middle button emulation state machine
 | 
					 * Middle button emulation state machine
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue