Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master grimoire by Robin Cook (e133365645aeb649de515f86dba23cb6298753c0)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Robin Cook <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master grimoire by Robin Cook (e133365645aeb649de515f86dba23cb6298753c0)
  • Date: Fri, 17 Apr 2009 19:22:55 -0500

GIT changes to master grimoire by Robin Cook <rcook AT wyrms.net>:

xorg-xserver/xorg-server/HISTORY | 4 +
xorg-xserver/xorg-server/PRE_BUILD | 6 +-
xorg-xserver/xorg-server/gnome.patch | 82
+++++++++++++++++++++++++++++++++++
3 files changed, 90 insertions(+), 2 deletions(-)

New commits:
commit e133365645aeb649de515f86dba23cb6298753c0
Author: Robin Cook <rcook AT wyrms.net>
Commit: Robin Cook <rcook AT wyrms.net>

xorg-server: apply patch to fix gnome 2.26 CPU usage issue

diff --git a/xorg-xserver/xorg-server/HISTORY
b/xorg-xserver/xorg-server/HISTORY
index 10cbc8d..6a0023c 100644
--- a/xorg-xserver/xorg-server/HISTORY
+++ b/xorg-xserver/xorg-server/HISTORY
@@ -1,3 +1,7 @@
+2009-04-17 Robin Cook <rcook AT wyrms.net>
+ * PRE_BUILD: apply patch to fix gnome 2.26 cpu issue bug #573472
+
http://cgit.freedesktop.org/xorg/xserver/commit/?id=1f4fb0225b278d1cf4145aebeb0bdd23dc8f62d5
+
2009-04-01 Eric Sandall <sandalle AT sourcemage.org>
* DETAILS: Updated MesaLib to 7.4
SOURCE matches upstream posted MD5
diff --git a/xorg-xserver/xorg-server/PRE_BUILD
b/xorg-xserver/xorg-server/PRE_BUILD
index 930d26f..b54f753 100755
--- a/xorg-xserver/xorg-server/PRE_BUILD
+++ b/xorg-xserver/xorg-server/PRE_BUILD
@@ -4,9 +4,11 @@ glselect mesa &&
cd "$SOURCE_DIRECTORY" &&
unpack_file 2 &&
patch -p1 < $SPELL_DIRECTORY/gl_select.patch &&
+patch -p1 < $SPELL_DIRECTORY/gnome.patch &&
if [[ "$XORG_SERVER_MESA_PATH_PATCH" == "t" ]] ; then
patch -p0 < "$SPELL_DIRECTORY/xorg-server-mesa.patch" &&
# according to lynx^3 this is necessary
- sed -i 's,drm.h,drm/&,' Mesa-7.3/include/GL/internal/dri_interface.h
+ sed -i 's,drm.h,drm/&,' Mesa-7.4/include/GL/internal/dri_interface.h
fi &&
-patch -p1 < "$SPELL_DIRECTORY/evdev-flush.patch"
+patch -p1 < "$SPELL_DIRECTORY/evdev-flush.patch" &&
+patch -p1 < "$SPELL_DIRECTORY/gnome.patch"
diff --git a/xorg-xserver/xorg-server/gnome.patch
b/xorg-xserver/xorg-server/gnome.patch
new file mode 100644
index 0000000..c801cde
--- /dev/null
+++ b/xorg-xserver/xorg-server/gnome.patch
@@ -0,0 +1,82 @@
+diff --git a/Xext/sync.c b/Xext/sync.c
+index 88fc03d..d9e66b3 100644
+--- a/Xext/sync.c
++++ b/Xext/sync.c
+@@ -2281,7 +2281,7 @@ SyncInitServerTime(void)
+* IDLETIME implementation
+*/
+-static pointer IdleTimeCounter;
++static SyncCounter *IdleTimeCounter;
+static XSyncValue *pIdleTimeValueLess;
+static XSyncValue *pIdleTimeValueGreater;
+@@ -2293,38 +2293,69 @@ IdleTimeQueryValue (pointer pCounter, CARD64
*pValue_return)
+}
+static void
+-IdleTimeBlockHandler (pointer env,
+- struct timeval **wt,
+- pointer LastSelectMask)
++IdleTimeBlockHandler(pointer env, struct timeval **wt, pointer
LastSelectMask)
+{
+- XSyncValue idle;
++ XSyncValue idle, old_idle;
++ SyncTriggerList *list = IdleTimeCounter->pTriglist;
++ SyncTrigger *trig;
+if (!pIdleTimeValueLess && !pIdleTimeValueGreater)
+return;
++ old_idle = IdleTimeCounter->value;
+IdleTimeQueryValue (NULL, &idle);
++ IdleTimeCounter->value = idle; /* push, so CheckTrigger works */
+if (pIdleTimeValueLess &&
+XSyncValueLessOrEqual (idle, *pIdleTimeValueLess))
+{
+- AdjustWaitForDelay (wt, 0);
++ /*
++ * We've been idle for less than the threshold value, and someone
++ * wants to know about that, but now we need to know whether they
++ * want level or edge trigger. Check the trigger list against the
++ * current idle time, and if any succeed, bomb out of select()
++ * immediately so we can reschedule.
++ */
++
++ for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
++ trig = list->pTrigger;
++ if (trig->CheckTrigger(trig, old_idle)) {
++ AdjustWaitForDelay(wt, 0);
++ break;
++ }
++ }
+}
+else if (pIdleTimeValueGreater)
+{
+- unsigned long timeout = 0;
++ /*
++ * There's a threshold in the positive direction. If we've been
++ * idle less than it, schedule a wakeup for sometime in the future.
++ * If we've been idle more than it, and someone wants to know about
++ * that level-triggered, schedule an immediate wakeup.
++ */
++ unsigned long timeout = -1;
+- if (XSyncValueLessThan (idle, *pIdleTimeValueGreater))
+- {
++ if (XSyncValueLessThan (idle, *pIdleTimeValueGreater)) {
+XSyncValue value;
+Bool overflow;
+XSyncValueSubtract (&value, *pIdleTimeValueGreater,
+idle, &overflow);
+- timeout = XSyncValueLow32 (value);
++ timeout = min(timeout, XSyncValueLow32 (value));
++ } else {
++ for (list = IdleTimeCounter->pTriglist; list; list = list->next) {
++ trig = list->pTrigger;
++ if (trig->CheckTrigger(trig, old_idle)) {
++ timeout = min(timeout, 0);
++ break;
++ }
++ }
+}
+AdjustWaitForDelay (wt, timeout);
+}
++
++ IdleTimeCounter->value = old_idle; /* pop */
+}
+static void




Archive powered by MHonArc 2.6.24.

Top of Page