Tiny-X: Add mouse matrix to rotate mouse, allow enable to fail, add render
by default
This commit is contained in:
parent
f7421d8361
commit
d6e151ce4d
|
@ -1,16 +1,20 @@
|
||||||
XCOMM $XConsortium: Imakefile /main/10 1996/12/02 10:20:33 lehors $
|
XCOMM $XConsortium: Imakefile /main/10 1996/12/02 10:20:33 lehors $
|
||||||
XCOMM $XFree86: xc/programs/Xserver/hw/kdrive/Imakefile,v 1.1 1999/11/19 13:53:47 hohndel Exp $
|
XCOMM $XFree86: xc/programs/Xserver/hw/kdrive/Imakefile,v 1.3 2000/08/26 00:24:37 keithp Exp $
|
||||||
#include <Server.tmpl>
|
KDRIVE=.
|
||||||
|
#include "Kdrive.tmpl"
|
||||||
|
|
||||||
|
#if BuildRender
|
||||||
|
RENDERSRCS=kpict.c
|
||||||
|
RENDEROBJS=kpict.o
|
||||||
|
#endif
|
||||||
|
|
||||||
SRCS = kcmap.c kcolor.c kdrive.c kinfo.c kinput.c kmap.c knoop.c ktest.c \
|
SRCS = kcmap.c kcolor.c kdrive.c kinfo.c kinput.c kmap.c knoop.c ktest.c \
|
||||||
vga.c kasync.c kmode.c kcurscol.c kpict.c
|
vga.c kasync.c kmode.c kcurscol.c kshadow.c $(RENDERSRCS)
|
||||||
|
|
||||||
OBJS = kcmap.o kcolor.o kdrive.o kinfo.o kinput.o kmap.o knoop.o ktest.o \
|
OBJS = kcmap.o kcolor.o kdrive.o kinfo.o kinput.o kmap.o knoop.o ktest.o \
|
||||||
vga.o kasync.o kmode.o kcurscol.o kpict.o
|
vga.o kasync.o kmode.o kcurscol.o kshadow.o $(RENDEROBJS)
|
||||||
|
|
||||||
INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
|
INCLUDES = $(KDINCS)
|
||||||
-I../../fb -I../../mi -I../../render -I../../include -I../../os \
|
|
||||||
-I$(EXTINCSRC) -I$(XINCLUDESRC)
|
|
||||||
|
|
||||||
NormalLibraryObjectRule()
|
NormalLibraryObjectRule()
|
||||||
NormalLibraryTarget(kdrive,$(OBJS))
|
NormalLibraryTarget(kdrive,$(OBJS))
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
/* $XFree86: xc/programs/Xserver/hw/kdrive/kasync.c,v 1.3 2000/01/21 18:41:49 dawes Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/kdrive/kasync.c,v 1.5 2000/08/26 00:24:37 keithp Exp $ */
|
||||||
|
|
||||||
#include "kdrive.h"
|
#include "kdrive.h"
|
||||||
|
|
||||||
|
@ -252,6 +252,9 @@ KdScreenInitAsync (ScreenPtr pScreen)
|
||||||
pScreenPriv->BackingStoreFuncs.SaveAreas = KdCheckSaveAreas;
|
pScreenPriv->BackingStoreFuncs.SaveAreas = KdCheckSaveAreas;
|
||||||
pScreenPriv->BackingStoreFuncs.RestoreAreas = KdCheckRestoreAreas;
|
pScreenPriv->BackingStoreFuncs.RestoreAreas = KdCheckRestoreAreas;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef RENDER
|
||||||
|
KdPictureInitAsync (pScreen);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $XFree86$
|
* $XFree86: xc/programs/Xserver/hw/kdrive/kcurscol.c,v 1.4 2000/05/11 18:14:13 tsi Exp $
|
||||||
*
|
*
|
||||||
* Copyright © 1999 Keith Packard
|
* Copyright © 1999 Keith Packard
|
||||||
*
|
*
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
#include "kdrive.h"
|
#include "kdrive.h"
|
||||||
#include "cursorstr.h"
|
#include "cursorstr.h"
|
||||||
|
|
||||||
static int
|
int
|
||||||
KdComputeCmapShift (unsigned long mask)
|
KdComputeCmapShift (unsigned long mask)
|
||||||
{
|
{
|
||||||
int shift;
|
int shift;
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.c,v 1.4 2000/05/06 22:17:39 keithp Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.c,v 1.6 2000/08/26 00:24:37 keithp Exp $ */
|
||||||
|
|
||||||
#include "kdrive.h"
|
#include "kdrive.h"
|
||||||
#ifdef PSEUDO8
|
#ifdef PSEUDO8
|
||||||
|
@ -224,14 +224,15 @@ KdDisableScreens (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
Bool
|
||||||
KdEnableScreen (ScreenPtr pScreen)
|
KdEnableScreen (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
KdScreenPriv (pScreen);
|
KdScreenPriv (pScreen);
|
||||||
|
|
||||||
if (pScreenPriv->enabled)
|
if (pScreenPriv->enabled)
|
||||||
return;
|
return TRUE;
|
||||||
(*pScreenPriv->card->cfuncs->enable) (pScreen);
|
if (!(*pScreenPriv->card->cfuncs->enable) (pScreen))
|
||||||
|
return FALSE;
|
||||||
pScreenPriv->enabled = TRUE;
|
pScreenPriv->enabled = TRUE;
|
||||||
pScreenPriv->card->selected = pScreenPriv->screen->mynum;
|
pScreenPriv->card->selected = pScreenPriv->screen->mynum;
|
||||||
if (!pScreenPriv->screen->softCursor)
|
if (!pScreenPriv->screen->softCursor)
|
||||||
|
@ -632,6 +633,11 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
|
||||||
pScreen->SaveScreen = KdSaveScreen;
|
pScreen->SaveScreen = KdSaveScreen;
|
||||||
pScreen->CreateWindow = KdCreateWindow;
|
pScreen->CreateWindow = KdCreateWindow;
|
||||||
|
|
||||||
|
#ifdef RENDER
|
||||||
|
if (!fbPictureInit (pScreen, 0, 0))
|
||||||
|
return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FB_OLD_SCREEN
|
#ifdef FB_OLD_SCREEN
|
||||||
pScreenPriv->BackingStoreFuncs.SaveAreas = fbSaveAreas;
|
pScreenPriv->BackingStoreFuncs.SaveAreas = fbSaveAreas;
|
||||||
pScreenPriv->BackingStoreFuncs.RestoreAreas = fbSaveAreas;
|
pScreenPriv->BackingStoreFuncs.RestoreAreas = fbSaveAreas;
|
||||||
|
@ -719,8 +725,6 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
|
||||||
miDCInitialize(pScreen, &kdPointerScreenFuncs);
|
miDCInitialize(pScreen, &kdPointerScreenFuncs);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!KdPictureInit (pScreen, 0, 0))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (!fbCreateDefColormap (pScreen))
|
if (!fbCreateDefColormap (pScreen))
|
||||||
{
|
{
|
||||||
|
@ -739,7 +743,8 @@ KdScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
|
||||||
if (screen->mynum == card->selected)
|
if (screen->mynum == card->selected)
|
||||||
{
|
{
|
||||||
(*card->cfuncs->preserve) (card);
|
(*card->cfuncs->preserve) (card);
|
||||||
(*card->cfuncs->enable) (pScreen);
|
if (!(*card->cfuncs->enable) (pScreen))
|
||||||
|
return FALSE;
|
||||||
pScreenPriv->enabled = TRUE;
|
pScreenPriv->enabled = TRUE;
|
||||||
if (!screen->softCursor)
|
if (!screen->softCursor)
|
||||||
(*card->cfuncs->enableCursor) (pScreen);
|
(*card->cfuncs->enableCursor) (pScreen);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.h,v 1.4 2000/02/23 20:29:53 dawes Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/kdrive/kdrive.h,v 1.6 2000/08/26 00:24:38 keithp Exp $ */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "X.h"
|
#include "X.h"
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
#include "dix.h"
|
#include "dix.h"
|
||||||
#include "fb.h"
|
#include "fb.h"
|
||||||
#include "fboverlay.h"
|
#include "fboverlay.h"
|
||||||
|
#include "shadow.h"
|
||||||
|
|
||||||
extern WindowPtr *WindowTable;
|
extern WindowPtr *WindowTable;
|
||||||
|
|
||||||
|
@ -115,7 +116,7 @@ typedef struct _KdCardFuncs {
|
||||||
Bool (*scrinit) (KdScreenInfo *);/* initialize screen information */
|
Bool (*scrinit) (KdScreenInfo *);/* initialize screen information */
|
||||||
Bool (*initScreen) (ScreenPtr); /* initialize ScreenRec */
|
Bool (*initScreen) (ScreenPtr); /* initialize ScreenRec */
|
||||||
void (*preserve) (KdCardInfo *); /* save graphics card state */
|
void (*preserve) (KdCardInfo *); /* save graphics card state */
|
||||||
void (*enable) (ScreenPtr); /* set up for rendering */
|
Bool (*enable) (ScreenPtr); /* set up for rendering */
|
||||||
Bool (*dpms) (ScreenPtr, int); /* set DPMS screen saver */
|
Bool (*dpms) (ScreenPtr, int); /* set DPMS screen saver */
|
||||||
void (*disable) (ScreenPtr); /* turn off rendering */
|
void (*disable) (ScreenPtr); /* turn off rendering */
|
||||||
void (*restore) (KdCardInfo *); /* restore graphics card state */
|
void (*restore) (KdCardInfo *); /* restore graphics card state */
|
||||||
|
@ -210,6 +211,10 @@ typedef struct _KdMonitorTiming {
|
||||||
extern const KdMonitorTiming kdMonitorTimings[];
|
extern const KdMonitorTiming kdMonitorTimings[];
|
||||||
extern const int kdNumMonitorTimings;
|
extern const int kdNumMonitorTimings;
|
||||||
|
|
||||||
|
typedef struct _KdMouseMatrix {
|
||||||
|
int matrix[2][3];
|
||||||
|
} KdMouseMatrix;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the only completely portable way to
|
* This is the only completely portable way to
|
||||||
* compute this info.
|
* compute this info.
|
||||||
|
@ -397,7 +402,7 @@ KdDisableScreen (ScreenPtr pScreen);
|
||||||
void
|
void
|
||||||
KdDisableScreens (void);
|
KdDisableScreens (void);
|
||||||
|
|
||||||
void
|
Bool
|
||||||
KdEnableScreen (ScreenPtr pScreen);
|
KdEnableScreen (ScreenPtr pScreen);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -492,6 +497,9 @@ KdReleaseAllKeys (void);
|
||||||
void
|
void
|
||||||
KdSetLed (int led, Bool on);
|
KdSetLed (int led, Bool on);
|
||||||
|
|
||||||
|
void
|
||||||
|
KdSetMouseMatrix (KdMouseMatrix *matrix);
|
||||||
|
|
||||||
void
|
void
|
||||||
KdBlockHandler (int screen,
|
KdBlockHandler (int screen,
|
||||||
pointer blockData,
|
pointer blockData,
|
||||||
|
@ -540,6 +548,17 @@ KdTuneMode (KdScreenInfo *screen,
|
||||||
Bool (*supported) (KdScreenInfo *,
|
Bool (*supported) (KdScreenInfo *,
|
||||||
const KdMonitorTiming *));
|
const KdMonitorTiming *));
|
||||||
|
|
||||||
|
/* kpict.c */
|
||||||
|
void
|
||||||
|
KdPictureInitAsync (ScreenPtr pScreen);
|
||||||
|
|
||||||
|
/* kshadow.c */
|
||||||
|
Bool
|
||||||
|
KdShadowScreenInit (KdScreenInfo *screen);
|
||||||
|
|
||||||
|
Bool
|
||||||
|
KdShadowInitScreen (ScreenPtr pScreen, ShadowUpdateProc update, ShadowWindowProc window);
|
||||||
|
|
||||||
/* ktest.c */
|
/* ktest.c */
|
||||||
Bool
|
Bool
|
||||||
KdFrameBufferValid (CARD8 *base, int size);
|
KdFrameBufferValid (CARD8 *base, int size);
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
/* $XFree86: xc/programs/Xserver/hw/kdrive/kinput.c,v 1.3 2000/02/23 20:29:54 dawes Exp $ */
|
/* $XFree86: xc/programs/Xserver/hw/kdrive/kinput.c,v 1.5 2000/08/26 00:24:38 keithp Exp $ */
|
||||||
|
|
||||||
#include "kdrive.h"
|
#include "kdrive.h"
|
||||||
#include "inputstr.h"
|
#include "inputstr.h"
|
||||||
|
@ -43,6 +43,10 @@ static int kdBellPitch;
|
||||||
static int kdBellDuration;
|
static int kdBellDuration;
|
||||||
static int kdLeds;
|
static int kdLeds;
|
||||||
static Bool kdInputEnabled;
|
static Bool kdInputEnabled;
|
||||||
|
static KdMouseMatrix kdMouseMatrix = {
|
||||||
|
1, 0, 0,
|
||||||
|
0, 1, 0
|
||||||
|
};
|
||||||
|
|
||||||
int kdMinScanCode;
|
int kdMinScanCode;
|
||||||
int kdMaxScanCode;
|
int kdMaxScanCode;
|
||||||
|
@ -270,6 +274,12 @@ KdSetLed (int led, Bool on)
|
||||||
KdSetLeds ();
|
KdSetLeds ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
KdSetMouseMatrix (KdMouseMatrix *matrix)
|
||||||
|
{
|
||||||
|
kdMouseMatrix = *matrix;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
KdKbdCtrl (DeviceIntPtr pDevice, KeybdCtrl *ctrl)
|
KdKbdCtrl (DeviceIntPtr pDevice, KeybdCtrl *ctrl)
|
||||||
{
|
{
|
||||||
|
@ -1142,11 +1152,13 @@ KdMouseAccelerate (DeviceIntPtr device, int delta)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
KdEnqueueMouseEvent(unsigned long flags, int x, int y)
|
KdEnqueueMouseEvent(unsigned long flags, int rx, int ry)
|
||||||
{
|
{
|
||||||
CARD32 ms;
|
CARD32 ms;
|
||||||
xEvent xE;
|
xEvent xE;
|
||||||
unsigned char buttons;
|
unsigned char buttons;
|
||||||
|
int x, y;
|
||||||
|
int (*matrix)[3] = kdMouseMatrix.matrix;
|
||||||
|
|
||||||
if (!pKdPointer)
|
if (!pKdPointer)
|
||||||
return;
|
return;
|
||||||
|
@ -1155,12 +1167,18 @@ KdEnqueueMouseEvent(unsigned long flags, int x, int y)
|
||||||
|
|
||||||
if (flags & KD_MOUSE_DELTA)
|
if (flags & KD_MOUSE_DELTA)
|
||||||
{
|
{
|
||||||
|
x = matrix[0][0] * rx + matrix[0][1] * ry;
|
||||||
|
y = matrix[1][0] * rx + matrix[1][1] * ry;
|
||||||
x = KdMouseAccelerate (pKdPointer, x);
|
x = KdMouseAccelerate (pKdPointer, x);
|
||||||
y = KdMouseAccelerate (pKdPointer, y);
|
y = KdMouseAccelerate (pKdPointer, y);
|
||||||
xE.u.keyButtonPointer.pad1 = 1;
|
xE.u.keyButtonPointer.pad1 = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
x = matrix[0][0] * rx + matrix[0][1] * ry + matrix[0][2];
|
||||||
|
y = matrix[1][0] * rx + matrix[1][1] * ry + matrix[1][2];
|
||||||
xE.u.keyButtonPointer.pad1 = 0;
|
xE.u.keyButtonPointer.pad1 = 0;
|
||||||
|
}
|
||||||
xE.u.keyButtonPointer.time = ms;
|
xE.u.keyButtonPointer.time = ms;
|
||||||
xE.u.keyButtonPointer.rootX = x;
|
xE.u.keyButtonPointer.rootX = x;
|
||||||
xE.u.keyButtonPointer.rootY = y;
|
xE.u.keyButtonPointer.rootY = y;
|
||||||
|
|
|
@ -54,13 +54,11 @@ KdCheckComposite (CARD8 op,
|
||||||
height);
|
height);
|
||||||
}
|
}
|
||||||
|
|
||||||
KdPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
|
void
|
||||||
|
KdPictureInitAsync (ScreenPtr pScreen)
|
||||||
{
|
{
|
||||||
PictureScreenPtr ps;
|
PictureScreenPtr ps;
|
||||||
|
|
||||||
if (!fbPictureInit (pScreen, formats, nformats))
|
|
||||||
return FALSE;
|
|
||||||
ps = GetPictureScreen(pScreen);
|
ps = GetPictureScreen(pScreen);
|
||||||
ps->Composite = KdCheckComposite;
|
ps->Composite = KdCheckComposite;
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue