xserver: Branch 'input-hotplug' - 32 commits
Daniel Stone
daniels at kemper.freedesktop.org
Mon Oct 23 02:59:00 EEST 2006
Xi/stubs.c | 17 +++++-
configure.ac | 2
dix/events.c | 33 ++---------
dix/getevents.c | 97 ++++++++++++++++++++---------------
doc/Xserver.man.pre | 4 -
hw/kdrive/chips/chipsstub.c | 3 -
hw/kdrive/epson/epson13806stub.c | 6 --
hw/kdrive/i810/i810stub.c | 3 -
hw/kdrive/igs/igsstub.c | 3 -
hw/kdrive/linux/linux.c | 12 ++++
hw/kdrive/linux/tslib.c | 21 +------
hw/kdrive/mach64/mach64stub.c | 3 -
hw/kdrive/mga/mgastub.c | 3 -
hw/kdrive/neomagic/neomagic.h | 8 --
hw/kdrive/neomagic/neomagicstub.c | 6 --
hw/kdrive/nvidia/nvidiastub.c | 3 -
hw/kdrive/pcmcia/pcmciastub.c | 3 -
hw/kdrive/pm2/pm2stub.c | 3 -
hw/kdrive/r128/r128stub.c | 3 -
hw/kdrive/savage/s3stub.c | 8 --
hw/kdrive/sis300/sis_stub.c | 3 -
hw/kdrive/sis530/sisstub.c | 3 -
hw/kdrive/smi/smistub.c | 3 -
hw/kdrive/src/kdrive.h | 3 +
hw/kdrive/src/kinput.c | 2
hw/kdrive/trident/tridentstub.c | 3 -
hw/kdrive/trio/s3stub.c | 3 -
hw/kdrive/via/viastub.c | 3 -
hw/kdrive/vxworks/vxworks.c | 13 ++--
hw/vfb/InitInput.c | 5 -
hw/xfree86/common/xf86Module.h | 2
hw/xfree86/common/xf86Option.c | 4 -
hw/xfree86/common/xf86PciInfo.h | 4 +
hw/xfree86/doc/man/xorg.conf.man.pre | 2
hw/xfree86/utils/xorgcfg/text-mode.c | 1
hw/xfree86/utils/xorgconfig/Cards | 5 +
hw/xnest/Args.c | 15 +++--
hw/xnest/Events.c | 65 ++++++++++++-----------
hw/xnest/Init.c | 9 ++-
hw/xnest/Pointer.c | 2
include/input.h | 4 +
include/inputstr.h | 4 -
mi/miinitext.c | 4 -
xkb/xkbUtils.c | 4 -
44 files changed, 224 insertions(+), 183 deletions(-)
New commits:
diff-tree c5b5b046e86b159a9d32451308f38246cc4587f7 (from parents)
Merge: fab1d37ecbeee9777ad1485b0cc62b55042d5014 948a97b97e93cee05a23f1f1ae699c5e181bc8ce
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:58:30 2006 +0300
Merge branch 'master' of git+ssh://git.freedesktop.org/git/xorg/xserver into input-hotplug
diff-tree fab1d37ecbeee9777ad1485b0cc62b55042d5014 (from 523fe64ba16cf7a40f4095432d81300726d83e8d)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:57:00 2006 +0300
xfree86/options: don't blindly dereference NULL pointers
Sure, conf_idev should be initialised, but if it's not, try to make the
best of a bad situation.
diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
index 0a4c11d..7afb63a 100644
--- a/hw/xfree86/common/xf86Option.c
+++ b/hw/xfree86/common/xf86Option.c
@@ -142,14 +142,14 @@ xf86CollectInputOptions(InputInfoPtr pIn
if (defaultOpts) {
pInfo->options = xf86OptionListCreate(defaultOpts, -1, 0);
}
- if (pInfo->conf_idev->commonOptions) {
+ if (pInfo->conf_idev && pInfo->conf_idev->commonOptions) {
tmp = xf86optionListDup(pInfo->conf_idev->commonOptions);
if (pInfo->options)
pInfo->options = xf86optionListMerge(pInfo->options, tmp);
else
pInfo->options = tmp;
}
- if (pInfo->conf_idev->extraOptions) {
+ if (pInfo->conf_idev && pInfo->conf_idev->extraOptions) {
tmp = xf86optionListDup(pInfo->conf_idev->extraOptions);
if (pInfo->options)
pInfo->options = xf86optionListMerge(pInfo->options, tmp);
diff-tree 523fe64ba16cf7a40f4095432d81300726d83e8d (from 57f98e2b72d5c7fea93a9f6da86228ffb4856bf3)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:56:28 2006 +0300
kdrive/lots of DDXes: make stubs use KdOsAddInputDrivers()
In theory, removing LinuxPciScan should make these drivers OS-independent.
diff --git a/hw/kdrive/chips/chipsstub.c b/hw/kdrive/chips/chipsstub.c
index 3499a48..7fec1c7 100644
--- a/hw/kdrive/chips/chipsstub.c
+++ b/hw/kdrive/chips/chipsstub.c
@@ -48,7 +48,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/epson/epson13806stub.c b/hw/kdrive/epson/epson13806stub.c
index 125d902..7981782 100644
--- a/hw/kdrive/epson/epson13806stub.c
+++ b/hw/kdrive/epson/epson13806stub.c
@@ -53,10 +53,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#ifdef TOUCHSCREEN
- KdAddMouseDriver (&TsFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
int
diff --git a/hw/kdrive/i810/i810stub.c b/hw/kdrive/i810/i810stub.c
index c195947..364d16b 100644
--- a/hw/kdrive/i810/i810stub.c
+++ b/hw/kdrive/i810/i810stub.c
@@ -73,7 +73,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/igs/igsstub.c b/hw/kdrive/igs/igsstub.c
index b0ce151..39c6fd4 100644
--- a/hw/kdrive/igs/igsstub.c
+++ b/hw/kdrive/igs/igsstub.c
@@ -56,7 +56,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/mach64/mach64stub.c b/hw/kdrive/mach64/mach64stub.c
index 60808c2..f3fef3c 100644
--- a/hw/kdrive/mach64/mach64stub.c
+++ b/hw/kdrive/mach64/mach64stub.c
@@ -56,7 +56,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/mga/mgastub.c b/hw/kdrive/mga/mgastub.c
index ebb40fd..5afbf7f 100644
--- a/hw/kdrive/mga/mgastub.c
+++ b/hw/kdrive/mga/mgastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/neomagic/neomagicstub.c b/hw/kdrive/neomagic/neomagicstub.c
index 308f4a2..c7ec83b 100644
--- a/hw/kdrive/neomagic/neomagicstub.c
+++ b/hw/kdrive/neomagic/neomagicstub.c
@@ -51,10 +51,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#ifdef TOUCHSCREEN
- KdAddMouseDriver (&TsFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/nvidia/nvidiastub.c b/hw/kdrive/nvidia/nvidiastub.c
index ea2dd0f..2309419 100644
--- a/hw/kdrive/nvidia/nvidiastub.c
+++ b/hw/kdrive/nvidia/nvidiastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/pcmcia/pcmciastub.c b/hw/kdrive/pcmcia/pcmciastub.c
index c509553..a56d2cb 100644
--- a/hw/kdrive/pcmcia/pcmciastub.c
+++ b/hw/kdrive/pcmcia/pcmciastub.c
@@ -45,7 +45,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
extern pcmciaDisplayModeRec pcmciaDefaultModes[];
diff --git a/hw/kdrive/pm2/pm2stub.c b/hw/kdrive/pm2/pm2stub.c
index fe46951..1f824b3 100644
--- a/hw/kdrive/pm2/pm2stub.c
+++ b/hw/kdrive/pm2/pm2stub.c
@@ -32,7 +32,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/r128/r128stub.c b/hw/kdrive/r128/r128stub.c
index 221648d..dbf3c0e 100644
--- a/hw/kdrive/r128/r128stub.c
+++ b/hw/kdrive/r128/r128stub.c
@@ -48,7 +48,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/savage/s3stub.c b/hw/kdrive/savage/s3stub.c
index 41553e6..776f8da 100644
--- a/hw/kdrive/savage/s3stub.c
+++ b/hw/kdrive/savage/s3stub.c
@@ -60,12 +60,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
-#ifdef VXWORKS
- KdInitInput (&VxWorksMouseFuncs, &VxWorksKeyboardFuncs);
-#endif
-#ifdef linux
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
-#endif
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
extern int s3CpuTimeout;
diff --git a/hw/kdrive/sis300/sis_stub.c b/hw/kdrive/sis300/sis_stub.c
index 7f2e482..8a4c06c 100644
--- a/hw/kdrive/sis300/sis_stub.c
+++ b/hw/kdrive/sis300/sis_stub.c
@@ -53,7 +53,8 @@ InitOutput(ScreenInfo *pScreenInfo, int
void
InitInput(int argc, char **argv)
{
- KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers();
+ KdInitInput();
}
void
diff --git a/hw/kdrive/sis530/sisstub.c b/hw/kdrive/sis530/sisstub.c
index a377dd5..2375f65 100644
--- a/hw/kdrive/sis530/sisstub.c
+++ b/hw/kdrive/sis530/sisstub.c
@@ -53,7 +53,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/smi/smistub.c b/hw/kdrive/smi/smistub.c
index e0f33fe..1db6708 100644
--- a/hw/kdrive/smi/smistub.c
+++ b/hw/kdrive/smi/smistub.c
@@ -47,7 +47,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/trident/tridentstub.c b/hw/kdrive/trident/tridentstub.c
index ebfd7ee..650206a 100644
--- a/hw/kdrive/trident/tridentstub.c
+++ b/hw/kdrive/trident/tridentstub.c
@@ -49,7 +49,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/trio/s3stub.c b/hw/kdrive/trio/s3stub.c
index 68178ed..7531858 100644
--- a/hw/kdrive/trio/s3stub.c
+++ b/hw/kdrive/trio/s3stub.c
@@ -52,7 +52,8 @@ InitOutput (ScreenInfo *pScreenInfo, int
void
InitInput (int argc, char **argv)
{
- KdInitInput (&LinuxMouseFuncs, &LinuxKeyboardFuncs);
+ KdOsAddInputDrivers ();
+ KdInitInput ();
}
void
diff --git a/hw/kdrive/via/viastub.c b/hw/kdrive/via/viastub.c
index f63ee0d..1439010 100644
--- a/hw/kdrive/via/viastub.c
+++ b/hw/kdrive/via/viastub.c
@@ -87,7 +87,8 @@ InitOutput( ScreenInfo* pScreenInfo, int
*/
void
InitInput( int argc, char** argv ) {
- KdInitInput( &LinuxMouseFuncs, &LinuxKeyboardFuncs );
+ KdOsAddInputDrivers();
+ KdInitInput();
}
/*
diff-tree 57f98e2b72d5c7fea93a9f6da86228ffb4856bf3 (from a6dc629052f0ad509cfa30e98217043a63c09552)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:55:41 2006 +0300
kdrive/tslib: port to new absolute API, remove debugging
Port to new absolute device (not touchscreen) API, and remove some
leftover debugging.
diff --git a/hw/kdrive/linux/tslib.c b/hw/kdrive/linux/tslib.c
index bf2a3db..44b4b54 100644
--- a/hw/kdrive/linux/tslib.c
+++ b/hw/kdrive/linux/tslib.c
@@ -74,11 +74,8 @@ TsRead (int fd, void *closure)
}
while (ts_read(private->tsDev, &event, 1) == 1) {
-#ifdef DEBUG
- ErrorF("[tslib] originally from (%d, %d)\n", event.x, event.y);
-#endif
if (event.pressure) {
- if (event.pressure > pi->dixdev->touchscreen->button_threshold)
+ if (event.pressure > pi->dixdev->absolute->button_threshold)
flags = KD_BUTTON_8;
else
flags = KD_BUTTON_1;
@@ -109,9 +106,6 @@ TsRead (int fd, void *closure)
y = private->lasty;
}
-#ifdef DEBUG
- ErrorF("event at (%lu, %lu), pressure is %d, sending flags %lu\n", x, y, event.pressure, flags);
-#endif
KdEnqueuePointerEvent (pi, flags, x, y, event.pressure);
}
}
@@ -132,13 +126,9 @@ TslibEnable (KdPointerInfo *pi)
close(private->fd);
return BadAlloc;
}
- if (pi->dixdev && pi->dixdev->touchscreen &&
- pi->dixdev->touchscreen->button_threshold == 0)
- pi->dixdev->touchscreen->button_threshold = 115;
-
-#ifdef DEBUG
- ErrorF("[tslib/TslibEnable] successfully enabled %s\n", pi->path);
-#endif
+ if (pi->dixdev && pi->dixdev->absolute &&
+ pi->dixdev->absolute->button_threshold == 0)
+ pi->dixdev->absolute->button_threshold = 115;
KdRegisterFd(private->fd, TsRead, pi);
@@ -186,9 +176,6 @@ TslibInit (KdPointerInfo *pi)
pi->nAxes = 3;
pi->name = KdSaveString("Touchscreen");
pi->inputClass = KD_TOUCHSCREEN;
-#ifdef DEBUG
- ErrorF("[tslib/TslibInit] successfully inited for device %s\n", pi->path);
-#endif
return Success;
}
diff-tree a6dc629052f0ad509cfa30e98217043a63c09552 (from ac240b00ff6fc354c1aa641406ae8b49244c0b8b)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:54:59 2006 +0300
kdrive/os: add KdOsAddInputDrivers
Add KdOsAddInputDrivers, which adds all relevant input drivers.
Could possibly be refactored to KdAddInputDrivers, which called through
OsFuncs to a new function, if it existed.
diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c
index e75f8d5..7ba99b4 100644
--- a/hw/kdrive/linux/linux.c
+++ b/hw/kdrive/linux/linux.c
@@ -469,6 +469,18 @@ LinuxFini (void)
return;
}
+void
+KdOsAddInputDrivers ()
+{
+ KdAddPointerDriver(&LinuxMouseDriver);
+ KdAddPointerDriver(&MsMouseDriver);
+ KdAddPointerDriver(&Ps2MouseDriver);
+#ifdef TSLIB
+ KdAddPointerDriver(&TsDriver);
+#endif
+ KdAddKeyboardDriver(&LinuxKeyboardDriver);
+}
+
KdOsFuncs LinuxFuncs = {
LinuxInit,
LinuxEnable,
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index 7e8712c..7f752e9 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -739,6 +739,9 @@ KdProcessArgument (int argc, char **argv
void
KdOsInit (KdOsFuncs *pOsFuncs);
+void
+KdOsAddInputDrivers (void);
+
Bool
KdAllocatePrivates (ScreenPtr pScreen);
diff --git a/hw/kdrive/vxworks/vxworks.c b/hw/kdrive/vxworks/vxworks.c
index ce214ff..aa46001 100644
--- a/hw/kdrive/vxworks/vxworks.c
+++ b/hw/kdrive/vxworks/vxworks.c
@@ -33,12 +33,6 @@ VxWorksSpecialKey (KeySym sym)
case XK_Break:
download(1, "launcher", 0);
return TRUE;
- case XK_Delete:
- dispatchException |= DE_REBOOT;
- return TRUE;
- case XK_BackSpace:
- dispatchException |= DE_RESET;
- return TRUE;
}
return FALSE;
}
@@ -53,6 +47,13 @@ VxWorksFini (void)
{
}
+void
+KdOsAddInputDrivers (void)
+{
+ KdAddPointerDriver(&VxWorksMouseDriver);
+ KdAddPointerDriver(&VxWorksKeyboardDriver);
+}
+
KdOsFuncs VxWorksFuncs = {
VxWorksInit,
VxWorksEnable,
diff-tree ac240b00ff6fc354c1aa641406ae8b49244c0b8b (from b1ba4b3e8ad427af1fa8618b0bd839f741ec2ce3)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:54:07 2006 +0300
kdrive/input: use Absolute instead of Touchscreen
Adjust to suit Zepheniah's new absolute device API.
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index a2e2c0f..c900266 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -444,7 +444,7 @@ KdPointerProc(DeviceIntPtr pDevice, int
#ifdef XINPUT
if (pi->inputClass == KD_TOUCHSCREEN) {
- InitTouchscreenClassDeviceStruct(pDevice);
+ InitAbsoluteClassDeviceStruct(pDev);
xiclass = AtomFromName(XI_TOUCHSCREEN);
}
else {
diff-tree b1ba4b3e8ad427af1fa8618b0bd839f741ec2ce3 (from 29f28dd1a8a7ed07e945a67946e3510f4b32d12a)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:53:15 2006 +0300
kdrive/neomagic: include vesa.h, use DebugF
diff --git a/hw/kdrive/neomagic/neomagic.h b/hw/kdrive/neomagic/neomagic.h
index b91e81e..9b10005 100644
--- a/hw/kdrive/neomagic/neomagic.h
+++ b/hw/kdrive/neomagic/neomagic.h
@@ -26,14 +26,10 @@
#include <backend.h>
#include "kxv.h"
#include "klinux.h"
+#include "vesa.h"
-#define DEBUG
-#ifdef DEBUG
-#define DBGOUT(fmt,a...) fprintf (stderr, fmt, ##a)
-#else
-#define DBGOUT(fmt,a...)
-#endif
+#define DBGOUT DebugF
#define ENTER() DBGOUT("Enter %s\n", __FUNCTION__)
#define LEAVE() DBGOUT("Leave %s\n", __FUNCTION__)
diff-tree 29f28dd1a8a7ed07e945a67946e3510f4b32d12a (from 2f33f4065d89ae2b6fdda43c7105d72f89920cae)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:52:52 2006 +0300
configure.ac: add XSERVER_LIBS to XNEST_LIBS
diff --git a/configure.ac b/configure.ac
index 9700d61..a6eb8cc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1005,7 +1005,7 @@ AC_MSG_RESULT([$XNEST])
AM_CONDITIONAL(XNEST, [test "x$XNEST" = xyes])
if test "x$XNEST" = xyes; then
- XNEST_LIBS="$FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB"
+ XNEST_LIBS="$XSERVER_LIBS $FB_LIB $MI_LIB $FIXES_LIB $XEXT_LIB $DBE_LIB $XTRAP_LIB $RECORD_LIB $GLX_LIBS $RENDER_LIB $RANDR_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $XKB_STUB_LIB $COMPOSITE_LIB $XPSTUBS_LIB $CWRAP_LIB $OS_LIB"
AC_SUBST([XNEST_LIBS])
fi
diff-tree 2f33f4065d89ae2b6fdda43c7105d72f89920cae (from 08928afb0500d46b0caa0a1d1244dee2ed80e6a0)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:52:35 2006 +0300
Xnest: port to new input API
Port Xnest to Get{Pointer,Keyboard}Events, plus the new mieq API.
diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
index e5cf99e..a209241 100644
--- a/hw/xnest/Events.c
+++ b/hw/xnest/Events.c
@@ -37,10 +37,13 @@ is" without express or implied warranty.
#include "XNWindow.h"
#include "Events.h"
#include "Keyboard.h"
+#include "Pointer.h"
#include "mipointer.h"
CARD32 lastEventTime = 0;
+extern xEvent *xnestEvents;
+
void
ProcessInputEvents()
{
@@ -101,11 +104,12 @@ xnestCollectExposures()
void
xnestQueueKeyEvent(int type, unsigned int keycode)
{
- xEvent x;
- x.u.u.type = type;
- x.u.u.detail = keycode;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
+ int i, n;
+
+ lastEventTime = GetTimeInMillis();
+ n = GetKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestKeyboardDevice, xnestEvents + i);
}
void
@@ -113,6 +117,7 @@ xnestCollectEvents()
{
XEvent X;
xEvent x;
+ int i, n, valuators[2];
ScreenPtr pScreen;
while (XCheckIfEvent(xnestDisplay, &X, xnestNotExposurePredicate, NULL)) {
@@ -129,30 +134,30 @@ xnestCollectEvents()
case ButtonPress:
xnestUpdateModifierState(X.xkey.state);
- x.u.u.type = ButtonPress;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
+ X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
break;
case ButtonRelease:
xnestUpdateModifierState(X.xkey.state);
- x.u.u.type = ButtonRelease;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
+ X.xbutton.button, POINTER_RELATIVE, 0, 0, NULL);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
break;
case MotionNotify:
-#if 0
- x.u.u.type = MotionNotify;
- x.u.keyButtonPointer.rootX = X.xmotion.x;
- x.u.keyButtonPointer.rootY = X.xmotion.y;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
-#endif
- miPointerAbsoluteCursor (X.xmotion.x, X.xmotion.y,
- lastEventTime = GetTimeInMillis());
+ valuators[0] = X.xmotion.x;
+ valuators[1] = X.xmotion.y;
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
+ 0, POINTER_ABSOLUTE, 0, 2, valuators);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
break;
case FocusIn:
@@ -179,15 +184,13 @@ xnestCollectEvents()
pScreen = xnestScreen(X.xcrossing.window);
if (pScreen) {
NewCurrentScreen(pScreen, X.xcrossing.x, X.xcrossing.y);
-#if 0
- x.u.u.type = MotionNotify;
- x.u.keyButtonPointer.rootX = X.xcrossing.x;
- x.u.keyButtonPointer.rootY = X.xcrossing.y;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis();
- mieqEnqueue(&x);
-#endif
- miPointerAbsoluteCursor (X.xcrossing.x, X.xcrossing.y,
- lastEventTime = GetTimeInMillis());
+ valuators[0] = X.xcrossing.x;
+ valuators[1] = X.xcrossing.y;
+ lastEventTime = GetTimeInMillis();
+ n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
+ 0, POINTER_ABSOLUTE, 0, 2, valuators);
+ for (i = 0; i < n; i++)
+ mieqEnqueue(xnestPointerDevice, xnestEvents + i);
xnestDirectInstallColormaps(pScreen);
}
}
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index 8c397a7..5bf0300 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -45,6 +45,8 @@ is" without express or implied warranty.
Bool xnestDoFullGeneration = True;
+xEvent *xnestEvents = NULL;
+
void
InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
{
@@ -92,10 +94,15 @@ InitInput(int argc, char *argv[])
xnestPointerDevice = AddInputDevice(xnestPointerProc, TRUE);
xnestKeyboardDevice = AddInputDevice(xnestKeyboardProc, TRUE);
+ if (!xnestEvents)
+ xnestEvents = (xEvent *) xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ if (!xnestEvents)
+ FatalError("couldn't allocate room for events\n");
+
RegisterPointerDevice(xnestPointerDevice);
RegisterKeyboardDevice(xnestKeyboardDevice);
- mieqInit((DevicePtr)xnestKeyboardDevice, (DevicePtr)xnestPointerDevice);
+ mieqInit();
AddEnabledDevice(XConnectionNumber(xnestDisplay));
diff --git a/hw/xnest/Pointer.c b/hw/xnest/Pointer.c
index 4544497..b5e45db 100644
--- a/hw/xnest/Pointer.c
+++ b/hw/xnest/Pointer.c
@@ -59,7 +59,7 @@ xnestPointerProc(DeviceIntPtr pDev, int
InitPointerDeviceStruct(&pDev->public, map, nmap,
miPointerGetMotionEvents,
xnestChangePointerControl,
- miPointerGetMotionBufferSize());
+ miPointerGetMotionBufferSize(), 2);
break;
case DEVICE_ON:
xnestEventMask |= XNEST_POINTER_EVENT_MASK;
diff-tree 08928afb0500d46b0caa0a1d1244dee2ed80e6a0 (from cd3b16a57efaf89108054f18a94c91e2dd74fafa)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:51:52 2006 +0300
Xnest: disable XKB, reshuffle code
Disable XKB, as we can't yet use it; move Composite disabling to
ddxInitGlobals, along with XKB.
diff --git a/hw/xnest/Args.c b/hw/xnest/Args.c
index 5d0a0c0..c2e8b0d 100644
--- a/hw/xnest/Args.c
+++ b/hw/xnest/Args.c
@@ -53,18 +53,21 @@ Window xnestParentWindow = 0;
/* ddxInitGlobals - called by |InitGlobals| from os/util.c */
void ddxInitGlobals(void)
{
-}
-
-int
-ddxProcessArgument (int argc, char *argv[], int i)
-{
-
#ifdef COMPOSITE
/* XXX terrible hack */
extern Bool noCompositeExtension;
noCompositeExtension = TRUE;
#endif
+#ifdef XKB
+ extern Bool noXkbExtension;
+ noXkbExtension = TRUE;
+#endif
+}
+
+int
+ddxProcessArgument (int argc, char *argv[], int i)
+{
if (!strcmp(argv[i], "-display")) {
if (++i < argc) {
xnestDisplayName = argv[i];
diff-tree cd3b16a57efaf89108054f18a94c91e2dd74fafa (from bf4df9b73f0c1a84093aaf9a2e2cbc56fb341c60)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:51:13 2006 +0300
Xvfb: port to new mieq API
diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c
index 17e023a..c0bfb55 100644
--- a/hw/vfb/InitInput.c
+++ b/hw/vfb/InitInput.c
@@ -293,7 +293,7 @@ vfbMouseProc(DeviceIntPtr pDevice, int o
map[2] = 2;
map[3] = 3;
InitPointerDeviceStruct(pDev, map, 3, miPointerGetMotionEvents,
- (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize());
+ (PtrCtrlProcPtr)NoopDDA, miPointerGetMotionBufferSize(), 2);
break;
case DEVICE_ON:
@@ -318,6 +318,5 @@ InitInput(int argc, char *argv[])
k = AddInputDevice(vfbKeybdProc, TRUE);
RegisterPointerDevice(p);
RegisterKeyboardDevice(k);
- miRegisterPointerDevice(screenInfo.screens[0], p);
- (void)mieqInit ((DevicePtr) k, (DevicePtr) p);
+ (void)mieqInit();
}
diff-tree bf4df9b73f0c1a84093aaf9a2e2cbc56fb341c60 (from 4dd91c45abea9fb561a5acb10290e29487df6722)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:50:53 2006 +0300
include: move POINTER_* flags from inputstr.h to input.h
Given they're just numeric constants, they should be included in
input.h, not inputstr.h.
diff --git a/include/input.h b/include/input.h
index e598963..4acc856 100644
--- a/include/input.h
+++ b/include/input.h
@@ -59,6 +59,10 @@ SOFTWARE.
#define DEVICE_OFF 2
#define DEVICE_CLOSE 3
+#define POINTER_RELATIVE (1 << 1)
+#define POINTER_ABSOLUTE (1 << 2)
+#define POINTER_ACCELERATE (1 << 3)
+
#define MAP_LENGTH 256
#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */
#define NullGrab ((GrabPtr)NULL)
diff --git a/include/inputstr.h b/include/inputstr.h
index 52175ad..2c64e0d 100644
--- a/include/inputstr.h
+++ b/include/inputstr.h
@@ -62,10 +62,6 @@ SOFTWARE.
#define EMASKSIZE MAX_DEVICES
-#define POINTER_RELATIVE (1 << 1)
-#define POINTER_ABSOLUTE (1 << 2)
-#define POINTER_ACCELERATE (1 << 3)
-
extern int CoreDevicePrivatesIndex, CoreDevicePrivatesGeneration;
/* Kludge: OtherClients and InputClients must be compatible, see code */
diff-tree 4dd91c45abea9fb561a5acb10290e29487df6722 (from 562096a012f4bb8f44d5ec6320a32f4010c189e4)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:50:03 2006 +0300
miinitext: Xi and XKB are not hardware-only extensions
Xi is now a required extension, and XKB can be used without hardware,
so include them both when NO_HW_ONLY_EXTS is defined.
diff --git a/mi/miinitext.c b/mi/miinitext.c
index aafd014..f618595 100644
--- a/mi/miinitext.c
+++ b/mi/miinitext.c
@@ -549,7 +549,7 @@ InitExtensions(argc, argv)
#ifdef MULTIBUFFER
if (!noMultibufferExtension) MultibufferExtensionInit();
#endif
-#if defined(XINPUT) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XINPUT)
if (!noXInputExtension) XInputExtensionInit();
#endif
#ifdef XTEST
@@ -579,7 +579,7 @@ InitExtensions(argc, argv)
#ifdef XSYNC
if (!noSyncExtension) SyncExtensionInit();
#endif
-#if defined(XKB) && !defined(PRINT_ONLY_SERVER) && !defined(NO_HW_ONLY_EXTS)
+#if defined(XKB) && !defined(PRINT_ONLY_SERVER)
if (!noXkbExtension) XkbExtensionInit();
#endif
#ifdef XCMISC
diff-tree 562096a012f4bb8f44d5ec6320a32f4010c189e4 (from eec182259112fba240751f974f7e5ca09fce8b9d)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:49:22 2006 +0300
XkbCopyKeymap: increment shapes and outlines when copying
Remember to increment the source and destination shapes when copying,
instead of just endlessly copying the first one.
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index cddeb9e..0c1ac9c 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1665,7 +1665,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr
for (i = 0, sshape = src->geom->shapes, dshape = dst->geom->shapes;
i < src->geom->num_shapes;
- i++) {
+ i++, sshape++, dshape++) {
if (sshape->num_outlines) {
tmp = xcalloc(sshape->num_outlines, sizeof(XkbOutlineRec));
if (!tmp)
@@ -1676,7 +1676,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr
soutline = sshape->outlines,
doutline = dshape->outlines;
j < sshape->num_outlines;
- j++) {
+ j++, soutline++, doutline++) {
if (soutline->num_points) {
tmp = xalloc(soutline->num_points *
sizeof(XkbPointRec));
diff-tree eec182259112fba240751f974f7e5ca09fce8b9d (from bc701a14292da5abfb601e3a040651a74f46df8f)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 02:48:30 2006 +0300
dix/getevents: move SyntheticMotion to getevents.c
Mostly, this is just a cheesy hack to ensure that getevents.o gets
included when linking. Sigh.
diff --git a/dix/events.c b/dix/events.c
index e1a3e75..321c552 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -320,11 +320,16 @@ static CARD8 criticalEvents[32] =
};
#ifdef PANORAMIX
-
static void ConfineToShape(RegionPtr shape, int *px, int *py);
-static void SyntheticMotion(int x, int y);
+static void PostSyntheticMotion(int x, int y, int screenNum, int time);
static void PostNewCursor(void);
+#define SyntheticMotion(x, y) \
+ PostSyntheticMotion(x, y, sprite.screen->myNum, \
+ syncEvents.playingEvents ? \
+ syncEvents.time.milliseconds : \
+ currentTime.milliseconds);
+
static Bool
XineramaSetCursorPosition(
int x,
@@ -667,30 +672,6 @@ SetCriticalEvent(int event)
criticalEvents[event >> 3] |= 1 << (event & 7);
}
-static void
-SyntheticMotion(int x, int y)
-{
- xEvent xE;
-
-#ifdef PANORAMIX
- /* Translate back to the sprite screen since processInputProc
- will translate from sprite screen to screen 0 upon reentry
- to the DIX layer */
- if(!noPanoramiXExtension) {
- x += panoramiXdataPtr[0].x - panoramiXdataPtr[sprite.screen->myNum].x;
- y += panoramiXdataPtr[0].y - panoramiXdataPtr[sprite.screen->myNum].y;
- }
-#endif
- xE.u.keyButtonPointer.rootX = x;
- xE.u.keyButtonPointer.rootY = y;
- if (syncEvents.playingEvents)
- xE.u.keyButtonPointer.time = syncEvents.time.milliseconds;
- else
- xE.u.keyButtonPointer.time = currentTime.milliseconds;
- xE.u.u.type = MotionNotify;
- (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
-}
-
#ifdef SHAPE
static void
ConfineToShape(RegionPtr shape, int *px, int *py)
diff --git a/dix/getevents.c b/dix/getevents.c
index 03fe5fe..ca199c6 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -51,6 +51,11 @@ extern Bool XkbCopyKeymap(XkbDescPtr src
#include "xace.h"
#endif
+#ifdef PANORAMIX
+#include "panoramiX.h"
+#include "panoramiXsrv.h"
+#endif
+
#include <X11/extensions/XIproto.h>
#include "exglobals.h"
#include "exevents.h"
@@ -546,3 +551,32 @@ SwitchCorePointer(DeviceIntPtr pDev)
if (inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr != pDev)
inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
}
+
+
+/**
+ * Synthesize a single motion event for the core pointer.
+ *
+ * Used in cursor functions, e.g. when cursor confinement changes, and we need
+ * to shift the pointer to get it inside the new bounds.
+ */
+void
+PostSyntheticMotion(int x, int y, int screenNum, unsigned long time)
+{
+ xEvent xE = { 0, };
+
+#ifdef PANORAMIX
+ /* Translate back to the sprite screen since processInputProc
+ will translate from sprite screen to screen 0 upon reentry
+ to the DIX layer. */
+ if (!noPanoramiXExtension) {
+ x += panoramiXdataPtr[0].x - panoramiXdataPtr[screenNum].x;
+ y += panoramiXdataPtr[0].y - panoramiXdataPtr[screenNum].y;
+ }
+#endif
+
+ xE.u.u.type = MotionNotify;
+ xE.u.keyButtonPointer.rootX = x;
+ xE.u.keyButtonPointer.rootY = y;
+
+ (*inputInfo.pointer->public.processInputProc)(&xE, inputInfo.pointer, 1);
+}
diff-tree bc701a14292da5abfb601e3a040651a74f46df8f (from b03e2f7029506640a8fe5cb88818b329c23503ff)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Mon Oct 23 00:08:32 2006 +0300
dix/getevents: cosmetic cleanups, remove keymap copy from GKVE
Remove keymap copy from GetKeyboardValuatorEvents, as
SwitchCoreKeyboard now takes care of this for us.
Remove unused variable and function prototype.
Update comments to be as informative as possible.
diff --git a/dix/getevents.c b/dix/getevents.c
index c6a35ba..03fe5fe 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -44,7 +44,6 @@
#ifdef XKB
#include <X11/extensions/XKBproto.h>
#include <X11/extensions/XKBsrv.h>
-extern Bool XkbFilterEvents(ClientPtr, int, xEvent *);
extern Bool XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies);
#endif
@@ -99,9 +98,10 @@ GetKeyboardEvents(xEvent *events, Device
* The DDX is responsible for allocating the event structure in the first
* place via GetMaximumEventsNum(), and for freeing it.
*
- * If pDev is set to send core events, then the keymap on the core
- * keyboard will be pivoted to that of the new keyboard and the appropriate
- * MapNotify events (both core and XKB) will be sent.
+ * This function does not change the core keymap to that of the device;
+ * that is done by SwitchCoreKeyboard, which is called from
+ * mieqProcessInputEvents. If replacing function, take care to call
+ * SetCoreKeyboard before processInputProc, so keymaps are altered to suit.
*
* Note that this function recurses! If called for non-XKB, a repeating
* key press will trigger a matching KeyRelease, as well as the
@@ -117,7 +117,6 @@ GetKeyboardValuatorEvents(xEvent *events
pDev->key->curKeySyms.mapWidth];
deviceKeyButtonPointer *kbp = NULL;
deviceValuator *xv = NULL;
- KeyClassPtr ckeyc;
if (!events)
return 0;
@@ -220,40 +219,13 @@ GetKeyboardValuatorEvents(xEvent *events
events->u.keyButtonPointer.time = ms;
events->u.u.type = type;
events->u.u.detail = key_code;
-
- if (inputInfo.keyboard->devPrivates[CoreDevicePrivatesIndex].ptr !=
- pDev) {
- ckeyc = inputInfo.keyboard->key;
- memcpy(ckeyc->modifierMap, pDev->key->modifierMap, MAP_LENGTH);
- if (ckeyc->modifierKeyMap)
- xfree(ckeyc->modifierKeyMap);
- ckeyc->modifierKeyMap = xalloc(8 * pDev->key->maxKeysPerModifier);
- memcpy(ckeyc->modifierKeyMap, pDev->key->modifierKeyMap,
- (8 * pDev->key->maxKeysPerModifier));
- ckeyc->maxKeysPerModifier = pDev->key->maxKeysPerModifier;
- ckeyc->curKeySyms.minKeyCode = pDev->key->curKeySyms.minKeyCode;
- ckeyc->curKeySyms.maxKeyCode = pDev->key->curKeySyms.maxKeyCode;
- SetKeySymsMap(&ckeyc->curKeySyms, &pDev->key->curKeySyms);
-#ifdef XKB
- if (!noXkbExtension && pDev->key->xkbInfo &&
- pDev->key->xkbInfo->desc) {
- if (!XkbCopyKeymap(pDev->key->xkbInfo->desc,
- ckeyc->xkbInfo->desc, True))
- FatalError("Couldn't pivot keymap from device to core!\n");
- }
-#endif
- SendMappingNotify(MappingKeyboard, ckeyc->curKeySyms.minKeyCode,
- (ckeyc->curKeySyms.maxKeyCode -
- ckeyc->curKeySyms.minKeyCode),
- serverClient);
- inputInfo.keyboard->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
- }
}
return numEvents;
}
-/* Originally a part of xf86PostMotionEvent. */
+/* Originally a part of xf86PostMotionEvent; modifies valuators
+ * in-place. */
static void
acceleratePointer(DeviceIntPtr pDev, int first_valuator, int num_valuators,
int *valuators)
@@ -277,9 +249,6 @@ acceleratePointer(DeviceIntPtr pDev, int
if (!dx && !dy)
return;
- /*
- * Accelerate
- */
if (pDev->ptrfeed && pDev->ptrfeed->ctrl.num) {
/* modeled from xf86Events.c */
if (pDev->ptrfeed->ctrl.threshold) {
@@ -524,7 +493,15 @@ GetPointerEvents(xEvent *events, DeviceI
return num_events;
}
-void SwitchCoreKeyboard(DeviceIntPtr pDev)
+/**
+ * Note that pDev was the last device to send a core event. This function
+ * copies the complete keymap from the originating device to the core
+ * device, and makes sure the appropriate notifications are generated.
+ *
+ * Call this just before processInputProc.
+ */
+_X_EXPORT void
+SwitchCoreKeyboard(DeviceIntPtr pDev)
{
KeyClassPtr ckeyc = inputInfo.keyboard->key;
@@ -557,8 +534,14 @@ void SwitchCoreKeyboard(DeviceIntPtr pDe
}
}
-/* Currently a no-op. */
-void SwitchCorePointer(DeviceIntPtr pDev)
+/**
+ * Note that pDev was the last function to send a core pointer event.
+ * Currently a no-op.
+ *
+ * Call this just before processInputProc.
+ */
+_X_EXPORT void
+SwitchCorePointer(DeviceIntPtr pDev)
{
if (inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr != pDev)
inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
diff-tree b03e2f7029506640a8fe5cb88818b329c23503ff (from 90de7ce25a84cfe6c6790f9af2bc2399d25b9b9c)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Sun Oct 22 19:56:49 2006 +0300
xi: fix NIDR return yet again
For a one-line function, it was pretty broken.
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 88afec0..28ecd8b 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -308,5 +308,5 @@ ChangeDeviceControl(register ClientPtr c
int
NewInputDeviceRequest(InputOption *options)
{
- return;
+ return BadValue;
}
diff-tree 90de7ce25a84cfe6c6790f9af2bc2399d25b9b9c (from f46dc272913ffb6b5b234a7ec6f4ba5cae44a831)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Sun Oct 22 19:54:36 2006 +0300
xi: fix return type for NIDR
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 0678c4c..88afec0 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -305,7 +305,7 @@ ChangeDeviceControl(register ClientPtr c
* Add a new device with the specified options.
*
*/
-void
+int
NewInputDeviceRequest(InputOption *options)
{
return;
diff-tree f46dc272913ffb6b5b234a7ec6f4ba5cae44a831 (from 31a6307b7ba5adaa96deb8101ddfcda0262f537d)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Sun Oct 22 19:51:35 2006 +0300
xi: add NewInputDeviceRequest to stubs
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 27afcea..0678c4c 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -296,3 +296,17 @@ ChangeDeviceControl(register ClientPtr c
return (BadMatch);
}
}
+
+
+/****************************************************************************
+ *
+ * Caller: configAddDevice (and others)
+ *
+ * Add a new device with the specified options.
+ *
+ */
+void
+NewInputDeviceRequest(InputOption *options)
+{
+ return;
+}
diff-tree 31a6307b7ba5adaa96deb8101ddfcda0262f537d (from eae6594d03a606ddf1f433b5897b5938aa940c1e)
Author: Daniel Stone <daniel at fooishbar.org>
Date: Sun Oct 22 19:49:31 2006 +0300
xi: change DEVICE_TOUCHSCREEN to ABS_{AREA_CALIB} for stubs
diff --git a/Xi/stubs.c b/Xi/stubs.c
index 90aeddb..27afcea 100644
--- a/Xi/stubs.c
+++ b/Xi/stubs.c
@@ -287,7 +287,8 @@ ChangeDeviceControl(register ClientPtr c
switch (control->control) {
case DEVICE_RESOLUTION:
return (BadMatch);
- case DEVICE_TOUCHSCREEN:
+ case DEVICE_ABS_CALIB:
+ case DEVICE_ABS_AREA:
return (BadMatch);
case DEVICE_CORE:
return (BadMatch);
diff-tree 948a97b97e93cee05a23f1f1ae699c5e181bc8ce (from 04554a3adcddc32de5fdb0b3122da0bcdd4c24a9)
Author: Drew Parsons <dparsons at debian.org>
Date: Sat Oct 21 23:09:22 2006 +1000
Minor typo fix to xorg.conf man page.
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index e94804c..abf3146 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -1081,7 +1081,7 @@ Include the set of modes listed in the
.B Modes
section called
.IR modesection-id.
-This make all of the modes defined in that section available for use by
+This makes all of the modes defined in that section available for use by
this monitor.
.TP 7
.BI "Mode \*q" name \*q
diff-tree 04554a3adcddc32de5fdb0b3122da0bcdd4c24a9 (from edd5f1745461f995670969cb736d1569ca94643f)
Author: Drew Parsons <dparsons at debian.org>
Date: Sat Oct 21 22:06:43 2006 +1000
Minor typos in Xserver man page.
diff --git a/doc/Xserver.man.pre b/doc/Xserver.man.pre
index b9597f1..d65acde 100644
--- a/doc/Xserver.man.pre
+++ b/doc/Xserver.man.pre
@@ -181,7 +181,7 @@ prints a usage message.
causes all remaining command line arguments to be ignored.
.TP 8
.B \-maxbigreqsize \fIsize\fP
-sets the maxmium big request to
+sets the maximum big request to
.I size
MB.
.TP 8
@@ -449,7 +449,7 @@ the text after the /; it is used to dist
<action> ::= a | i | e
-<string> ::= <dbl quoted string> | <single quoted string> | <unqouted string>
+<string> ::= <dbl quoted string> | <single quoted string> | <unquoted string>
<dbl quoted string> ::= <space> " <not dqoute>* " <space>
diff-tree edd5f1745461f995670969cb736d1569ca94643f (from e1dd1904c6c7ce33f347d822272831d54a6497c8)
Author: Carl Switzky <Carl.Switzky at Sun.COM>
Date: Thu Oct 19 17:30:54 2006 -0700
Add ast driver/device info to Xorg server & config utilities
diff --git a/hw/xfree86/common/xf86PciInfo.h b/hw/xfree86/common/xf86PciInfo.h
index b8ba73f..0630cfa 100644
--- a/hw/xfree86/common/xf86PciInfo.h
+++ b/hw/xfree86/common/xf86PciInfo.h
@@ -92,6 +92,7 @@
#define PCI_VENDOR_TRITECH 0x1292
#define PCI_VENDOR_NVIDIA_SGS 0x12D2
#define PCI_VENDOR_VMWARE 0x15AD
+#define PCI_VENDOR_AST 0x1A03
#define PCI_VENDOR_3DLABS 0x3D3D
#define PCI_VENDOR_AVANCE_2 0x4005
#define PCI_VENDOR_HERCULES 0x4843
@@ -358,6 +359,9 @@
#define PCI_CHIP_RS350_7834 0x7834
#define PCI_CHIP_RS350_7835 0x7835
+/* ASPEED Technology (AST) */
+#define PCI_CHIP_AST2000 0x2000
+
/* Avance Logic */
#define PCI_CHIP_ALG2064 0x2064
#define PCI_CHIP_ALG2301 0x2301
diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c
index 10f4b69..0fc5770 100644
--- a/hw/xfree86/utils/xorgcfg/text-mode.c
+++ b/hw/xfree86/utils/xorgcfg/text-mode.c
@@ -1128,6 +1128,7 @@ CardConfig(void)
static char *xdrivers[] = {
"apm",
"ark",
+ "ast",
"ati",
"r128",
"radeon",
diff --git a/hw/xfree86/utils/xorgconfig/Cards b/hw/xfree86/utils/xorgconfig/Cards
index bf30eab..b95928c 100644
--- a/hw/xfree86/utils/xorgconfig/Cards
+++ b/hw/xfree86/utils/xorgconfig/Cards
@@ -51,6 +51,11 @@ NAME ** Ark Logic (generic)
SERVER SVGA
DRIVER ark
+NAME ** ASPEED Technology (generic) [ast]
+#CHIPSET ast
+SERVER SVGA
+DRIVER ast
+
NAME ** ATI (generic) [ati]
#CHIPSET ati
SERVER SVGA
diff-tree e1dd1904c6c7ce33f347d822272831d54a6497c8 (from 62d24097932708fbbb62a23614fe63b4b7acf3bd)
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Thu Oct 19 13:51:53 2006 -0700
Pre-release message should tell users to check git, not CVS, for updates
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 8b4bf14..8f0a26d 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -1763,8 +1763,8 @@ xf86PrintBanner()
"Bugs may be filed in the bugzilla at http://bugs.freedesktop.org/.\n"
"Select the \"xorg\" product for bugs you find in this release.\n"
"Before reporting bugs in pre-release versions please check the\n"
- "latest version in the X.Org Foundation CVS repository.\n"
- "See http://wiki.x.org/wiki/CvsPage for CVS access instructions.\n");
+ "latest version in the X.Org Foundation git repository.\n"
+ "See http://wiki.x.org/wiki/GitPage for git access instructions.\n");
#endif
ErrorF("\nX Window System Version %d.%d.%d",
XORG_VERSION_MAJOR,
diff-tree 62d24097932708fbbb62a23614fe63b4b7acf3bd (from 357b37b3826fa6e9878c0bd895164259c2ed3c0d)
Author: Joshua Baergen <joshuabaergen at gentoo.org>
Date: Thu Oct 19 11:14:26 2006 -0700
Create xorg.conf.example (Gentoo bug #138623).
diff --git a/configure.ac b/configure.ac
index 693da13..444b021 100644
--- a/configure.ac
+++ b/configure.ac
@@ -821,6 +821,7 @@ VENDOR_MAN_VERSION="Version ${VENDOR_VER
AC_DEFINE_DIR(COMPILEDDEFAULTFONTPATH, FONTPATH, [Default font path])
AC_DEFINE_DIR(RGB_DB, RGBPATH, [Default RGB path])
+AC_DEFINE_DIR(BASE_FONT_PATH, FONTDIR, [Default base font path])
AC_DEFINE_DIR(DRI_DRIVER_PATH, DRI_DRIVER_PATH, [Default DRI driver path])
AC_DEFINE_UNQUOTED(XVENDORNAME, ["$VENDOR_STRING"], [Vendor name])
AC_DEFINE_UNQUOTED(XVENDORNAMESHORT, ["$VENDOR_STRING_SHORT"], [Short vendor name])
diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
index 5cce11d..79d2ec5 100644
--- a/hw/xfree86/Makefile.am
+++ b/hw/xfree86/Makefile.am
@@ -1,3 +1,5 @@
+include $(top_srcdir)/cpprules.in
+
if DRI
DRI_SUBDIR = dri
endif
@@ -82,7 +84,23 @@ endif
optionsdir = $(libdir)/X11
dist_options_DATA = Options
+BUILT_SOURCES = xorg.conf.example
+CLEAN = xorg.conf.example xorg.conf.example.pre
EXTRA_DIST = xorgconf.cpp
+CPP_FILES_FLAGS = \
+ -DRGBPATH=\"$(RGB_DB)\" \
+ -DLOCALFONTPATH="\"$(BASE_FONT_PATH)/local\"" \
+ -DMISCFONTPATH="\"$(BASE_FONT_PATH)/misc\"" \
+ -DT1FONTPATH="\"$(BASE_FONT_PATH)/Type1\"" \
+ -DTRUETYPEFONTPATH="\"$(BASE_FONT_PATH)/TTF\"" \
+ -DCIDFONTPATH="\"$(BASE_FONT_PATH)/CID\"" \
+ -DDPI75FONTPATH="\"$(BASE_FONT_PATH)/75dpi\"" \
+ -DDPI100FONTPATH="\"$(BASE_FONT_PATH)/100dpi\"" \
+ -DMODULEPATH=\"$(DEFAULT_MODULE_PATH)\"
+
relink:
rm -f Xorg && $(MAKE) Xorg
+
+xorg.conf.example.pre: xorgconf.cpp
+ cp $< $@
diff --git a/hw/xfree86/xorgconf.cpp b/hw/xfree86/xorgconf.cpp
index c94c1e5..6c52213 100644
--- a/hw/xfree86/xorgconf.cpp
+++ b/hw/xfree86/xorgconf.cpp
@@ -54,12 +54,9 @@ XCOMM command (or a combination of both
FontPath LOCALFONTPATH
FontPath MISCFONTPATH
- FontPath DPI75USFONTPATH
- FontPath DPI100USFONTPATH
FontPath T1FONTPATH
- FontPath TRUETYPEFONTPATH
+ FontPath TRUETYPEFONTPATH
FontPath CIDFONTPATH
- FontPath SPFONTPATH
FontPath DPI75FONTPATH
FontPath DPI100FONTPATH
diff-tree 357b37b3826fa6e9878c0bd895164259c2ed3c0d (from 5eca750fe2f3f243fb352271ad8da196af0cb16a)
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Wed Oct 18 18:11:06 2006 -0700
Use getisax() instead of asm code to determine available x86 ISA extensions on Solaris
diff --git a/configure.ac b/configure.ac
index 444dd4c..693da13 100644
--- a/configure.ac
+++ b/configure.ac
@@ -82,7 +82,8 @@ AC_TYPE_PID_T
dnl Checks for library functions.
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr \
- strtol getopt getopt_long vsnprintf walkcontext backtrace])
+ strtol getopt getopt_long vsnprintf walkcontext backtrace \
+ getisax])
AC_FUNC_ALLOCA
dnl Old HAS_* names used in os/*.c.
AC_CHECK_FUNC([getdtablesize],
diff --git a/fb/fbpict.c b/fb/fbpict.c
index eb305b9..d839994 100644
--- a/fb/fbpict.c
+++ b/fb/fbpict.c
@@ -1435,6 +1435,10 @@ fbPictureInit (ScreenPtr pScreen, PictFo
*/
#if !defined(__amd64__) && !defined(__x86_64__)
+#ifdef HAVE_GETISAX
+#include <sys/auxv.h>
+#endif
+
enum CPUFeatures {
NoFeatures = 0,
MMX = 0x1,
@@ -1445,7 +1449,23 @@ enum CPUFeatures {
};
static unsigned int detectCPUFeatures(void) {
+ unsigned int features = 0;
unsigned int result;
+
+#ifdef HAVE_GETISAX
+ if (getisax(&result, 1)) {
+ if (result & AV_386_CMOV)
+ features |= CMOV;
+ if (result & AV_386_MMX)
+ features |= MMX;
+ if (result & AV_386_AMD_MMX)
+ features |= MMX_Extensions;
+ if (result & AV_386_SSE)
+ features |= SSE;
+ if (result & AV_386_SSE2)
+ features |= SSE2;
+ }
+#else
char vendor[13];
vendor[0] = 0;
vendor[12] = 0;
@@ -1454,7 +1474,8 @@ static unsigned int detectCPUFeatures(vo
* %esp here. We can't declare either one as clobbered
* since they are special registers (%ebx is the "PIC
* register" holding an offset to global data, %esp the
- * stack pointer), so we need to make sure they have their+ * original values when we access the output operands.
+ * stack pointer), so we need to make sure they have their
+ * original values when we access the output operands.
*/
__asm__ ("pushf\n"
"pop %%eax\n"
@@ -1490,7 +1511,6 @@ static unsigned int detectCPUFeatures(vo
: "%eax", "%ecx", "%edx"
);
- unsigned int features = 0;
if (result) {
/* result now contains the standard feature bits */
if (result & (1 << 15))
@@ -1524,6 +1544,7 @@ static unsigned int detectCPUFeatures(vo
features |= MMX_Extensions;
}
}
+#endif /* HAVE_GETISAX */
return features;
}
diff --git a/include/dix-config.h.in b/include/dix-config.h.in
index 571a867..65c42e6 100644
--- a/include/dix-config.h.in
+++ b/include/dix-config.h.in
@@ -112,6 +112,9 @@
/* Define to 1 if you have the `geteuid' function. */
#undef HAVE_GETEUID
+/* Define to 1 if you have the `getisax' function. */
+#undef HAVE_GETISAX
+
/* Define to 1 if you have the `getopt' function. */
#undef HAVE_GETOPT
diff-tree 5eca750fe2f3f243fb352271ad8da196af0cb16a (from df979b75c8cd8a7e0566aea58031bb9b8f5cd3d3)
Author: Adam Jackson <ajax at benzedrine.nwnk.net>
Date: Tue Oct 17 14:53:28 2006 -0400
Stop building xorgcfg by default.
diff --git a/configure.ac b/configure.ac
index 7222106..444dd4c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1579,8 +1579,8 @@ AC_SUBST(XORGCONFIG_DEP_LIBS)
dnl xorgcfg GUI configuration utility
AC_ARG_ENABLE(xorgcfg, AS_HELP_STRING([--enable-xorgcfg],
- [Build xorgcfg GUI configuration utility (default: yes)]),
- [XORGCFG=$enableval],[XORGCFG=yes])
+ [Build xorgcfg GUI configuration utility (default: no)]),
+ [XORGCFG=$enableval],[XORGCFG=no])
if test x$XORGCFG = xyes ; then
PKG_CHECK_MODULES([XORGCFG_DEP],
[xkbui >= 1.0.2 xkbfile xxf86misc xxf86vm xaw7 xmu xt xpm xext x11])
diff-tree df979b75c8cd8a7e0566aea58031bb9b8f5cd3d3 (from d430e76a161c963169067875c3654f5fd8f42b19)
Author: Matthias Hopf <mhopf at suse.de>
Date: Tue Oct 17 17:06:44 2006 +0200
StorePixels() macro could create invalid *x++=*x... code - fixed.
diff --git a/cfb/cfbteblt8.c b/cfb/cfbteblt8.c
index 1db2996..9d4ce57 100644
--- a/cfb/cfbteblt8.c
+++ b/cfb/cfbteblt8.c
@@ -301,7 +301,7 @@ typedef unsigned int *glyphPointer;
#define StorePixels(o,p) dst[o] = p
#define Loop dst += widthDst;
#else
-#define StorePixels(o,p) *dst++ = (p)
+#define StorePixels(o,p) do { *dst = (p); dst++; } while (0)
#define Loop dst += widthLeft;
#endif
diff-tree d430e76a161c963169067875c3654f5fd8f42b19 (from 3ad1642f1bbaa5f96558cdf3384b40f7122f8781)
Author: Alan Hourihane <alanh at fairlite.demon.co.uk>
Date: Mon Oct 16 12:39:05 2006 +0100
Small modification to blocking signals when switching modes.
diff --git a/hw/xfree86/common/xf86Cursor.c b/hw/xfree86/common/xf86Cursor.c
index 8bb12ae..dcdf466 100644
--- a/hw/xfree86/common/xf86Cursor.c
+++ b/hw/xfree86/common/xf86Cursor.c
@@ -213,7 +213,6 @@ xf86SwitchMode(ScreenPtr pScreen, Displa
ScreenPtr pCursorScreen;
Bool Switched;
int px, py;
- int sigstate;
if (!pScr->vtSema || !mode || !pScr->SwitchMode)
return FALSE;
@@ -233,10 +232,8 @@ xf86SwitchMode(ScreenPtr pScreen, Displa
if (pScreen == pCursorScreen)
miPointerPosition(&px, &py);
- sigstate = xf86BlockSIGIO ();
xf86EnterServerState(SETUP);
Switched = (*pScr->SwitchMode)(pScr->scrnIndex, mode, 0);
- xf86EnterServerState(OPERATING);
if (Switched) {
pScr->currentMode = mode;
@@ -271,7 +268,7 @@ xf86SwitchMode(ScreenPtr pScreen, Displa
pScr->frameY1 = pScr->virtualY - 1;
}
}
- xf86UnblockSIGIO (sigstate);
+ xf86EnterServerState(OPERATING);
if (pScr->AdjustFrame)
(*pScr->AdjustFrame)(pScr->scrnIndex, pScr->frameX0, pScr->frameY0, 0);
diff-tree 3ad1642f1bbaa5f96558cdf3384b40f7122f8781 (from f9bfee50981006a2c58d3f73e2b0d123bb2a41b7)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Sun Oct 15 16:57:09 2006 +0200
Fix __glXDRIbindTexImage() for 32 bpp on big endian platforms.
diff --git a/GL/glx/glxdri.c b/GL/glx/glxdri.c
index b572304..170662c 100644
--- a/GL/glx/glxdri.c
+++ b/GL/glx/glxdri.c
@@ -359,7 +359,12 @@ __glXDRIbindTexImage(__GLXcontext *baseC
if (pixmap->drawable.depth >= 24) {
bpp = 4;
format = GL_BGRA;
- type = GL_UNSIGNED_BYTE;
+ type =
+#if X_BYTE_ORDER == X_LITTLE_ENDIAN
+ GL_UNSIGNED_BYTE;
+#else
+ GL_UNSIGNED_INT_8_8_8_8_REV;
+#endif
} else {
bpp = 2;
format = GL_RGB;
diff-tree f9bfee50981006a2c58d3f73e2b0d123bb2a41b7 (from b9108a13fc126d97c0393f911a1d9292563444ce)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Sun Oct 15 16:48:59 2006 +0200
Add per-drawable Xv colour key helper function.
This allows overlay Xv adaptors to work slightly better with compositing
managers.
Bump the video driver ABI minor so drivers only need to check for this at build
time.
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index f54be49..cf404fb 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -84,7 +84,7 @@ typedef enum {
* mask is 0xFFFF0000.
*/
#define ABI_ANSIC_VERSION SET_ABI_VERSION(0, 3)
-#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 0)
+#define ABI_VIDEODRV_VERSION SET_ABI_VERSION(1, 1)
#define ABI_XINPUT_VERSION SET_ABI_VERSION(0, 6)
#define ABI_EXTENSION_VERSION SET_ABI_VERSION(0, 3)
#define ABI_FONT_VERSION SET_ABI_VERSION(0, 5)
diff --git a/hw/xfree86/common/xf86xv.c b/hw/xfree86/common/xf86xv.c
index 89cb6ba..3e908b8 100644
--- a/hw/xfree86/common/xf86xv.c
+++ b/hw/xfree86/common/xf86xv.c
@@ -974,6 +974,7 @@ xf86XVEnlistPortInWindow(WindowPtr pWin,
if(!winPriv) {
winPriv = xalloc(sizeof(XF86XVWindowRec));
if(!winPriv) return BadAlloc;
+ memset(winPriv, 0, sizeof(XF86XVWindowRec));
winPriv->PortRec = portPriv;
winPriv->next = PrivRoot;
pWin->devPrivates[XF86XVWindowIndex].ptr = (pointer)winPriv;
@@ -1026,6 +1027,9 @@ xf86XVDestroyWindow(WindowPtr pWin)
pPriv->pDraw = NULL;
tmp = WinPriv;
+ if(WinPriv->pGC) {
+ FreeGC(WinPriv->pGC, 0);
+ }
WinPriv = WinPriv->next;
xfree(tmp);
}
@@ -1118,6 +1122,8 @@ xf86XVClipNotify(WindowPtr pWin, int dx,
while(WinPriv) {
pPriv = WinPriv->PortRec;
+ if(!pPriv) goto next;
+
if(pPriv->pCompositeClip && pPriv->FreeCompositeClip)
REGION_DESTROY(pScreen, pPriv->pCompositeClip);
@@ -1148,6 +1154,7 @@ xf86XVClipNotify(WindowPtr pWin, int dx,
}
}
+next:
pPrev = WinPriv;
WinPriv = WinPriv->next;
}
@@ -1739,9 +1746,13 @@ xf86XVPutImage(
REGION_UNINIT(pScreen, &VPReg);
}
- if(portPriv->pDraw) {
+ /* If we are changing windows, unregister our port in the old window */
+ if(portPriv->pDraw && (portPriv->pDraw != pDraw))
xf86XVRemovePortFromWindow((WindowPtr)(portPriv->pDraw), portPriv);
- }
+
+ /* Register our port with the new window */
+ ret = xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
+ if(ret != Success) goto PUT_IMAGE_BAILOUT;
if(!REGION_NOTEMPTY(pScreen, &ClipRegion)) {
clippedAway = TRUE;
@@ -1772,7 +1783,6 @@ xf86XVPutImage(
if((ret == Success) &&
(portPriv->AdaptorRec->flags & VIDEO_OVERLAID_IMAGES)) {
- xf86XVEnlistPortInWindow((WindowPtr)pDraw, portPriv);
portPriv->isOn = XV_ON;
portPriv->pDraw = pDraw;
portPriv->drw_x = drw_x; portPriv->drw_y = drw_y;
@@ -1813,6 +1823,56 @@ xf86XVQueryImageAttributes(
format->id, width, height, pitches, offsets);
}
+
+_X_EXPORT void
+xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes)
+{
+ ScreenPtr pScreen = pDraw->pScreen;
+ WindowPtr pWin = (WindowPtr)pDraw;
+ XF86XVWindowPtr pPriv = GET_XF86XV_WINDOW(pWin);
+ GCPtr pGC = NULL;
+ XID pval[2];
+ BoxPtr pbox = REGION_RECTS(clipboxes);
+ int i, nbox = REGION_NUM_RECTS(clipboxes);
+ xRectangle *rects;
+
+ if(!xf86Screens[pScreen->myNum]->vtSema) return;
+
+ if(pPriv)
+ pGC = pPriv->pGC;
+
+ if(!pGC) {
+ int status;
+ pval[0] = key;
+ pval[1] = IncludeInferiors;
+ pGC = CreateGC(pDraw, GCForeground | GCSubwindowMode, pval, &status);
+ if(!pGC) return;
+ ValidateGC(pDraw, pGC);
+ if (pPriv) pPriv->pGC = pGC;
+ } else if (key != pGC->fgPixel){
+ pval[0] = key;
+ ChangeGC(pGC, GCForeground, pval);
+ ValidateGC(pDraw, pGC);
+ }
+
+ REGION_TRANSLATE(pDraw->pScreen, clipboxes, -pDraw->x, -pDraw->y);
+
+ rects = ALLOCATE_LOCAL(nbox * sizeof(xRectangle));
+
+ for(i = 0; i < nbox; i++, pbox++) {
+ rects[i].x = pbox->x1;
+ rects[i].y = pbox->y1;
+ rects[i].width = pbox->x2 - pbox->x1;
+ rects[i].height = pbox->y2 - pbox->y1;
+ }
+
+ (*pGC->ops->PolyFillRect)(pDraw, pGC, nbox, rects);
+
+ if (!pPriv) FreeGC(pGC, 0);
+
+ DEALLOCATE_LOCAL(rects);
+}
+
_X_EXPORT void
xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes)
{
diff --git a/hw/xfree86/common/xf86xv.h b/hw/xfree86/common/xf86xv.h
index e0feb57..817e2b9 100644
--- a/hw/xfree86/common/xf86xv.h
+++ b/hw/xfree86/common/xf86xv.h
@@ -232,6 +232,9 @@ void xf86XVFreeVideoAdaptorRec(XF86Video
void
xf86XVFillKeyHelper (ScreenPtr pScreen, CARD32 key, RegionPtr clipboxes);
+void
+xf86XVFillKeyHelperDrawable (DrawablePtr pDraw, CARD32 key, RegionPtr clipboxes);
+
Bool
xf86XVClipVideoHelper(
BoxPtr dst,
diff --git a/hw/xfree86/common/xf86xvpriv.h b/hw/xfree86/common/xf86xvpriv.h
index ced0536..e716c9c 100644
--- a/hw/xfree86/common/xf86xvpriv.h
+++ b/hw/xfree86/common/xf86xvpriv.h
@@ -80,6 +80,7 @@ typedef struct {
typedef struct _XF86XVWindowRec{
XvPortRecPrivatePtr PortRec;
struct _XF86XVWindowRec *next;
+ GCPtr pGC;
} XF86XVWindowRec, *XF86XVWindowPtr;
#endif /* _XF86XVPRIV_H_ */
diff --git a/hw/xfree86/loader/xf86sym.c b/hw/xfree86/loader/xf86sym.c
index 69e11d5..a498ccc 100644
--- a/hw/xfree86/loader/xf86sym.c
+++ b/hw/xfree86/loader/xf86sym.c
@@ -625,6 +625,7 @@ _X_HIDDEN void *xfree86LookupTab[] = {
SYMFUNC(xf86XVAllocateVideoAdaptorRec)
SYMFUNC(xf86XVFreeVideoAdaptorRec)
SYMFUNC(xf86XVFillKeyHelper)
+ SYMFUNC(xf86XVFillKeyHelperDrawable)
SYMFUNC(xf86XVClipVideoHelper)
SYMFUNC(xf86XVCopyYUV12ToPacked)
SYMFUNC(xf86XVCopyPacked)
diff-tree b9108a13fc126d97c0393f911a1d9292563444ce (from cf948b7b04dfeb61a294889027b9a54f6b9b478e)
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date: Fri Oct 13 19:05:28 2006 -0700
Make sure xorgcfg files are included even when dist made with --disable-xorgcfg
diff --git a/hw/xfree86/utils/xorgcfg/Makefile.am b/hw/xfree86/utils/xorgcfg/Makefile.am
index 73e4042..309ed5c 100644
--- a/hw/xfree86/utils/xorgcfg/Makefile.am
+++ b/hw/xfree86/utils/xorgcfg/Makefile.am
@@ -56,6 +56,7 @@ endif
if NEED_STRLCAT
STRL_SRCS = $(top_srcdir)/os/strlcat.c $(top_srcdir)/os/strlcpy.c
endif
+endif BUILD_XORGCFG
xorgcfg_SOURCES = \
accessx.c \
@@ -95,10 +96,7 @@ xorgcfg_SOURCES = \
xf86config.h \
$(STRL_SRCS)
-XBMdir = $(includedir)/X11/bitmaps
-XPMdir = $(includedir)/X11/pixmaps
-
-XBM_DATA = \
+BITMAPS = \
card.xbm \
keyboard.xbm \
monitor.xbm \
@@ -112,7 +110,7 @@ XBM_DATA = \
shorter.xbm \
taller.xbm
-XPM_DATA = \
+PIXMAPS = \
card.xpm \
computer.xpm \
keyboard.xpm \
@@ -122,6 +120,13 @@ XPM_DATA = \
# Rules needed to cpp man page & app-defaults
include $(top_srcdir)/cpprules.in
+if BUILD_XORGCFG
+XBMdir = $(includedir)/X11/bitmaps
+XPMdir = $(includedir)/X11/pixmaps
+
+XBM_DATA = $(BITMAPS)
+XPM_DATA = $(PIXMAPS)
+
# App default files (*.ad)
appdefaultdir = @APPDEFAULTDIR@
@@ -146,7 +151,6 @@ appman_DATA = $(appman_PRE:man=@APP_MAN_
all-local: $(appman_PRE) $(appman_DATA)
-EXTRA_DIST = $(XBM_DATA) $(XPM_DATA) XOrgCfg.pre xorgcfg.man.pre
BUILT_SOURCES = $(appman_PRE)
CLEANFILES = $(APPDEFAULTFILES) $(BUILT_SOURCES) $(appman_DATA)
@@ -156,4 +160,6 @@ SUFFIXES += .$(APP_MAN_SUFFIX) .man
-rm -f $@
$(LN_S) $< $@
-endif
+endif BUILD_XORGCFG
+
+EXTRA_DIST = $(BITMAPS) $(PIXMAPS) XOrgCfg.pre xorgcfg.man.pre
More information about the xorg-commit
mailing list