1
0

Accepting request 38830 from home:eeich:branches:X11:XOrg

Copy from home:eeich:branches:X11:XOrg/xorg-x11-server via accept of submit request 38830 revision 2.
Request was accepted with message:
Adding to X11:XOrg.

OBS-URL: https://build.opensuse.org/request/show/38830
OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/xorg-x11-server?expand=0&rev=257
This commit is contained in:
Egbert Eich 2010-04-26 12:28:36 +00:00 committed by Git OBS Bridge
parent cae8d67b7c
commit efb9e032e2
2 changed files with 34 additions and 16 deletions

View File

@ -11,11 +11,11 @@ server on 100 percent CPU load since the select timeout is set to 0.
xorg-server-1.8.0/Xext/syncsrv.h | 1 + xorg-server-1.8.0/Xext/syncsrv.h | 1 +
2 files changed, 10 insertions(+), 2 deletions(-) 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/xorg-server-1.8.0/Xext/sync.c b/xorg-server-1.8.0/Xext/sync.c Index: xorg-server-1.8.0/Xext/sync.c
index fd7b1ad..4c45399 100644 ===================================================================
--- a/Xext/sync.c --- xorg-server-1.8.0.orig/Xext/sync.c
+++ b/Xext/sync.c +++ xorg-server-1.8.0/Xext/sync.c
@@ -518,6 +518,10 @@ SyncAlarmTriggerFired(SyncTrigger *pTrigger) @@ -518,6 +518,10 @@ SyncAlarmTriggerFired(SyncTrigger *pTrig
pAlarm->state = XSyncAlarmInactive; pAlarm->state = XSyncAlarmInactive;
} }
} }
@ -26,7 +26,7 @@ index fd7b1ad..4c45399 100644
/* The AlarmNotify event has to have the "new state of the alarm" /* The AlarmNotify event has to have the "new state of the alarm"
* which we can't be sure of until this point. However, it has * which we can't be sure of until this point. However, it has
* to have the "old" trigger test value. That's the reason for * to have the "old" trigger test value. That's the reason for
@@ -730,7 +734,7 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm *pAlarm, Mask mask, @@ -730,7 +734,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
XSyncCounter counter; XSyncCounter counter;
Mask origmask = mask; Mask origmask = mask;
@ -35,7 +35,7 @@ index fd7b1ad..4c45399 100644
while (mask) while (mask)
{ {
@@ -741,7 +745,7 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm *pAlarm, Mask mask, @@ -741,7 +745,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
case XSyncCACounter: case XSyncCACounter:
mask &= ~XSyncCACounter; mask &= ~XSyncCACounter;
/* sanity check in SyncInitTrigger */ /* sanity check in SyncInitTrigger */
@ -44,7 +44,22 @@ index fd7b1ad..4c45399 100644
break; break;
case XSyncCAValueType: case XSyncCAValueType:
@@ -815,6 +819,7 @@ SyncChangeAlarmAttributes(ClientPtr client, SyncAlarm *pAlarm, Mask mask, @@ -808,6 +812,14 @@ SyncChangeAlarmAttributes(ClientPtr clie
return BadMatch;
}
}
+ if (pAlarm->state == XSyncAlarmInactive) {
+ /*
+ * If we are inactive the trigger has been deleted from the counter.
+ * Persuade SyncInitTrigger() to readd it.
+ */
+ origmask |= XSyncCACounter;
+ pAlarm->trigger.pCounter = NULL;
+ }
/* postpone this until now, when we're sure nothing else can go wrong */
if ((status = SyncInitTrigger(client, &pAlarm->trigger, counter,
@@ -815,6 +827,7 @@ SyncChangeAlarmAttributes(ClientPtr clie
return status; return status;
/* XXX spec does not really say to do this - needs clarification */ /* XXX spec does not really say to do this - needs clarification */
@ -52,7 +67,7 @@ index fd7b1ad..4c45399 100644
pAlarm->state = XSyncAlarmActive; pAlarm->state = XSyncAlarmActive;
return Success; return Success;
} }
@@ -1617,8 +1622,10 @@ ProcSyncCreateAlarm(ClientPtr client) @@ -1617,8 +1630,10 @@ ProcSyncCreateAlarm(ClientPtr client)
pAlarm->client = client; pAlarm->client = client;
pAlarm->alarm_id = stuff->id; pAlarm->alarm_id = stuff->id;
@ -63,10 +78,10 @@ index fd7b1ad..4c45399 100644
pAlarm->state = XSyncAlarmInactive; pAlarm->state = XSyncAlarmInactive;
pAlarm->pEventClients = NULL; pAlarm->pEventClients = NULL;
status = SyncChangeAlarmAttributes(client, pAlarm, vmask, status = SyncChangeAlarmAttributes(client, pAlarm, vmask,
diff --git a/xorg-server-1.8.0/Xext/syncsrv.h b/xorg-server-1.8.0/Xext/syncsrv.h Index: xorg-server-1.8.0/Xext/syncsrv.h
index 6d0e3d6..527729d 100644 ===================================================================
--- a/Xext/syncsrv.h --- xorg-server-1.8.0.orig/Xext/syncsrv.h
+++ b/Xext/syncsrv.h +++ xorg-server-1.8.0/Xext/syncsrv.h
@@ -129,6 +129,7 @@ typedef struct _SyncAlarm { @@ -129,6 +129,7 @@ typedef struct _SyncAlarm {
int events; int events;
int state; int state;
@ -75,6 +90,3 @@ index 6d0e3d6..527729d 100644
} SyncAlarm; } SyncAlarm;
typedef struct { typedef struct {
--
1.6.4.2

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Apr 26 10:40:11 UTC 2010 - eich@suse.de
- Updated "Prevent XSync Alarms from senslessly calling CheckTrigger()"
to make sure SyncTriggerInit() readds trigger to counter (bnc #584919).
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 26 12:08:44 CEST 2010 - sndirsch@suse.de Mon Apr 26 12:08:44 CEST 2010 - sndirsch@suse.de