* Mon Jul 02 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-13

- Add IDLETIME sync counter for great powersaving justice.
- Conditionalise default font path for F7 spec compatibility.
This commit is contained in:
Adam Jackson 2007-07-02 15:17:53 +00:00
parent 3e0fc774a0
commit fed3940100
2 changed files with 166 additions and 2 deletions

View File

@ -9,7 +9,7 @@
Summary: X.Org X11 X server Summary: X.Org X11 X server
Name: xorg-x11-server Name: xorg-x11-server
Version: 1.3.0.0 Version: 1.3.0.0
Release: 12%{?dist} Release: 13%{?dist}
URL: http://www.x.org URL: http://www.x.org
License: MIT/X11 License: MIT/X11
Group: User Interface/X Group: User Interface/X
@ -65,6 +65,7 @@ Patch2006: xserver-1.3.0-less-randr-fakerama.patch
Patch2007: xserver-1.3.0-randr12-config-hack.patch Patch2007: xserver-1.3.0-randr12-config-hack.patch
Patch2008: xserver-1.3.0-randrama-no-zero-screens.patch Patch2008: xserver-1.3.0-randrama-no-zero-screens.patch
Patch2009: xserver-1.3.0-arm-iopl.patch Patch2009: xserver-1.3.0-arm-iopl.patch
Patch2010: xserver-1.3.0-idletime.patch
# assorted PCI layer shenanigans. oh the pain. # assorted PCI layer shenanigans. oh the pain.
Patch2500: xorg-x11-server-1.2.99-unbreak-domain.patch Patch2500: xorg-x11-server-1.2.99-unbreak-domain.patch
@ -319,6 +320,7 @@ Xserver source code needed to build VNC server (Xvnc)
%patch2007 -p1 -b .randrconfig %patch2007 -p1 -b .randrconfig
%patch2008 -p1 -b .randrama-zero-screens %patch2008 -p1 -b .randrama-zero-screens
%patch2009 -p1 -b .arm %patch2009 -p1 -b .arm
%patch2010 -p1 -b .idletime
%patch2500 -p1 -b .unbreak-domains %patch2500 -p1 -b .unbreak-domains
%patch2501 -p1 -b .pci-bus-count %patch2501 -p1 -b .pci-bus-count
@ -329,6 +331,12 @@ Xserver source code needed to build VNC server (Xvnc)
%build %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-rgb-path should be superfluous now ?
# --with-pie ? # --with-pie ?
aclocal ; automake -a ; autoconf aclocal ; automake -a ; autoconf
@ -343,7 +351,7 @@ aclocal ; automake -a ; autoconf
--enable-xcsecurity \ --enable-xcsecurity \
--enable-xevie \ --enable-xevie \
--with-int10=x86emu \ --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-module-dir=%{moduledir} \
--with-os-name="Fedora Core 7" \ --with-os-name="Fedora Core 7" \
--with-os-vendor="Red Hat, Inc." \ --with-os-vendor="Red Hat, Inc." \
@ -588,6 +596,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog %changelog
* Mon Jul 02 2007 Adam Jackson <ajax@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@redhat.com> 1.3.0.0-12 * Wed Jun 27 2007 Adam Jackson <ajax@redhat.com> 1.3.0.0-12
- Tweak %%post Xorg slightly to not demolish ModulePath lines installed by - Tweak %%post Xorg slightly to not demolish ModulePath lines installed by
the nvidia driver. (#244359) the nvidia driver. (#244359)

View File

@ -0,0 +1,152 @@
commit 7e2c935920cafadbd87c351f1a3239932864fb90
Author: Fredrik Höglund <fredrik@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;
+}