Hello community,
here is the log from the commit of package xgl
checked in at Sun Apr 30 17:52:18 CEST 2006.
--------
--- xgl/xgl.changes 2006-04-24 21:15:17.000000000 +0200
+++ STABLE/xgl/xgl.changes 2006-04-30 15:09:19.000000000 +0200
@@ -1,0 +2,5 @@
+Sun Apr 30 15:06:10 CEST 2006 - dreveman(a)suse.de
+
+- Fix so events are correctly delivered when warping the pointer.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xgl.spec ++++++
--- /var/tmp/diff_new_pack.dTgJQh/_old 2006-04-30 17:52:00.000000000 +0200
+++ /var/tmp/diff_new_pack.dTgJQh/_new 2006-04-30 17:52:00.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package xgl (Version cvs_060419)
+# spec file for package xgl (Version cvs_060430)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -23,8 +23,8 @@
PreReq: %fillup_prereq
Requires: xgl-hardware-list
Autoreqprov: on
-Version: cvs_060419
-Release: 3
+Version: cvs_060430
+Release: 1
Summary: Xserver that uses OpenGL for its drawing operations.
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64
@@ -143,6 +143,8 @@
/var/adm/fillup-templates/sysconfig.displaymanager-%name
%changelog -n xgl
+* Sun Apr 30 2006 - dreveman(a)suse.de
+- Fix so events are correctly delivered when warping the pointer.
* Mon Apr 24 2006 - jpr(a)suse.de
- Do not package the white list here, that way we don't need to update
all of xgl when a new card comes out.
++++++ xorg-server-1.1.99.1.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xorg-server-1.1.99.1/ChangeLog new/xorg-server-1.1.99.1/ChangeLog
--- old/xorg-server-1.1.99.1/ChangeLog 2006-04-19 00:08:42.000000000 +0200
+++ new/xorg-server-1.1.99.1/ChangeLog 2006-04-26 03:46:55.000000000 +0200
@@ -1,3 +1,12 @@
+2006-04-26 David Reveman <davidr(a)novell.com>
+
+ * hw/xgl/glx/xglx.c: Fix SetCursorPosition, events were not generated
+ correctly.
+
+2006-04-24 David Reveman <davidr(a)novell.com>
+
+ * fb/fbcompose.c (fbFetchTransformed): Fix convolution kernel offsets.
+
2006-04-19 David Reveman <davidr(a)novell.com>
* hw/xgl/glx/xglx.c: Pass display offset to xglxInitXorg.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xorg-server-1.1.99.1/fb/fbcompose.c new/xorg-server-1.1.99.1/fb/fbcompose.c
--- old/xorg-server-1.1.99.1/fb/fbcompose.c 2006-04-10 20:09:30.000000000 +0200
+++ new/xorg-server-1.1.99.1/fb/fbcompose.c 2006-04-24 15:53:26.000000000 +0200
@@ -1,5 +1,5 @@
/*
- * $XdotOrg: xserver/xorg/fb/fbcompose.c,v 1.26.6.6 2006/04/10 14:24:51 davidr Exp $
+ * $XdotOrg: xserver/xorg/fb/fbcompose.c,v 1.26.6.7 2006/04/24 13:53:26 davidr Exp $
* $XFree86: xc/programs/Xserver/fb/fbcompose.c,v 1.17tsi Exp $
*
* Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
@@ -3647,8 +3647,8 @@
xFixed *params = pict->filter_params;
INT32 cwidth = xFixedToInt(params[0]);
INT32 cheight = xFixedToInt(params[1]);
- int xoff = params[0] >> 1;
- int yoff = params[1] >> 1;
+ int xoff = (params[0] - xFixed1) >> 1;
+ int yoff = (params[1] - xFixed1) >> 1;
params += 2;
for (i = 0; i < width; ++i) {
if (!mask || mask[i] & maskBits)
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/xorg-server-1.1.99.1/hw/xgl/glx/xglx.c new/xorg-server-1.1.99.1/hw/xgl/glx/xglx.c
--- old/xorg-server-1.1.99.1/hw/xgl/glx/xglx.c 2006-04-18 23:14:44.000000000 +0200
+++ new/xorg-server-1.1.99.1/hw/xgl/glx/xglx.c 2006-04-26 03:38:34.000000000 +0200
@@ -379,6 +379,112 @@
#endif
+static Bool
+xglxExposurePredicate (Display *xdisplay,
+ XEvent *xevent,
+ char *args)
+{
+ return (xevent->type == Expose);
+}
+
+static Bool
+xglxNotExposurePredicate (Display *xdisplay,
+ XEvent *xevent,
+ char *args)
+{
+ return (xevent->type != Expose);
+}
+
+static int
+xglxWindowExposures (WindowPtr pWin,
+ pointer pReg)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+ RegionRec ClipList;
+
+ if (HasBorder (pWin))
+ {
+ REGION_INIT (pScreen, &ClipList, NullBox, 0);
+ REGION_SUBTRACT (pScreen, &ClipList, &pWin->borderClip,
+ &pWin->winSize);
+ REGION_INTERSECT (pScreen, &ClipList, &ClipList, (RegionPtr) pReg);
+ (*pScreen->PaintWindowBorder) (pWin, &ClipList, PW_BORDER);
+ REGION_UNINIT (pScreen, &ClipList);
+ }
+
+ REGION_INIT (pScreen, &ClipList, NullBox, 0);
+ REGION_INTERSECT (pScreen, &ClipList, &pWin->clipList, (RegionPtr) pReg);
+ (*pScreen->WindowExposures) (pWin, &ClipList, NullRegion);
+ REGION_UNINIT (pScreen, &ClipList);
+
+ return WT_WALKCHILDREN;
+}
+
+static void
+xglxEnqueueEvents (void)
+{
+ ScreenPtr pScreen = currentScreen;
+ XEvent X;
+ xEvent x;
+
+ while (XCheckIfEvent (xdisplay, &X, xglxNotExposurePredicate, NULL))
+ {
+ switch (X.type) {
+ case KeyPress:
+ x.u.u.type = KeyPress;
+ x.u.u.detail = X.xkey.keycode;
+ x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
+ mieqEnqueue (&x);
+ break;
+ case KeyRelease:
+ x.u.u.type = KeyRelease;
+ x.u.u.detail = X.xkey.keycode;
+ x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
+ mieqEnqueue (&x);
+ break;
+ case ButtonPress:
+ x.u.u.type = ButtonPress;
+ x.u.u.detail = X.xbutton.button;
+ x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
+ mieqEnqueue (&x);
+ break;
+ case ButtonRelease:
+ x.u.u.type = ButtonRelease;
+ x.u.u.detail = X.xbutton.button;
+ x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
+ mieqEnqueue (&x);
+ break;
+ case MotionNotify:
+ x.u.u.type = MotionNotify;
+ x.u.u.detail = 0;
+ x.u.keyButtonPointer.rootX = X.xmotion.x;
+ x.u.keyButtonPointer.rootY = X.xmotion.y;
+ x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
+ miPointerAbsoluteCursor (X.xmotion.x, X.xmotion.y, lastEventTime);
+ mieqEnqueue (&x);
+ break;
+ case EnterNotify:
+ if (X.xcrossing.detail != NotifyInferior)
+ {
+ if (pScreen)
+ {
+ NewCurrentScreen (pScreen, X.xcrossing.x, X.xcrossing.y);
+ x.u.u.type = MotionNotify;
+ x.u.u.detail = 0;
+ x.u.keyButtonPointer.rootX = X.xcrossing.x;
+ x.u.keyButtonPointer.rootY = X.xcrossing.y;
+ x.u.keyButtonPointer.time = lastEventTime =
+ GetTimeInMillis ();
+ mieqEnqueue (&x);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
static void
xglxConstrainCursor (ScreenPtr pScreen,
BoxPtr pBox)
@@ -553,6 +659,12 @@
XWarpPointer (xdisplay, pScreenPriv->win, pScreenPriv->win,
0, 0, 0, 0, x, y);
+ if (generateEvent)
+ {
+ XSync (xdisplay, FALSE);
+ xglxEnqueueEvents ();
+ }
+
return TRUE;
}
@@ -891,47 +1003,6 @@
AddScreen (xglxScreenInit, argc, argv);
}
-static Bool
-xglxExposurePredicate (Display *xdisplay,
- XEvent *xevent,
- char *args)
-{
- return (xevent->type == Expose);
-}
-
-static Bool
-xglxNotExposurePredicate (Display *xdisplay,
- XEvent *xevent,
- char *args)
-{
- return (xevent->type != Expose);
-}
-
-static int
-xglxWindowExposures (WindowPtr pWin,
- pointer pReg)
-{
- ScreenPtr pScreen = pWin->drawable.pScreen;
- RegionRec ClipList;
-
- if (HasBorder (pWin))
- {
- REGION_INIT (pScreen, &ClipList, NullBox, 0);
- REGION_SUBTRACT (pScreen, &ClipList, &pWin->borderClip,
- &pWin->winSize);
- REGION_INTERSECT (pScreen, &ClipList, &ClipList, (RegionPtr) pReg);
- (*pScreen->PaintWindowBorder) (pWin, &ClipList, PW_BORDER);
- REGION_UNINIT (pScreen, &ClipList);
- }
-
- REGION_INIT (pScreen, &ClipList, NullBox, 0);
- REGION_INTERSECT (pScreen, &ClipList, &pWin->clipList, (RegionPtr) pReg);
- (*pScreen->WindowExposures) (pWin, &ClipList, NullRegion);
- REGION_UNINIT (pScreen, &ClipList);
-
- return WT_WALKCHILDREN;
-}
-
static void
xglxBlockHandler (pointer blockData,
OSTimePtr pTimeout,
@@ -973,64 +1044,7 @@
int result,
pointer pReadMask)
{
- ScreenPtr pScreen = currentScreen;
- XEvent X;
- xEvent x;
-
- while (XCheckIfEvent (xdisplay, &X, xglxNotExposurePredicate, NULL))
- {
- switch (X.type) {
- case KeyPress:
- x.u.u.type = KeyPress;
- x.u.u.detail = X.xkey.keycode;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
- mieqEnqueue (&x);
- break;
- case KeyRelease:
- x.u.u.type = KeyRelease;
- x.u.u.detail = X.xkey.keycode;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
- mieqEnqueue (&x);
- break;
- case ButtonPress:
- x.u.u.type = ButtonPress;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
- mieqEnqueue (&x);
- break;
- case ButtonRelease:
- x.u.u.type = ButtonRelease;
- x.u.u.detail = X.xbutton.button;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
- mieqEnqueue (&x);
- break;
- case MotionNotify:
- x.u.u.type = MotionNotify;
- x.u.u.detail = 0;
- x.u.keyButtonPointer.rootX = X.xmotion.x;
- x.u.keyButtonPointer.rootY = X.xmotion.y;
- x.u.keyButtonPointer.time = lastEventTime = GetTimeInMillis ();
- miPointerAbsoluteCursor (X.xmotion.x, X.xmotion.y, lastEventTime);
- mieqEnqueue (&x);
- break;
- case EnterNotify:
- if (X.xcrossing.detail != NotifyInferior) {
- if (pScreen) {
- NewCurrentScreen (pScreen, X.xcrossing.x, X.xcrossing.y);
- x.u.u.type = MotionNotify;
- x.u.u.detail = 0;
- x.u.keyButtonPointer.rootX = X.xcrossing.x;
- x.u.keyButtonPointer.rootY = X.xcrossing.y;
- x.u.keyButtonPointer.time = lastEventTime =
- GetTimeInMillis ();
- mieqEnqueue (&x);
- }
- }
- break;
- default:
- break;
- }
- }
+ xglxEnqueueEvents ();
}
static void
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...