[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg-server: Changes to 'debian-unstable'



 ChangeLog                      |  174 +++++++++++++++++++++++++++++++++++++++++
 Xext/dpms.c                    |   17 ----
 Xext/sync.c                    |   32 +++----
 Xext/xtest.c                   |    2 
 config/hal.c                   |   21 ++--
 configure.ac                   |    8 -
 debian/changelog               |   11 ++
 dix/dispatch.c                 |   22 ++++-
 dix/events.c                   |    4 
 dix/window.c                   |    2 
 exa/exa_accel.c                |    1 
 glx/glxext.c                   |   27 ++++++
 hw/xfree86/dri2/dri2.c         |   12 ++
 hw/xfree86/modes/xf86Cursors.c |    6 -
 hw/xfree86/modes/xf86Rotate.c  |    7 +
 include/dix.h                  |    6 +
 16 files changed, 293 insertions(+), 59 deletions(-)

New commits:
commit 552e9dae5a2bce79c7bfd289b227b1c5eb703175
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Sep 14 15:38:12 2009 +0200

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index 7a5c7da..53758f4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.6.3.901-1) UNRELEASED; urgency=low
+xorg-server (2:1.6.3.901-1) unstable; urgency=low
 
   [ Julien Cristau ]
   * Add patch stolen from Fedora to add the vboxvideo driver to the
@@ -20,7 +20,7 @@ xorg-server (2:1.6.3.901-1) UNRELEASED; urgency=low
   [ David Nusinow ]
   * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a
 
- -- David Nusinow <dnusinow@debian.org>  Wed, 26 Aug 2009 23:24:25 -0400
+ -- Julien Cristau <jcristau@debian.org>  Mon, 14 Sep 2009 15:33:46 +0200
 
 xorg-server (2:1.6.3-1) unstable; urgency=low
 

commit 551d149f9a0d4c7e17a27f8c843d789f782a54e1
Author: Michel Dänzer <daenzer@vmware.com>
Date:   Tue Sep 8 15:25:19 2009 +0200

    EXA: Only take special code path for 1x1 fill for pixmaps.
    
    It doesn't make sense for windows.
    
    Also double-check that the data pointer is valid.
    
    Fixes http://bugs.freedesktop.org/show_bug.cgi?id=23461 (not sure that could
    happen on master even without this, but just in case)

diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index dac6e6c..22980d9 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -966,6 +966,7 @@ exaFillRegionSolid (DrawablePtr	pDrawable, RegionPtr pRegion, Pixel pixel,
 	exaMarkSync(pDrawable->pScreen);
 
 	if (!(pExaScr->info->flags & EXA_HANDLES_PIXMAPS) &&
+	    pExaPixmap->sys_ptr && pDrawable->type == DRAWABLE_PIXMAP &&
 	    pDrawable->width == 1 && pDrawable->height == 1 &&
 	    pDrawable->bitsPerPixel != 24) {
 	    ExaPixmapPriv(pPixmap);

commit 6a640811b16bf061a144a3cd0d7a78a58de3ab2b
Author: Michel Dänzer <daenzer@vmware.com>
Date:   Tue Jun 23 16:45:39 2009 +0200

    dri2: Don't crash if pPriv is NULL.
    (cherry picked from commit df597709d71f47b8516e27c6fb1bfffd59de5e48)

diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 580383d..3e8a7d4 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -190,10 +190,18 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
     int need_fake_front = 0;
     int have_fake_front = 0;
     int front_format = 0;
-    const int dimensions_match = (pDraw->width == pPriv->width)
-	&& (pDraw->height == pPriv->height);
+    int dimensions_match;
     int i;
 
+    if (!pPriv) {
+	*width = pDraw->width;
+	*height = pDraw->height;
+	*out_count = 0;
+	return NULL;
+    }
+
+    dimensions_match = (pDraw->width == pPriv->width)
+	&& (pDraw->height == pPriv->height);
 
     buffers = xalloc((count + 1) * sizeof(buffers[0]));
 

commit f2af665d1e0be14effd51685e1840c47ff1efbb7
Author: Richard Hughes <richard@hughsie.com>
Date:   Fri Aug 14 11:44:35 2009 +0100

    Don't reset the lastDeviceEventTime when doing DPMS actions
    
    When we change the DPMS mode, don't play games with the last event time as
    this breaks applications using IDLETIME to turn the backlight off after a
    preset time.
    
    This patch fixes gnome-power-manager and xfce-power-manager
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit c1d901d723c3bee523736eacc15b44a7dff484fe)

diff --git a/Xext/dpms.c b/Xext/dpms.c
index bad7aa6..d3e0dde 100644
--- a/Xext/dpms.c
+++ b/Xext/dpms.c
@@ -219,19 +219,10 @@ ProcDPMSForceLevel(client)
     if (!DPMSEnabled)
 	return BadMatch;
 
-    if (stuff->level == DPMSModeOn) {
-      lastDeviceEventTime.milliseconds =
-          GetTimeInMillis();
-    } else if (stuff->level == DPMSModeStandby) {
-      lastDeviceEventTime.milliseconds =
-          GetTimeInMillis() -  DPMSStandbyTime;
-    } else if (stuff->level == DPMSModeSuspend) {
-      lastDeviceEventTime.milliseconds =
-          GetTimeInMillis() -  DPMSSuspendTime;
-    } else if (stuff->level == DPMSModeOff) {
-      lastDeviceEventTime.milliseconds =
-          GetTimeInMillis() -  DPMSOffTime;
-    } else {
+    if (stuff->level != DPMSModeOn &&
+        stuff->level != DPMSModeStandby &&
+        stuff->level != DPMSModeSuspend &&
+        stuff->level != DPMSModeOff) {
 	client->errorValue = stuff->level;
 	return BadValue;
     }

commit e97e3ba1b40223b0f60fdc019ada16f46052c29f
Author: Julien Cristau <jcristau@debian.org>
Date:   Mon Sep 14 15:21:16 2009 +0200

    Bump changelogs

diff --git a/ChangeLog b/ChangeLog
index d4b3b86..73582f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,177 @@
+commit 3044711412d0a08ba65a491bd2441c0c8980f5e2
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Aug 25 22:37:16 2009 -0700
+
+    Bump version to 1.6.3.901 (1.6.4 RC1)
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit d8e48deb212767c4dfce982e6cb9d1b1fce63b96
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Aug 25 22:29:25 2009 -0700
+
+    Block signals while delivering XTest events (fixes bug 23100)
+    
+    XTest uses the same event list as all input devices, and input devices
+    use it at SIGIO time. This causes mass confusion when a SIGIO event
+    occurs in the middle of XTest event processing.
+    
+    The master branch has a much different fix, using a separate input
+    queue which reduces latency that may be caused by XTest event queuing;
+    it's a 'nicer' fix in some ways, but this simple fix should solve the
+    problem.
+    
+    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 76a1839b0a7dcb82e46c43533d252288677c6dbb
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Aug 25 18:07:00 2009 -0700
+
+    Ensure that rotation updates happen frequently
+    
+    The smart scheduler is designed to minimize scheduler overhead by
+    increasing the interval between WaitForSomething calls when a single
+    client is running. However, the software rotation code depends on
+    its BlockHandler being invoked for screen updates; the long delays
+    caused by the smart scheduler optimizations means that screen updates
+    can be delayed a long time as well.
+    
+    The change is simple -- prevent the smart scheduler from increasing
+    the scheduling interval while any screen is using software rotation.
+    (cherry picked from commit e7dd1efef408effe52d0bd3d3aa0b5d4ee10ed90)
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 31dc4fe0be57da4e9458ee490811fbd92598b7a7
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Aug 25 16:58:07 2009 -0700
+
+    Perform rotation redisplay before calling driver block handler (which may flush rendering)
+    
+    The rotation block handler uses regular driver rendering functions to
+    repaint the screen, if those functions queue commands in the driver,
+    it's important that the driver block handler be invoked after the
+    rotated image is drawn.
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 1740cda7a37abc7d0a169ab4555b446adaa62211)
+
+commit cebc0a7aa7a368b2ade3a808195d2e738fda83e9
+Author: Keith Packard <keithp@keithp.com>
+Date:   Tue Aug 25 16:54:16 2009 -0700
+
+    xf86_reload_cursors: fix cursor position to eliminate jumping after mode set
+    
+    xf86_reload_cursors restores the cursor to the correct position, but
+    that must adjust for cursor hot spot and frame before calling down to
+    the hardware function, otherwise the cursor jumps to the wrong
+    position until it is repositioned by the user.
+    
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+    (cherry picked from commit 4aab05e3b3231f1ec9795a66a075d17a722634a7)
+
+commit 5848fca11f3c5b65bb6634816c0df6aeb6eda87d
+Author: Michel Dänzer <daenzer@vmware.com>
+Date:   Tue Jun 23 16:45:40 2009 +0200
+
+    glx: Clean up more thoroughly if the drawable of a current context goes away.
+    
+    Fixes crash when restarting compiz, due to cl->currentContexts[x] being stale.
+    (cherry picked from commit 3020b1d43e34fca08cd51f7c7c8ed51497d49ef3)
+
+commit fad2de1cca057586a88fb20ebf9a9964f8e3e298
+Author: Michel Dänzer <daenzer@vmware.com>
+Date:   Thu May 14 11:46:41 2009 +0200
+
+    glx: If a destroyed window is bound to the current context, make it not current.
+    
+    Avoids subsequent crashes due to stale pointers to the DrawableRec, see
+    https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 and previous comments.
+    
+    Signed-off-by: Michel Dänzer <daenzer@vmware.com>
+    (cherry picked from commit 2075d4bf9e53b8baef0b919da6c44771220cd4a5)
+
+commit a32d717ac64b21e15a5736ae4981cdd32f2da56b
+Author: Richard Hughes <richard@hughsie.com>
+Date:   Mon Aug 17 09:15:32 2009 +0100
+
+    Do not reset lastDeviceEventTime when we do dixSaveScreens
+    
+    When we turn off DPMS with DPMSModeOff and do dixSaveScreens, don't reset the
+    event time else session clients using IDLETIME will be reset.
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 6b5978dcf1f7ac3ecc2f22df06f7000f360e2066)
+
+commit 32115e690f43fde619234722aa674ff1ae1b44ae
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri Aug 14 11:48:54 2009 +1000
+
+    dix: update the sprite trace for all masters && floating slaves (#23257)
+    
+    When the windows are restructured, CheckMotion needs to be called for all
+    masters and floating slaves to update the spriteTrace.
+    
+    X.Org Bug 23257 <http://bugs.freedesktop.org/show_bug.cgi?id=23257>
+    (cherry picked from commit 6c292d17053eb2a7e7054e51210f423dbc0cb7e8)
+    
+    Tested-by: Thomas Jaeger
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit af7e62a913c3c5b9639b4557b31537853f3f58bb
+Author: Dan Nicholson <dbn.lists@gmail.com>
+Date:   Sun Aug 16 18:07:49 2009 -0700
+
+    xfree86: Link libselinux with Xorg system libraries
+    
+    Put the reference to -lselinux in XORG_SYS_LIBS so it isn't added as a
+    make dependency for libxorg.la. Otherwise, make goes looking for a file
+    -lselinux in the current directory, which it obviously won't find.
+    
+    Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
+    Tested-by: Justin P. Mattock <justinmattock@gmail.com>
+    (cherry picked from commit c73cd3b265c301b8a54ffe484d6c696f2abefb46)
+
+commit 397f7c42cd775f1dbfced58bc1dfaead48e86440
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Fri Aug 14 09:48:45 2009 +1000
+
+    config: don't shutdown the libhal ctx if it failed to initialize (#23213)
+    
+    Regression introduced by b1c3dc6ae226db178420e3b5f297b94afc87c94c.
+    Shutting down the libhal_ctx if the init failed may cause an abort.
+    This can happen if hald is not yet running at server startup.
+    
+    X.Org Bug 23213 <http://bugs.freedesktop.org/show_bug.cgi?id=23213>
+    
+    Tested-by: Stefan Dirsch
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit 49046088f10cceaea7da97401d742d3fb59371f5)
+
+commit 55c26d8e4d110b689aea9d806e9d4fa7bbbdd32a
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date:   Thu Aug 13 16:37:00 2009 +1000
+
+    Xext: fix up wrong conditions for negative sync transitions.
+    
+    If the counter had a value higher than the trigger value for a negative
+    transition, the trigger value did not get set.
+    
+    The correct sequence of checks is:
+    if (positive transition)
+       if (counter value < trigger value)
+          set up trigger
+    if (negative transition)
+       if (counter value > trigger value)
+          set up trigger
+    
+    Red Hat Bug 501601 <https://bugzilla.redhat.com/show_bug.cgi?id=501601>
+    
+    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+    (cherry picked from commit db568f9eabf3450d8a023597ff007df355b13ea8)
+
 commit f274e595ed56722450f6ecebad70500c92e50c58
 Author: Keith Packard <keithp@keithp.com>
 Date:   Fri Jul 31 23:37:53 2009 -0700
diff --git a/debian/changelog b/debian/changelog
index 0d208ed..27e0759 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.6.3-2) UNRELEASED; urgency=low
+xorg-server (2:1.6.3.901-1) UNRELEASED; urgency=low
 
   [ Julien Cristau ]
   * Add patch stolen from Fedora to add the vboxvideo driver to the
@@ -9,6 +9,8 @@ xorg-server (2:1.6.3-2) UNRELEASED; urgency=low
     Thanks, Bradley Smith!
   * Add patch to return the actually supported version in RenderQueryVersion
     rather than whatever renderproto version the server built against.
+  * New upstream release.
+    + idle counter computation fixes (closes: #542064)
 
   [ David Nusinow ]
   * Update xsfbs to 5693792171d885769e58dcccc053c08b11acd12a

commit 3044711412d0a08ba65a491bd2441c0c8980f5e2
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Aug 25 22:37:16 2009 -0700

    Bump version to 1.6.3.901 (1.6.4 RC1)
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/configure.ac b/configure.ac
index b8a3385..9bb566c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,12 +26,12 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.6.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.6.3.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([dist-bzip2 foreign])
 AM_MAINTAINER_MODE
 
-RELEASE_DATE="2009-7-31"
+RELEASE_DATE="2009-8-25"
 
 dnl this gets generated by autoheader, and thus contains all the defines.  we
 dnl don't ever actually use it, internally.

commit d8e48deb212767c4dfce982e6cb9d1b1fce63b96
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Aug 25 22:29:25 2009 -0700

    Block signals while delivering XTest events (fixes bug 23100)
    
    XTest uses the same event list as all input devices, and input devices
    use it at SIGIO time. This causes mass confusion when a SIGIO event
    occurs in the middle of XTest event processing.
    
    The master branch has a much different fix, using a separate input
    queue which reduces latency that may be caused by XTest event queuing;
    it's a 'nicer' fix in some ways, but this simple fix should solve the
    problem.
    
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/Xext/xtest.c b/Xext/xtest.c
index 9cfe8ca..e5ab7b4 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -384,6 +384,7 @@ ProcXTestFakeInput(client)
     if (screenIsSaved == SCREEN_SAVER_ON)
         dixSaveScreens(serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
 
+    OsBlockSignals();
     GetEventList(&events);
     switch(type) {
         case MotionNotify:
@@ -402,7 +403,6 @@ ProcXTestFakeInput(client)
             break;
     }
 
-    OsBlockSignals();
     for (i = 0; i < nevents; i++)
         mieqEnqueue(dev, (events+i)->event);
     OsReleaseSignals();

commit 76a1839b0a7dcb82e46c43533d252288677c6dbb
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Aug 25 18:07:00 2009 -0700

    Ensure that rotation updates happen frequently
    
    The smart scheduler is designed to minimize scheduler overhead by
    increasing the interval between WaitForSomething calls when a single
    client is running. However, the software rotation code depends on
    its BlockHandler being invoked for screen updates; the long delays
    caused by the smart scheduler optimizations means that screen updates
    can be delayed a long time as well.
    
    The change is simple -- prevent the smart scheduler from increasing
    the scheduling interval while any screen is using software rotation.
    (cherry picked from commit e7dd1efef408effe52d0bd3d3aa0b5d4ee10ed90)
    
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/dix/dispatch.c b/dix/dispatch.c
index 1ca08b6..7e16589 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -247,6 +247,7 @@ long	    SmartScheduleSlice = SMART_SCHEDULE_DEFAULT_INTERVAL;
 long	    SmartScheduleInterval = SMART_SCHEDULE_DEFAULT_INTERVAL;
 long	    SmartScheduleMaxSlice = SMART_SCHEDULE_MAX_SLICE;
 long	    SmartScheduleTime;
+int	    SmartScheduleLatencyLimited = 0;
 static ClientPtr   SmartLastClient;
 static int	   SmartLastIndex[SMART_MAX_PRIORITY-SMART_MIN_PRIORITY+1];
 
@@ -317,7 +318,7 @@ SmartScheduleClient (int *clientReady, int nready)
     /*
      * Adjust slice
      */
-    if (nready == 1)
+    if (nready == 1 && SmartScheduleLatencyLimited == 0)
     {
 	/*
 	 * If it's been a long time since another client
@@ -337,6 +338,23 @@ SmartScheduleClient (int *clientReady, int nready)
     return best;
 }
 
+void
+EnableLimitedSchedulingLatency(void)
+{
+    ++SmartScheduleLatencyLimited;
+    SmartScheduleSlice = SmartScheduleInterval;
+}
+
+void
+DisableLimitedSchedulingLatency(void)
+{
+    --SmartScheduleLatencyLimited;
+
+    /* protect against bugs */
+    if (SmartScheduleLatencyLimited < 0)
+	SmartScheduleLatencyLimited = 0;
+}
+
 #define MAJOROP ((xReq *)client->requestBuffer)->reqType
 
 void
@@ -356,6 +374,7 @@ Dispatch(void)
     if (!clientReady)
 	return;
 
+    SmartScheduleSlice = SmartScheduleInterval;
     while (!dispatchException)
     {
         if (*icheck[0] != *icheck[1])
@@ -466,6 +485,7 @@ Dispatch(void)
     KillAllClients();
     xfree(clientReady);
     dispatchException &= ~DE_RESET;
+    SmartScheduleLatencyLimited = 0;
 }
 
 #undef MAJOROP
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index 0af96c2..bb17df4 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -198,6 +198,7 @@ xf86RotatePrepare (ScreenPtr pScreen)
 		DamageRegister (&(*pScreen->GetScreenPixmap)(pScreen)->drawable,
 				xf86_config->rotation_damage);
 		xf86_config->rotation_damage_registered = TRUE;
+		EnableLimitedSchedulingLatency();
 	    }
 	    
 	    xf86CrtcDamageShadow (crtc);
@@ -308,6 +309,7 @@ xf86RotateDestroy (xf86CrtcPtr crtc)
 	    DamageUnregister (&(*pScreen->GetScreenPixmap)(pScreen)->drawable,
 			      xf86_config->rotation_damage);
 	    xf86_config->rotation_damage_registered = FALSE;
+	    DisableLimitedSchedulingLatency();
 	}
 	DamageDestroy (xf86_config->rotation_damage);
 	xf86_config->rotation_damage = NULL;
diff --git a/include/dix.h b/include/dix.h
index 66af953..9c2c73f 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -229,6 +229,12 @@ extern void WakeupHandler(
     int /*result*/,
     pointer /*pReadmask*/);
 
+void
+EnableLimitedSchedulingLatency(void);
+
+void
+DisableLimitedSchedulingLatency(void);
+
 typedef void (* WakeupHandlerProcPtr)(
     pointer /* blockData */,
     int /* result */,

commit 31dc4fe0be57da4e9458ee490811fbd92598b7a7
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Aug 25 16:58:07 2009 -0700

    Perform rotation redisplay before calling driver block handler (which may flush rendering)
    
    The rotation block handler uses regular driver rendering functions to
    repaint the screen, if those functions queue commands in the driver,
    it's important that the driver block handler be invoked after the
    rotated image is drawn.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    (cherry picked from commit 1740cda7a37abc7d0a169ab4555b446adaa62211)

diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index 6be77d5..0af96c2 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -263,11 +263,12 @@ xf86RotateBlockHandler(int screenNum, pointer blockData,
     ScreenPtr		pScreen = screenInfo.screens[screenNum];
     ScrnInfoPtr		pScrn = xf86Screens[screenNum];
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
+    Bool		rotation_active;
 
+    rotation_active = xf86RotateRedisplay(pScreen);
     pScreen->BlockHandler = xf86_config->BlockHandler;
     (*pScreen->BlockHandler) (screenNum, blockData, pTimeout, pReadmask);
-    if (xf86RotateRedisplay(pScreen))
-    {
+    if (rotation_active) {
 	/* Re-wrap if rotation is still happening */
 	xf86_config->BlockHandler = pScreen->BlockHandler;
 	pScreen->BlockHandler = xf86RotateBlockHandler;

commit cebc0a7aa7a368b2ade3a808195d2e738fda83e9
Author: Keith Packard <keithp@keithp.com>
Date:   Tue Aug 25 16:54:16 2009 -0700

    xf86_reload_cursors: fix cursor position to eliminate jumping after mode set
    
    xf86_reload_cursors restores the cursor to the correct position, but
    that must adjust for cursor hot spot and frame before calling down to
    the hardware function, otherwise the cursor jumps to the wrong
    position until it is repositioned by the user.
    
    Signed-off-by: Keith Packard <keithp@keithp.com>
    (cherry picked from commit 4aab05e3b3231f1ec9795a66a075d17a722634a7)

diff --git a/hw/xfree86/modes/xf86Cursors.c b/hw/xfree86/modes/xf86Cursors.c
index 3106f05..fbd61e9 100644
--- a/hw/xfree86/modes/xf86Cursors.c
+++ b/hw/xfree86/modes/xf86Cursors.c
@@ -640,9 +640,11 @@ xf86_reload_cursors (ScreenPtr screen)
 	    (*cursor_info->LoadCursorARGB) (scrn, cursor);
 	else if (src)
 #endif
-	    (*cursor_info->LoadCursorImage)(cursor_info->pScrn, src);
+	    (*cursor_info->LoadCursorImage)(scrn, src);
 
-	(*cursor_info->SetCursorPosition)(cursor_info->pScrn, x, y);
+	x += scrn->frameX0 + cursor_screen_priv->HotX;
+	y += scrn->frameY0 + cursor_screen_priv->HotY;
+	(*cursor_info->SetCursorPosition)(scrn, x, y);
     }
 }
 

commit 5848fca11f3c5b65bb6634816c0df6aeb6eda87d
Author: Michel Dänzer <daenzer@vmware.com>
Date:   Tue Jun 23 16:45:40 2009 +0200

    glx: Clean up more thoroughly if the drawable of a current context goes away.
    
    Fixes crash when restarting compiz, due to cl->currentContexts[x] being stale.
    (cherry picked from commit 3020b1d43e34fca08cd51f7c7c8ed51497d49ef3)

diff --git a/glx/glxext.c b/glx/glxext.c
index c1a1ac9..ca1d2ec 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -128,8 +128,31 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
 
     for (c = glxAllContexts; c; c = c->next) {
 	if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
+	    int i;
+
 	    (*c->loseCurrent)(c);
-	    __glXFlushContextCache();
+	    c->isCurrent = GL_FALSE;
+	    if (c == __glXLastContext)
+		__glXFlushContextCache();
+
+	    for (i = 1; i < currentMaxClients; i++) {
+		if (clients[i]) {
+		    __GLXclientState *cl = glxGetClient(clients[i]);
+
+		    if (cl->inUse) {
+			int j;
+
+			for (j = 0; j < cl->numCurrentContexts; j++) {
+			    if (cl->currentContexts[j] == c)
+				cl->currentContexts[j] = NULL;
+			}
+		    }
+		}
+	    }
+
+	    if (!c->idExists) {
+		__glXFreeContext(c);
+	    }
 	}
 	if (c->drawPriv == glxPriv)
 	    c->drawPriv = NULL;

commit fad2de1cca057586a88fb20ebf9a9964f8e3e298
Author: Michel Dänzer <daenzer@vmware.com>
Date:   Thu May 14 11:46:41 2009 +0200

    glx: If a destroyed window is bound to the current context, make it not current.
    
    Avoids subsequent crashes due to stale pointers to the DrawableRec, see
    https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 and previous comments.
    
    Signed-off-by: Michel Dänzer <daenzer@vmware.com>
    (cherry picked from commit 2075d4bf9e53b8baef0b919da6c44771220cd4a5)

diff --git a/glx/glxext.c b/glx/glxext.c
index fe99e4e..c1a1ac9 100644
--- a/glx/glxext.c
+++ b/glx/glxext.c
@@ -127,6 +127,10 @@ static Bool DrawableGone(__GLXdrawable *glxPriv, XID xid)
     __GLXcontext *c;
 
     for (c = glxAllContexts; c; c = c->next) {
+	if (c->isCurrent && (c->drawPriv == glxPriv || c->readPriv == glxPriv)) {
+	    (*c->loseCurrent)(c);
+	    __glXFlushContextCache();
+	}
 	if (c->drawPriv == glxPriv)
 	    c->drawPriv = NULL;
 	if (c->readPriv == glxPriv)

commit a32d717ac64b21e15a5736ae4981cdd32f2da56b
Author: Richard Hughes <richard@hughsie.com>
Date:   Mon Aug 17 09:15:32 2009 +0100

    Do not reset lastDeviceEventTime when we do dixSaveScreens
    
    When we turn off DPMS with DPMSModeOff and do dixSaveScreens, don't reset the
    event time else session clients using IDLETIME will be reset.
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 6b5978dcf1f7ac3ecc2f22df06f7000f360e2066)

diff --git a/dix/window.c b/dix/window.c
index a9d00f9..e0b0dec 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -3169,8 +3169,6 @@ dixSaveScreens(ClientPtr client, int on, int mode)
 
     if (on == SCREEN_SAVER_FORCER)
     {
-	UpdateCurrentTimeIf();
-	lastDeviceEventTime = currentTime;
 	if (mode == ScreenSaverReset)
 	    what = SCREEN_SAVER_OFF;
 	else

commit 32115e690f43fde619234722aa674ff1ae1b44ae
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Aug 14 11:48:54 2009 +1000

    dix: update the sprite trace for all masters && floating slaves (#23257)
    
    When the windows are restructured, CheckMotion needs to be called for all
    masters and floating slaves to update the spriteTrace.
    
    X.Org Bug 23257 <http://bugs.freedesktop.org/show_bug.cgi?id=23257>
    (cherry picked from commit 6c292d17053eb2a7e7054e51210f423dbc0cb7e8)
    
    Tested-by: Thomas Jaeger
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    Signed-off-by: Keith Packard <keithp@keithp.com>

diff --git a/dix/events.c b/dix/events.c
index 1786827..f9448ba 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -2661,8 +2661,8 @@ WindowsRestructured(void)
     DeviceIntPtr pDev = inputInfo.devices;
     while(pDev)
     {
-        if (DevHasCursor(pDev))
-            CheckMotion((xEvent *)NULL, pDev);
+        if (pDev->isMaster || !pDev->u.master)
+            CheckMotion(NULL, pDev);
         pDev = pDev->next;
     }
 }

commit af7e62a913c3c5b9639b4557b31537853f3f58bb
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Aug 16 18:07:49 2009 -0700

    xfree86: Link libselinux with Xorg system libraries
    
    Put the reference to -lselinux in XORG_SYS_LIBS so it isn't added as a
    make dependency for libxorg.la. Otherwise, make goes looking for a file
    -lselinux in the current directory, which it obviously won't find.
    
    Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
    Tested-by: Justin P. Mattock <justinmattock@gmail.com>
    (cherry picked from commit c73cd3b265c301b8a54ffe484d6c696f2abefb46)

diff --git a/configure.ac b/configure.ac
index fe7978f..b8a3385 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1239,7 +1239,7 @@ if test "x$XORG" = xyes; then
 	XORG_OSINCS='-I$(top_srcdir)/hw/xfree86/os-support -I$(top_srcdir)/hw/xfree86/os-support/bus -I$(top_srcdir)/os'
 	XORG_INCS="$XORG_DDXINCS $XORG_OSINCS"
 	XORG_CFLAGS="$XORGSERVER_CFLAGS -DHAVE_XORG_CONFIG_H"
-	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB $SELINUX_LIB"
+	XORG_LIBS="$COMPOSITE_LIB $FIXES_LIB $XEXTXORG_LIB $GLX_LIBS $RANDR_LIB $RENDER_LIB $DAMAGE_LIB $MIEXT_DAMAGE_LIB $MIEXT_SHADOW_LIB $XI_LIB $XKB_LIB"
 
 	PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
 	SAVE_LIBS=$LIBS
@@ -1250,7 +1250,7 @@ if test "x$XORG" = xyes; then
 	AC_CHECK_FUNCS([pci_device_enable])
 	LIBS=$SAVE_LIBS
 	CFLAGS=$SAVE_CFLAGS
-	XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $DLOPEN_LIBS $GLX_SYS_LIBS"
+	XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $DLOPEN_LIBS $GLX_SYS_LIBS $SELINUX_LIB"
 	XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
 
 	case $host_os in

commit 397f7c42cd775f1dbfced58bc1dfaead48e86440
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Fri Aug 14 09:48:45 2009 +1000

    config: don't shutdown the libhal ctx if it failed to initialize (#23213)
    
    Regression introduced by b1c3dc6ae226db178420e3b5f297b94afc87c94c.
    Shutting down the libhal_ctx if the init failed may cause an abort.
    This can happen if hald is not yet running at server startup.
    
    X.Org Bug 23213 <http://bugs.freedesktop.org/show_bug.cgi?id=23213>
    
    Tested-by: Stefan Dirsch
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit 49046088f10cceaea7da97401d742d3fb59371f5)

diff --git a/config/hal.c b/config/hal.c
index 59bff66..28f55a0 100644
--- a/config/hal.c
+++ b/config/hal.c
@@ -489,13 +489,13 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
 
     if (!libhal_ctx_set_dbus_connection(info->hal_ctx, info->system_bus)) {
         LogMessage(X_ERROR, "config/hal: couldn't associate HAL context with bus\n");
-        goto out_ctx;
+        goto out_err;
     }
     if (!libhal_ctx_init(info->hal_ctx, &error)) {
         LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n",
 		   error.name ? error.name : "unknown error",
 		   error.message ? error.message : "null");
-        goto out_ctx;
+        goto out_err;
     }
     if (!libhal_device_property_watch_all(info->hal_ctx, &error)) {
         LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n",
@@ -526,19 +526,20 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
 out_ctx:
     dbus_error_free(&error);
 
-    if (info->hal_ctx) {
-        if (!libhal_ctx_shutdown(info->hal_ctx, &error)) {
-            LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
-		       error.name ? error.name : "unknown error",
-		       error.message ? error.message : "null");
-            dbus_error_free(&error);
-        }
-        libhal_ctx_free(info->hal_ctx);
+    if (!libhal_ctx_shutdown(info->hal_ctx, &error)) {
+        LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
+                error.name ? error.name : "unknown error",
+                error.message ? error.message : "null");
+        dbus_error_free(&error);
     }
 
 out_err:
     dbus_error_free(&error);
 
+    if (info->hal_ctx) {
+        libhal_ctx_free(info->hal_ctx);
+    }
+
     info->hal_ctx = NULL;
     info->system_bus = NULL;
 

commit 55c26d8e4d110b689aea9d806e9d4fa7bbbdd32a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date:   Thu Aug 13 16:37:00 2009 +1000

    Xext: fix up wrong conditions for negative sync transitions.
    
    If the counter had a value higher than the trigger value for a negative
    transition, the trigger value did not get set.
    
    The correct sequence of checks is:
    if (positive transition)
       if (counter value < trigger value)
          set up trigger
    if (negative transition)
       if (counter value > trigger value)
          set up trigger
    
    Red Hat Bug 501601 <https://bugzilla.redhat.com/show_bug.cgi?id=501601>
    
    Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    (cherry picked from commit db568f9eabf3450d8a023597ff007df355b13ea8)

diff --git a/Xext/sync.c b/Xext/sync.c
index 424361e..a006ae9 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -1168,28 +1168,24 @@ SyncComputeBracketValues(pCounter, startOver)
 		pnewltval = &psci->bracket_less;
 	    }
 	}
-	else if ( (pTrigger->test_type == XSyncPositiveTransition &&
+	else if (pTrigger->test_type == XSyncNegativeTransition &&
 		   ct != XSyncCounterNeverIncreases)
-		 ||
-		 (pTrigger->test_type == XSyncNegativeTransition &&
+	{
+	    if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+		XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
+	    {
+		psci->bracket_less = pTrigger->test_value;
+		pnewltval = &psci->bracket_less;
+	    }
+	}
+        else if (pTrigger->test_type == XSyncPositiveTransition &&
 		  ct != XSyncCounterNeverDecreases)
-		 )
 	{
-	    if (XSyncValueLessThan(pCounter->value, pTrigger->test_value))
+	    if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+		XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
 	    {
-		if (XSyncValueLessThan(pTrigger->test_value,
-				       psci->bracket_greater))
-		{
-		    psci->bracket_greater = pTrigger->test_value;
-		    pnewgtval = &psci->bracket_greater;
-		}
-		else
-		if (XSyncValueGreaterThan(pTrigger->test_value,
-					  psci->bracket_less))
-		{
-		    psci->bracket_less = pTrigger->test_value;
-		    pnewltval = &psci->bracket_less;
-		}
+		psci->bracket_greater = pTrigger->test_value;
+		pnewgtval = &psci->bracket_greater;
 	    }
 	}
     } /* end for each trigger */


Reply to: