gnome-screen saver fades out to black before activating.
A bug in xorg-server prevents the fade out from being
interrupted by moving the cursor.

Added patch 204_fix-neg-sync-transition.patch from:
xorg-server_1.9.0-0ubuntu7.6.diff.gz

https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/595555
https://bugzilla.redhat.com/show_bug.cgi?id=612620

There are been quite a lot of other fixes in the xorg-server 1.9
branch. It would probably be a good idea update.
http://cgit.freedesktop.org/xorg/xserver/log/?h=server-1.9-branch

Signed-off-by: George McCollister <[email protected]>
---
 .../204_fix-neg-sync-transition.patch              |   84 ++++++++++++++++++++
 patches/xorg-server-1.9.3/series                   |    1 +
 2 files changed, 85 insertions(+), 0 deletions(-)
 create mode 100644 patches/xorg-server-1.9.3/204_fix-neg-sync-transition.patch

diff --git a/patches/xorg-server-1.9.3/204_fix-neg-sync-transition.patch 
b/patches/xorg-server-1.9.3/204_fix-neg-sync-transition.patch
new file mode 100644
index 0000000..f10fb32
--- /dev/null
+++ b/patches/xorg-server-1.9.3/204_fix-neg-sync-transition.patch
@@ -0,0 +1,84 @@
+commit da218289275e67e49d801d58dd818d237de8a9bc
+Author: Christopher James Halse Rogers <[email protected]>
+Date:   Tue Aug 24 13:30:25 2010 +1000
+
+    Xext: Fix edge case with {Positive,Negative}Transition triggers.
+    
+    The {Positive,Negative}Transition triggers only fire when the counter
+    goes from strictly {below,above} the threshold.  If
+    SyncComputeBracketValues gets called exactly at this threshold we may 
update
+    the bracket values so that the counter is not updated past the threshold.
+    
+    Signed-off-by: Christopher James Halse Rogers 
<[email protected]>
+
+diff --git a/Xext/sync.c b/Xext/sync.c
+index a51262a..c00e692 100644
+--- a/Xext/sync.c
++++ b/Xext/sync.c
+@@ -959,6 +959,17 @@ SyncComputeBracketValues(SyncCounter *pCounter)
+           {
+               psci->bracket_less = pTrigger->test_value;
+               pnewltval = &psci->bracket_less;
++          } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
++                     XSyncValueLessThan(pTrigger->test_value,
++                                        psci->bracket_greater))
++          {
++              /*
++               * The value is exactly equal to our threshold.  We want one
++               * more event in the positive direction to ensure we pick up
++               * when the value *exceeds* this threshold.
++               */
++              psci->bracket_greater = pTrigger->test_value;
++              pnewgtval = &psci->bracket_greater;
+           }
+       }
+         else if (pTrigger->test_type == XSyncPositiveTransition &&
+@@ -969,6 +980,17 @@ SyncComputeBracketValues(SyncCounter *pCounter)
+           {
+               psci->bracket_greater = pTrigger->test_value;
+               pnewgtval = &psci->bracket_greater;
++          } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
++                     XSyncValueGreaterThan(pTrigger->test_value,
++                                           psci->bracket_less))
++          {
++              /*
++               * The value is exactly equal to our threshold.  We want one
++               * more event in the negative direction to ensure we pick up
++               * when the value is less than this threshold.
++               */
++              psci->bracket_less = pTrigger->test_value;
++              pnewltval = &psci->bracket_less;
+           }
+       }
+     } /* end for each trigger */
+commit d9e9c0c3cf0456f78b6eed3290e6a418e38963fb
+Author: Christopher James Halse Rogers <[email protected]>
+Date:   Tue Aug 24 13:35:05 2010 +1000
+
+    IDLETIME: Fix edge-case in IdleTimeBlockHandler
+    
+    Ensure that if we're called exactly on the threshold of a
+    NegativeTransition trigger that we reshedule to pick up
+    an idle time over the threshold.
+    
+    Signed-off-by: Christopher James Halse Rogers 
<[email protected]>
+
+diff --git a/Xext/sync.c b/Xext/sync.c
+index c00e692..314b63e 100644
+--- a/Xext/sync.c
++++ b/Xext/sync.c
+@@ -2322,6 +2322,14 @@ IdleTimeBlockHandler(pointer env, struct timeval **wt, 
pointer LastSelectMask)
+               break;
+           }
+       }
++      /* 
++       * We've been called exactly on the idle time, but we have a
++       * NegativeTransition trigger which requires a transition from an
++       * idle time greater than this.  Schedule a wakeup for the next
++       * millisecond so we won't miss a transition.
++       */
++      if (XSyncValueEqual (idle, *pIdleTimeValueLess))
++          AdjustWaitForDelay(wt, 1);
+     }
+     else if (pIdleTimeValueGreater)
+     {
diff --git a/patches/xorg-server-1.9.3/series b/patches/xorg-server-1.9.3/series
index aa40d1d..2050ec2 100644
--- a/patches/xorg-server-1.9.3/series
+++ b/patches/xorg-server-1.9.3/series
@@ -3,3 +3,4 @@ loader-when-creating-sdksyms.c-only-include-shmint.h.patch
 remove_udev_if_disabled.diff
 remove_dbus_if_disabled.diff
 remove_hal_if_disabled.diff
+204_fix-neg-sync-transition.patch
-- 
1.7.8.4


-- 
ptxdist mailing list
[email protected]

Reply via email to