rpms/xorg-x11-server/devel xserver-1.3.0-idletime.patch, NONE, 1.1 xorg-x11-server.spec, 1.237, 1.238

Adam Jackson (ajax) fedora-extras-commits at redhat.com
Mon Jul 2 15:18:37 UTC 2007


Author: ajax

Update of /cvs/pkgs/rpms/xorg-x11-server/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21141

Modified Files:
	xorg-x11-server.spec 
Added Files:
	xserver-1.3.0-idletime.patch 
Log Message:
* Mon Jul 02 2007 Adam Jackson <ajax at redhat.com> 1.3.0.0-13
- Add IDLETIME sync counter for great powersaving justice.
- Conditionalise default font path for F7 spec compatibility.


xserver-1.3.0-idletime.patch:

--- NEW FILE xserver-1.3.0-idletime.patch ---
commit 7e2c935920cafadbd87c351f1a3239932864fb90
Author: Fredrik Höglund <fredrik at kde.org>
Date:   Fri May 18 20:06:14 2007 +0200

    Add a new IDLETIME system sync counter.
    
    This counter exposes the time in milliseconds since the last
    input event. Clients such as screen savers and power managers
    can set an alarm on this counter to find out when the idle time
    reaches a certain value, without having to poll the server.

diff --git a/Xext/sync.c b/Xext/sync.c
index c5441a1..6fc2dcc 100644
--- a/Xext/sync.c
+++ b/Xext/sync.c
@@ -243,6 +243,11 @@ SyncInitServerTime(
     void
 );
 
+static void
+SyncInitIdleTime(
+    void
+);
+
 static void 
 SyncResetProc(
     ExtensionEntry * /* extEntry */
@@ -2400,6 +2405,7 @@ SyncExtensionInit(INITARGS)
      * because there is always a servertime counter.
      */
     SyncInitServerTime();
+    SyncInitIdleTime();
 
 #ifdef DEBUG
     fprintf(stderr, "Sync Extension %d.%d\n",
@@ -2520,3 +2526,116 @@ SyncInitServerTime(void)
 			    ServertimeQueryValue, ServertimeBracketValues);
     pnext_time = NULL;
 }
+
+
+
+/*
+ * IDLETIME implementation
+ */
+
+static pointer IdleTimeCounter;
+static XSyncValue *pIdleTimeValueLess;
+static XSyncValue *pIdleTimeValueGreater;
+
+static void
+IdleTimeQueryValue (pointer pCounter, CARD64 *pValue_return)
+{
+    CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
+    XSyncIntsToValue (pValue_return, idle, 0);
+}
+
+static void
+IdleTimeBlockHandler (pointer env,
+                      struct timeval **wt,
+                      pointer LastSelectMask)
+{
+    XSyncValue idle;
+
+    if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
+	return;
+
+    IdleTimeQueryValue (NULL, &idle);
+
+    if (pIdleTimeValueLess &&
+        XSyncValueLessOrEqual (idle, *pIdleTimeValueLess))
+    {
+	AdjustWaitForDelay (wt, 0);
+    }
+    else if (pIdleTimeValueGreater)
+    {
+	unsigned long timeout = 0;
+
+	if (XSyncValueLessThan (idle, *pIdleTimeValueGreater))
+	{
+	    XSyncValue value;
+	    Bool overflow;
+
+	    XSyncValueSubtract (&value, *pIdleTimeValueGreater,
+	                        idle, &overflow);
+	    timeout = XSyncValueLow32 (value);
+	}
+
+	AdjustWaitForDelay (wt, timeout);
+    }
+}
+
+static void
+IdleTimeWakeupHandler (pointer env,
+                       int rc,
+                       pointer LastSelectMask)
+{
+    XSyncValue idle;
+
+    if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
+	return;
+
+    IdleTimeQueryValue (NULL, &idle);
+
+    if ((pIdleTimeValueGreater &&
+         XSyncValueGreaterThan (idle, *pIdleTimeValueGreater)) ||
+        (pIdleTimeValueLess && XSyncValueLessThan (idle, *pIdleTimeValueLess)))
+    {
+	SyncChangeCounter (IdleTimeCounter, idle);
+    }
+}
+
+static void
+IdleTimeBracketValues (pointer pCounter,
+                       CARD64 *pbracket_less,
+                       CARD64 *pbracket_greater)
+{
+    Bool registered = (pIdleTimeValueLess || pIdleTimeValueGreater);
+
+    if (registered && !pbracket_less && !pbracket_greater)
+    {
+	RemoveBlockAndWakeupHandlers(IdleTimeBlockHandler,
+	                             IdleTimeWakeupHandler,
+	                             NULL);
+    }
+    else if (!registered && (pbracket_less || pbracket_greater))
+    {
+	RegisterBlockAndWakeupHandlers(IdleTimeBlockHandler,
+	                               IdleTimeWakeupHandler,
+	                               NULL);
+    }
+
+    pIdleTimeValueGreater = pbracket_greater;
+    pIdleTimeValueLess    = pbracket_less;
+}
+
+static void
+SyncInitIdleTime (void)
+{
+    CARD64 resolution;
+    XSyncValue idle;
+
+    IdleTimeQueryValue (NULL, &idle);
+    XSyncIntToValue (&resolution, 4);
+
+    IdleTimeCounter = SyncCreateSystemCounter ("IDLETIME", idle, resolution,
+                                               XSyncCounterUnrestricted,
+                                               IdleTimeQueryValue,
+                                               IdleTimeBracketValues);
+
+    pIdleTimeValueLess = pIdleTimeValueGreater = NULL;
+}


Index: xorg-x11-server.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-server/devel/xorg-x11-server.spec,v
retrieving revision 1.237
retrieving revision 1.238
diff -u -r1.237 -r1.238
--- xorg-x11-server.spec	27 Jun 2007 14:07:46 -0000	1.237
+++ xorg-x11-server.spec	2 Jul 2007 15:17:53 -0000	1.238
@@ -9,7 +9,7 @@
 Summary:   X.Org X11 X server
 Name:      xorg-x11-server
 Version:   1.3.0.0
-Release:   12%{?dist}
+Release:   13%{?dist}
 URL:       http://www.x.org
 License:   MIT/X11
 Group:     User Interface/X
@@ -65,6 +65,7 @@
 Patch2007:  xserver-1.3.0-randr12-config-hack.patch
 Patch2008:  xserver-1.3.0-randrama-no-zero-screens.patch
 Patch2009:  xserver-1.3.0-arm-iopl.patch
+Patch2010:  xserver-1.3.0-idletime.patch
 
 # assorted PCI layer shenanigans.  oh the pain.
 Patch2500:  xorg-x11-server-1.2.99-unbreak-domain.patch
@@ -319,6 +320,7 @@
 %patch2007 -p1 -b .randrconfig
 %patch2008 -p1 -b .randrama-zero-screens
 %patch2009 -p1 -b .arm
+%patch2010 -p1 -b .idletime
 
 %patch2500 -p1 -b .unbreak-domains
 %patch2501 -p1 -b .pci-bus-count
@@ -329,6 +331,12 @@
 
 %build
 
+%if %{fedora} == 7
+%define default_font_path "unix/:7100,catalogue:/etc/X11/fontpath.d,built-ins"
+%else
+%define default_font_path "catalogue:/etc/X11/fontpath.d,built-ins"
+%endif
+
 # --with-rgb-path should be superfluous now ?
 # --with-pie ?
 aclocal ; automake -a ; autoconf
@@ -343,7 +351,7 @@
 	--enable-xcsecurity \
 	--enable-xevie \
 	--with-int10=x86emu \
-	--with-default-font-path="catalogue:/etc/X11/fontpath.d,built-ins" \
+	--with-default-font-path=%{default_font_path} \
 	--with-module-dir=%{moduledir} \
 	--with-os-name="Fedora Core 7" \
 	--with-os-vendor="Red Hat, Inc." \
@@ -588,6 +596,10 @@
 
 
 %changelog
+* Mon Jul 02 2007 Adam Jackson <ajax at redhat.com> 1.3.0.0-13
+- Add IDLETIME sync counter for great powersaving justice.
+- Conditionalise default font path for F7 spec compatibility.
+
 * Wed Jun 27 2007 Adam Jackson <ajax at redhat.com> 1.3.0.0-12
 - Tweak %%post Xorg slightly to not demolish ModulePath lines installed by
   the nvidia driver.  (#244359)




More information about the fedora-extras-commits mailing list