Hello community,
here is the log from the commit of package xorg-x11-server for openSUSE:13.1 checked in at 2013-11-06 11:02:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:13.1/xorg-x11-server (Old)
and /work/SRC/openSUSE:13.1/.xorg-x11-server.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server"
Changes:
--------
--- /work/SRC/openSUSE:13.1/xorg-x11-server/xorg-x11-server.changes 2013-10-19 16:51:00.000000000 +0200
+++ /work/SRC/openSUSE:13.1/.xorg-x11-server.new/xorg-x11-server.changes 2013-11-06 11:02:31.000000000 +0100
@@ -1,0 +2,25 @@
+Fri Nov 1 13:46:06 UTC 2013 - msrb@suse.com
+
+- N_randr_fix_abi.patch
+ * Fixes compatibility with nvidia binary drivers. (bnc#849152)
+
+-------------------------------------------------------------------
+Mon Oct 28 08:00:16 UTC 2013 - sndirsch@suse.com
+
+- Update to prerelease 1.14.4-rc1 (1.14.3.901)
+ * bugfixes
+ * fixes for security issue CVE-2013-4396
+- obsoletes u_Avoid-use-after-free-in-dix-dixfonts.c-doImageText.patch
+
+-------------------------------------------------------------------
+Fri Oct 25 12:31:46 UTC 2013 - msrb@suse.com
+
+- Add U_randr_dont_directly_set_changed_bits_in_randr_screen.patch,
+ U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch,
+ u_randr_send_rrproviderchangenotify_event.patch,
+ u_randr_send_rrresourcechangenotify_event.patch,
+ u_randr_deliver_output_and_crtc_events_of_attached_output.patch,
+ u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
+ * Send randr 1.4 events to allow tools to react to new providers. (fate#316408, fate#316409)
+
+-------------------------------------------------------------------
Old:
----
u_Avoid-use-after-free-in-dix-dixfonts.c-doImageText.patch
xorg-server-1.14.3.tar.bz2
New:
----
N_randr_fix_abi.patch
U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
u_randr_deliver_output_and_crtc_events_of_attached_output.patch
u_randr_send_rrproviderchangenotify_event.patch
u_randr_send_rrresourcechangenotify_event.patch
xorg-server-1.14.3.901.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xorg-x11-server.spec ++++++
--- /var/tmp/diff_new_pack.tQPcVH/_old 2013-11-06 11:02:31.000000000 +0100
+++ /var/tmp/diff_new_pack.tQPcVH/_new 2013-11-06 11:02:31.000000000 +0100
@@ -18,7 +18,7 @@
Name: xorg-x11-server
-%define dirsuffix 1.14.3
+%define dirsuffix 1.14.3.901
Summary: X
License: GPL-2.0+ and MIT
@@ -156,7 +156,14 @@
Patch230: u_xserver_xvfb-randr.patch
Patch240: U_revert_dri2_realloc_dri2_drawable_if-pixmap_serial_changes.patch
-Patch241: u_Avoid-use-after-free-in-dix-dixfonts.c-doImageText.patch
+
+Patch242: U_randr_dont_directly_set_changed_bits_in_randr_screen.patch
+Patch243: U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch
+Patch244: u_randr_send_rrproviderchangenotify_event.patch
+Patch245: u_randr_send_rrresourcechangenotify_event.patch
+Patch246: u_randr_deliver_output_and_crtc_events_of_attached_output.patch
+Patch247: u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch
+Patch248: N_randr_fix_abi.patch
%description
This package contains the X.Org Server.
@@ -242,7 +249,14 @@
%patch230 -p1
%patch240 -p1
-%patch241 -p1
+
+%patch242 -p1
+%patch243 -p1
+%patch244 -p1
+%patch245 -p1
+%patch246 -p1
+%patch247 -p1
+%patch248 -p1
%build
autoreconf -fi
++++++ N_randr_fix_abi.patch ++++++
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 15299fd..03ed146 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -301,7 +301,6 @@ typedef struct _rrScrPriv {
Bool changed; /* some config changed */
Bool configChanged; /* configuration changed */
Bool layoutChanged; /* screen layout changed */
- Bool resourcesChanged; /* screen resources change */
CARD16 minWidth, minHeight;
CARD16 maxWidth, maxHeight;
@@ -338,6 +337,7 @@ typedef struct _rrScrPriv {
RRProviderDestroyProcPtr rrProviderDestroy;
+ Bool resourcesChanged; /* screen resources change */
} rrScrPrivRec, *rrScrPrivPtr;
extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec;
++++++ U_randr_dont_directly_set_changed_bits_in_randr_screen.patch ++++++
From f9c8248b8326ad01f33f31531c6b2479baf80f02 Mon Sep 17 00:00:00 2001
From: Dave Airlie
Date: Wed, 9 Jan 2013 14:23:57 +1000
Subject: [PATCH] randr: don't directly set changed bits in randr screen
Introduce a wrapper interface so we can fix things up for multi-gpu
situations later.
This just introduces the API for now.
Reviewed-by: Peter Hutterer
Signed-off-by: Dave Airlie
diff --git a/randr/randr.c b/randr/randr.c
index f0decfc..11f88b2 100644
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -464,6 +464,14 @@ TellChanged(WindowPtr pWin, pointer value)
return WT_WALKCHILDREN;
}
+void
+RRSetChanged(ScreenPtr pScreen)
+{
+ rrScrPriv(pScreen);
+
+ pScrPriv->changed = TRUE;
+}
+
/*
* Something changed; send events and adjust pointer position
*/
diff --git a/randr/randrstr.h b/randr/randrstr.h
index 2517479..2babfed 100644
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -486,6 +486,10 @@ extern _X_EXPORT void
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
/* randr.c */
+/* set a screen change on the primary screen */
+extern _X_EXPORT void
+RRSetChanged(ScreenPtr pScreen);
+
/*
* Send all pending events
*/
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 721b05a..2f76b62 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -39,7 +39,7 @@ RRCrtcChanged(RRCrtcPtr crtc, Bool layoutChanged)
if (pScreen) {
rrScrPriv(pScreen);
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
/*
* Send ConfigureNotify on any layout change
*/
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
index 1408d6f..fc57bd4 100644
--- a/randr/rrinfo.c
+++ b/randr/rrinfo.c
@@ -225,7 +225,7 @@ RRScreenSetSizeRange(ScreenPtr pScreen,
pScrPriv->minHeight = minHeight;
pScrPriv->maxWidth = maxWidth;
pScrPriv->maxHeight = maxHeight;
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
pScrPriv->configChanged = TRUE;
}
diff --git a/randr/rroutput.c b/randr/rroutput.c
index 88781ba..922d61f 100644
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -36,7 +36,7 @@ RROutputChanged(RROutputPtr output, Bool configChanged)
output->changed = TRUE;
if (pScreen) {
rrScrPriv(pScreen);
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
if (configChanged)
pScrPriv->configChanged = TRUE;
}
diff --git a/randr/rrscreen.c b/randr/rrscreen.c
index 39340cc..36179ae 100644
--- a/randr/rrscreen.c
+++ b/randr/rrscreen.c
@@ -143,7 +143,7 @@ RRScreenSizeNotify(ScreenPtr pScreen)
pScrPriv->height = pScreen->height;
pScrPriv->mmWidth = pScreen->mmWidth;
pScrPriv->mmHeight = pScreen->mmHeight;
- pScrPriv->changed = TRUE;
+ RRSetChanged(pScreen);
/* pScrPriv->sizeChanged = TRUE; */
RRTellChanged(pScreen);
++++++ U_randr_report_changes_when_we_disconnect_a_GPU_slave.patch ++++++
From 9d26e8eaf5a2d7c3e65670ac20254c60f665c463 Mon Sep 17 00:00:00 2001
From: Dave Airlie
Date: Wed, 9 Jan 2013 14:26:35 +1000
Subject: [PATCH] randr: report changes when we disconnect a GPU slave
When we disconnect an output/offload slave set the changed bits,
so a later TellChanged can do something.
Then when we remove a GPU slave device, sent change notification
to the protocol screen.
This allows hot unplugged USB devices to disappear in clients.
Reviewed-by: Peter Hutterer
Signed-off-by: Dave Airlie
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
index 9034dad..bcb65ff 100644
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -47,6 +47,7 @@
#include "Pci.h"
#include "xf86platformBus.h"
+#include "randrstr.h"
int platformSlotClaimed;
int xf86_num_platform_devices;
@@ -499,7 +500,7 @@ xf86platformRemoveDevice(int index)
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
xf86_remove_platform_device(index);
-
+ RRTellChanged(xf86Screens[0]->pScreen);
out:
return;
}
diff --git a/hw/xfree86/modes/xf86RandR12.c b/hw/xfree86/modes/xf86RandR12.c
index 25beee6..2817aaa 100644
--- a/hw/xfree86/modes/xf86RandR12.c
+++ b/hw/xfree86/modes/xf86RandR12.c
@@ -1896,10 +1896,12 @@ xf86RandR14ProviderDestroy(ScreenPtr screen, RRProviderPtr provider)
if (config->randr_provider->offload_sink) {
DetachOffloadGPU(screen);
config->randr_provider->offload_sink = NULL;
+ RRSetChanged(screen);
}
else if (config->randr_provider->output_source) {
DetachOutputGPU(screen);
config->randr_provider->output_source = NULL;
+ RRSetChanged(screen);
}
else if (screen->current_master)
DetachUnboundGPU(screen);
++++++ u_randr_allow_rrselectinput_for_providerchange_and_resourcechange_events.patch ++++++
From 6d0da2a4d5c31d055674f482d3d1afe308ed8eeb Mon Sep 17 00:00:00 2001
From: Michal Srb
Date: Mon, 7 Oct 2013 17:55:30 +0300
Subject: [PATCH] randr: Allow RRSelectInput for ProviderChange and
ResourceChange events.
From 0ad777cecd414d4c4b3326cc25580833535b0c0b Mon Sep 17 00:00:00 2001
From: Michal Srb
Date: Fri, 4 Oct 2013 17:46:50 +0300
Subject: [PATCH] randr: deliver Output and Crtc events of attached output
Reviewed-by: Dave Airlie
Signed-off-by: Michal Srb
diff --git a/randr/rrdispatch.c b/randr/rrdispatch.c
index 7fbc9f0..f050d38 100644
--- a/randr/rrdispatch.c
+++ b/randr/rrdispatch.c
@@ -92,7 +92,9 @@ ProcRRSelectInput(ClientPtr client)
RRCrtcChangeNotifyMask |
RROutputChangeNotifyMask |
RROutputPropertyNotifyMask |
- RRProviderPropertyNotifyMask)) {
+ RRProviderChangeNotifyMask |
+ RRProviderPropertyNotifyMask |
+ RRResourceChangeNotifyMask)) {
ScreenPtr pScreen = pWin->drawable.pScreen;
rrScrPriv(pScreen);
++++++ u_randr_deliver_output_and_crtc_events_of_attached_output.patch ++++++
providers.
Consider all attached output providers when looking for changed outputs and
crtcs.
Reviewed-by: Dave Airlie
Signed-off-by: Michal Srb
diff --git a/randr/randr.c b/randr/randr.c
index 9cec6f6..3c51427 100755
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -478,6 +478,16 @@ TellChanged(WindowPtr pWin, pointer value)
if (crtc->changed)
RRDeliverCrtcEvent(client, pWin, crtc);
}
+
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ for (i = 0; i < pSlaveScrPriv->numCrtcs; i++) {
+ RRCrtcPtr crtc = pSlaveScrPriv->crtcs[i];
+
+ if (crtc->changed)
+ RRDeliverCrtcEvent(client, pWin, crtc);
+ }
+ }
}
if (pRREvent->mask & RROutputChangeNotifyMask) {
@@ -487,6 +497,16 @@ TellChanged(WindowPtr pWin, pointer value)
if (output->changed)
RRDeliverOutputEvent(client, pWin, output);
}
+
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ for (i = 0; i < pSlaveScrPriv->numOutputs; i++) {
+ RROutputPtr output = pSlaveScrPriv->outputs[i];
+
+ if (output->changed)
+ RRDeliverOutputEvent(client, pWin, output);
+ }
+ }
}
if (pRREvent->mask & RRProviderChangeNotifyMask) {
@@ -581,6 +601,10 @@ RRTellChanged(ScreenPtr pScreen)
xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
pSlaveScrPriv = rrGetScrPriv(iter);
pSlaveScrPriv->provider->changed = FALSE;
+ for (i = 0; i < pSlaveScrPriv->numOutputs; i++)
+ pSlaveScrPriv->outputs[i]->changed = FALSE;
+ for (i = 0; i < pSlaveScrPriv->numCrtcs; i++)
+ pSlaveScrPriv->crtcs[i]->changed = FALSE;
}
xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
pSlaveScrPriv = rrGetScrPriv(iter);
++++++ u_randr_send_rrproviderchangenotify_event.patch ++++++
From 6ec75c2f85c14c805f4433a17a56774594d8641c Mon Sep 17 00:00:00 2001
From: Michal Srb
Date: Fri, 4 Oct 2013 15:59:34 +0300
Subject: [PATCH] randr: send RRProviderChangeNotify event
Send RRProviderChangeNotify event when a provider becomes output source or
offload sink.
Reviewed-by: Dave Airlie
Signed-off-by: Michal Srb
diff --git a/randr/randr.c b/randr/randr.c
old mode 100644
new mode 100755
index cb6fce7..fa0a4da
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -426,6 +426,8 @@ TellChanged(WindowPtr pWin, pointer value)
RREventPtr *pHead, pRREvent;
ClientPtr client;
ScreenPtr pScreen = pWin->drawable.pScreen;
+ ScreenPtr iter;
+ rrScrPrivPtr pSlaveScrPriv;
rrScrPriv(pScreen);
int i;
@@ -460,6 +462,24 @@ TellChanged(WindowPtr pWin, pointer value)
RRDeliverOutputEvent(client, pWin, output);
}
}
+
+ if (pRREvent->mask & RRProviderChangeNotifyMask) {
+ xorg_list_for_each_entry(iter, &pScreen->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ xorg_list_for_each_entry(iter, &pScreen->offload_slave_list, offload_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ if (pSlaveScrPriv->provider->changed)
+ RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
+ }
+ }
}
return WT_WALKCHILDREN;
}
@@ -496,6 +516,8 @@ RRTellChanged(ScreenPtr pScreen)
rrScrPriv(pScreen);
rrScrPrivPtr mastersp;
int i;
+ ScreenPtr iter;
+ rrScrPrivPtr pSlaveScrPriv;
if (pScreen->isGPU) {
master = pScreen->current_master;
@@ -519,6 +541,20 @@ RRTellChanged(ScreenPtr pScreen)
pScrPriv->outputs[i]->changed = FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++)
pScrPriv->crtcs[i]->changed = FALSE;
+
+ xorg_list_for_each_entry(iter, &master->output_slave_list, output_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+ xorg_list_for_each_entry(iter, &master->offload_slave_list, offload_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+ xorg_list_for_each_entry(iter, &master->unattached_list, unattached_head) {
+ pSlaveScrPriv = rrGetScrPriv(iter);
+ pSlaveScrPriv->provider->changed = FALSE;
+ }
+
if (mastersp->layoutChanged) {
pScrPriv->layoutChanged = FALSE;
RRPointerScreenConfigured(master);
diff --git a/randr/randrstr.h b/randr/randrstr.h
old mode 100644
new mode 100755
index 2babfed..c933349
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -164,6 +164,7 @@ struct _rrProvider {
int nameLength;
RRPropertyPtr properties;
Bool pendingProperties;
+ Bool changed;
struct _rrProvider *offload_sink;
struct _rrProvider *output_source;
};
@@ -923,6 +924,9 @@ RRProviderSetCapabilities(RRProviderPtr provider, uint32_t capabilities);
extern _X_EXPORT Bool
RRProviderLookup(XID id, RRProviderPtr *provider_p);
+extern _X_EXPORT void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider);
+
/* rrproviderproperty.c */
extern _X_EXPORT void
diff --git a/randr/rrprovider.c b/randr/rrprovider.c
old mode 100644
new mode 100755
index b321e62..2334ad2
--- a/randr/rrprovider.c
+++ b/randr/rrprovider.c
@@ -304,6 +304,9 @@ ProcRRSetProviderOutputSource(ClientPtr client)
pScrPriv->rrProviderSetOutputSource(pScreen, provider, source_provider);
+ provider->changed = TRUE;
+ RRSetChanged(pScreen);
+
RRTellChanged (pScreen);
return Success;
@@ -333,6 +336,9 @@ ProcRRSetProviderOffloadSink(ClientPtr client)
pScrPriv->rrProviderSetOffloadSink(pScreen, provider, sink_provider);
+ provider->changed = TRUE;
+ RRSetChanged(pScreen);
+
RRTellChanged (pScreen);
return Success;
@@ -357,6 +363,7 @@ RRProviderCreate(ScreenPtr pScreen, const char *name,
provider->nameLength = nameLength;
memcpy(provider->name, name, nameLength);
provider->name[nameLength] = '\0';
+ provider->changed = FALSE;
if (!AddResource (provider->id, RRProviderType, (pointer) provider))
return NULL;
@@ -416,3 +423,21 @@ RRProviderLookup(XID id, RRProviderPtr *provider_p)
return TRUE;
return FALSE;
}
+
+void
+RRDeliverProviderEvent(ClientPtr client, WindowPtr pWin, RRProviderPtr provider)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ rrScrPriv(pScreen);
+
+ xRRProviderChangeNotifyEvent pe = {
+ .type = RRNotify + RREventBase,
+ .subCode = RRNotify_ProviderChange,
+ .timestamp = pScrPriv->lastSetTime.milliseconds,
+ .window = pWin->drawable.id,
+ .provider = provider->id
+ };
+
+ WriteEventsToClient(client, 1, (xEvent *) &pe);
+}
++++++ u_randr_send_rrresourcechangenotify_event.patch ++++++
From 7fa3e6ac35602ba7025e9283e9b2a7ab21ab77fb Mon Sep 17 00:00:00 2001
From: Michal Srb
Date: Fri, 4 Oct 2013 16:11:18 +0300
Subject: [PATCH] randr: send RRResourceChangeNotify event
Send RRResourceChangeNotify event when provider, output or crtc was created or
destroyed. I.e. when the list of resources returned by RRGetScreenResources and
RRGetProviders changes.
Reviewed-by: Dave Airlie
Signed-off-by: Michal Srb
diff --git a/hw/xfree86/common/xf86platformBus.c b/hw/xfree86/common/xf86platformBus.c
old mode 100644
new mode 100755
index e368dee..33b2b7d
--- a/hw/xfree86/common/xf86platformBus.c
+++ b/hw/xfree86/common/xf86platformBus.c
@@ -466,6 +466,9 @@ xf86platformAddDevice(int index)
/* attach unbound to 0 protocol screen */
AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen);
+ RRResourcesChanged(xf86Screens[0]->pScreen);
+ RRTellChanged(xf86Screens[0]->pScreen);
+
return 0;
}
@@ -508,6 +511,8 @@ xf86platformRemoveDevice(int index)
xf86UnclaimPlatformSlot(&xf86_platform_devices[index], NULL);
xf86_remove_platform_device(index);
+
+ RRResourcesChanged(xf86Screens[0]->pScreen);
RRTellChanged(xf86Screens[0]->pScreen);
out:
return;
diff --git a/randr/randr.c b/randr/randr.c
index fa0a4da..9cec6f6 100755
--- a/randr/randr.c
+++ b/randr/randr.c
@@ -420,6 +420,32 @@ RRExtensionInit(void)
#endif
}
+void
+RRResourcesChanged(ScreenPtr pScreen)
+{
+ rrScrPriv(pScreen);
+ pScrPriv->resourcesChanged = TRUE;
+
+ RRSetChanged(pScreen);
+}
+
+static void
+RRDeliverResourceEvent(ClientPtr client, WindowPtr pWin)
+{
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ rrScrPriv(pScreen);
+
+ xRRResourceChangeNotifyEvent re = {
+ .type = RRNotify + RREventBase,
+ .subCode = RRNotify_ResourceChange,
+ .timestamp = pScrPriv->lastSetTime.milliseconds,
+ .window = pWin->drawable.id
+ };
+
+ WriteEventsToClient(client, 1, (xEvent *) &re);
+}
+
static int
TellChanged(WindowPtr pWin, pointer value)
{
@@ -480,6 +506,12 @@ TellChanged(WindowPtr pWin, pointer value)
RRDeliverProviderEvent(client, pWin, pSlaveScrPriv->provider);
}
}
+
+ if (pRREvent->mask & RRResourceChangeNotifyMask) {
+ if (pScrPriv->resourcesChanged) {
+ RRDeliverResourceEvent(client, pWin);
+ }
+ }
}
return WT_WALKCHILDREN;
}
@@ -536,7 +568,11 @@ RRTellChanged(ScreenPtr pScreen)
}
pScrPriv->changed = FALSE;
mastersp->changed = FALSE;
+
WalkTree(master, TellChanged, (pointer) master);
+
+ mastersp->resourcesChanged = FALSE;
+
for (i = 0; i < pScrPriv->numOutputs; i++)
pScrPriv->outputs[i]->changed = FALSE;
for (i = 0; i < pScrPriv->numCrtcs; i++)
diff --git a/randr/randrstr.h b/randr/randrstr.h
index c933349..15299fd 100755
--- a/randr/randrstr.h
+++ b/randr/randrstr.h
@@ -301,6 +301,7 @@ typedef struct _rrScrPriv {
Bool changed; /* some config changed */
Bool configChanged; /* configuration changed */
Bool layoutChanged; /* screen layout changed */
+ Bool resourcesChanged; /* screen resources change */
CARD16 minWidth, minHeight;
CARD16 maxWidth, maxHeight;
@@ -486,6 +487,9 @@ extern _X_EXPORT int
extern _X_EXPORT void
RRDeliverScreenEvent(ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
+extern _X_EXPORT void
+ RRResourcesChanged(ScreenPtr pScreen);
+
/* randr.c */
/* set a screen change on the primary screen */
extern _X_EXPORT void
diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
old mode 100644
new mode 100755
index 2f76b62..99b3dca
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -102,6 +102,8 @@ RRCrtcCreate(ScreenPtr pScreen, void *devPrivate)
crtc->pScreen = pScreen;
pScrPriv->crtcs[pScrPriv->numCrtcs++] = crtc;
+ RRResourcesChanged(pScreen);
+
return crtc;
}
@@ -669,6 +671,8 @@ RRCrtcDestroyResource(pointer value, XID pid)
break;
}
}
+
+ RRResourcesChanged(pScreen);
}
if (crtc->scanout_pixmap)
diff --git a/randr/rroutput.c b/randr/rroutput.c
old mode 100644
new mode 100755
index 922d61f..2b0b82f
--- a/randr/rroutput.c
+++ b/randr/rroutput.c
@@ -101,6 +101,9 @@ RROutputCreate(ScreenPtr pScreen,
return NULL;
pScrPriv->outputs[pScrPriv->numOutputs++] = output;
+
+ RRResourcesChanged(pScreen);
+
return output;
}
@@ -355,6 +358,8 @@ RROutputDestroyResource(pointer value, XID pid)
break;
}
}
+
+ RRResourcesChanged(pScreen);
}
if (output->modes) {
for (m = 0; m < output->numModes; m++)
++++++ xorg-server-1.14.3.tar.bz2 -> xorg-server-1.14.3.901.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/ChangeLog new/xorg-server-1.14.3.901/ChangeLog
--- old/xorg-server-1.14.3/ChangeLog 2013-09-13 05:18:12.000000000 +0200
+++ new/xorg-server-1.14.3.901/ChangeLog 2013-10-26 21:52:19.000000000 +0200
@@ -1,3 +1,407 @@
+commit ca11bdc890f14fbe2ab4c32fb7a36ae50672b81a
+Author: Matt Dew
+Date: Sat Oct 26 13:51:05 2013 -0600
+
+ Bump version from 1.14.3 to 1.14.3.901.
+
+commit 07069f5d71dd0869fe9a6f9ab87c467e7ec75011
+Author: Peter Hutterer
+Date: Thu Oct 17 12:02:27 2013 +1000
+
+ sync: split updating and triggering a counter up
+
+ Now that the brackets are always the nearest change points (regardless of
+ transition) we need to update the counters whenever we check for any updates.
+
+ Otherwise we end up with a situation where counter->value is out of date and
+ an alarm doesn't trigger because we're still using the value from last time
+ something actually triggered.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit 2523a445a09a75a8baf642608d099a5e12d5437f)
+
+commit fa5e4dcfb6236b8be0bf57edd1ff4f59cb2f8f6b
+Author: Peter Hutterer
+Date: Wed Oct 16 16:31:15 2013 +1000
+
+ sync: always set the brackets (#59644)
+
+ The current code sets bracket_greater to the first trigger after the current
+ value, and bracket_less to the last trigger before the current value.
+
+ For example, the idle timer with three negative and three positive transitions
+ would set this:
+
+ nt1 nt2 nt3
+ |--------|------|--|------- idle --|---|--|-----> t
+ pt1 pt2 pt3
+ bracket_less == nt2
+ bracket_greater == pt2
+
+ This is an optimization so we can skip code paths in the block/wakeup handlers
+ if the current value doesn't meet any of the trigger requirements. Those
+ handlers largely do a
+ if (bracket_less is less than current value &&
+ bracket_greater is greater than current value)
+ return, nothing to do
+
+ However, unless the bracket values are updated at the correct time, the
+ following may happen:
+
+ nt
+ |--------------|---------- idle ------|--------> t
+ pt
+
+ In this case, neither bracket is set, we're past the pos transition and not
+ yet at the neg transition. idle may now go past nt, but the brackets are not
+ updated. If idle is then reset to 0, no alarm is triggered for nt. Likewise,
+ idle may now go past pt and no alarm is triggered.
+
+ Changing an alarm or triggering an alarm will re-calculate the brackets, so
+ this bug is somewhat random. If any other client triggers an alarm when the
+ brackets are wrongly NULL, the recalculation will set them this bug may not
+ appear.
+
+ This patch changes the behavior, so that the brackets are always the nearest
+ positive or negative transitions to the current counter value. In the example
+ above, nt will trigger a wakeup and a re-calculation of the brackets, so that
+ going past it in the negative direction will then cause the proper alarm
+ triggers.
+
+ Or, in Keith's words:
+
+ Timer currently past a positive trigger
+ No bracket values, because no trigger in range
+
+ Timer moves backwards before the positive trigger
+ Brackets not reset, even though there is now a trigger in range
+
+ Timer moves forward past the positive trigger
+ Trigger doesn't fire because brackets not set
+
+ Setting the LT bracket in this case will cause everything to get
+ re-evaluated when the sync value moves backwards before the trigger
+ value.
+
+ X.Org Bug 59644 http://bugs.freedesktop.org/show_bug.cgi?id=59644
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit e57ec99b03b2ad840c384a97ab2766ce9da0f5cc)
+
+commit 7b7753e97f0dfadfdcf28ce18b17a759b57f6be1
+Author: Peter Hutterer
+Date: Wed Oct 16 10:08:46 2013 +1000
+
+ sync: if the idle time was reset, force alarms to trigger (#70476)
+
+ The time between the idle reset and the IdleTimeWakeupHandler to be called is
+ indeterminate. Clients with an PositiveTransition or NegativeTransition alarm
+ on a low threshold may miss an alarm.
+
+ Work around this by keeping a reset flag for each device. When the
+ WakeupHandler triggers and the reset flag is set, we force a re-calculation of
+ everything and pretend the current idle time is zero. Immediately after is the
+ next calculation with the real idle time.
+
+ Relatively reproducible test case: Set up a XSyncNegativeTransition alarm for
+ a threshold of 1 ms. May trigger, may not.
+
+ X.Org Bug 70476 http://bugs.freedesktop.org/show_bug.cgi?id=70476
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit 06b87aa528d7a739ba20101a1f83b1a428691a01)
+
+commit 3866624a45074ba37a2e605d00df602c0222cd85
+Author: Peter Hutterer
+Date: Wed Oct 16 09:36:01 2013 +1000
+
+ dix: provide accessor methods for the last device event time
+
+ And now that we have the accessors, localize it. No functional changes, just
+ preparing for a future change.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit efc1035ca958f2c9d266338a308518a0834b1773)
+
+commit 47e30b3649fc15efbc8cf06c604254d84652ede0
+Author: Peter Hutterer
+Date: Wed Oct 16 09:21:47 2013 +1000
+
+ sync: supply the counter from IdleTimeBlockHandler
+
+ The main idletime counter has an initialized deviceid, might as well be
+ supplying it properly. Without this, we'd only ever check the XIAllDevices
+ counter, so the wait would never be adjusted for the device-specific triggers.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit b7c9bd9cf276e92a73be57ff2ed32b47a80f13fb)
+
+commit b47c02f21660bd99a5af5aa374294a22813d6679
+Author: Peter Hutterer
+Date: Wed Oct 16 13:01:01 2013 +1000
+
+ sync: always call BracketValues when recalculating upper/lower brackets
+
+ Both ServertimeBracketValues and IdleTimeBracketValues copy the value into
+ there SysCounter privates. Call it for a NULL set as well, so we don't end up
+ with stale pointers and we can remove the block/wakeup handlers.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit 2efe49c1029f959fe80879bcf50df42e8b80451d)
+
+commit 0033e969f4de84aa08ae321bc268a1461e12824b
+Author: Peter Hutterer
+Date: Tue Oct 15 10:11:20 2013 +1000
+
+ sync: compress two if statements
+
+ No functional changes, just merges a > and == condition into a >= condition.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ Reviewed-by: Keith Packard
+ (cherry picked from commit 5c7cfd4c6978834551848e1be62af240102e39b5)
+
+commit 0c809f459c9997f743961081bc089fd2999fdcdb
+Author: Peter Hutterer
+Date: Wed Sep 4 15:34:29 2013 +1000
+
+ dix: only deliver for the current grab type
+
+ Use the grabtype to determine which type of event to send - all other events
+ are pointless and may result in erroneous events being delivered.
+
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit 7cf1b595c8c8f9776a39559d2878cf90af3f2859)
+
+commit acb447ef69bdfcae4fe7de4eef880c3bae0f7d4c
+Author: Peter Hutterer
+Date: Wed Sep 4 15:34:28 2013 +1000
+
+ dix: don't attempt to deliver an event for a different grabtype
+
+ For an active grab, grab->eventMask can be either the core or the XI1 mask.
+ With the overlap of event filters, calling DeliverOneGrabbedEvent(XI1) for a
+ ProximityOut event will trigger if the client has selected for enter events -
+ the filter is the same for both.
+
+ Thus, we end up delivering a proximity event to a client not expecting one.
+
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit 78944d62ffc7fec6f75b6f514ab7a139ba9bc77b)
+
+commit f5b22ee8ba829aa095df3d091ec0a74e0aa42778
+Author: Peter Hutterer
+Date: Wed Sep 4 15:34:27 2013 +1000
+
+ include: change grabtypes to start at 1
+
+ Avoid erroneous detection of an unset grabtype as CORE
+
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit 6159811a1aaf848016dbfa7bde68df097027870c)
+
+commit d409cc884c53e7f66ee9266c85cdb7c100365c8f
+Author: Peter Hutterer
+Date: Wed Sep 4 15:34:26 2013 +1000
+
+ dix: only allow button and key events to freeze a sync'd pointer
+
+ If a client calls XAllowEvents(SyncPointer) it expects events as normal until
+ the next button press or release event - that freezes the device. An e.g.
+ proximity event must thus not freeze the pointer.
+
+ As per the spec, only button and key events may do so, so narrow it to these
+ cases.
+
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit be6ea80b79b3d6eb97106ea142e01acbdf059995)
+
+commit 551dbf744b38a3da3d39b9154cb30d1197297eb1
+Author: Egbert Eich
+Date: Fri Aug 16 19:52:16 2013 +0200
+
+ DIX/Xi: Pass correct client to CheckDeviceGrabAndHintWindow()
+
+ If we have a client which has registered for a DeviceButton grab
+ be sure to pass this to CheckDeviceGrabAndHintWindow(). Since the
+ order of clients is arbitrary there is no guarantee that the last
+ client in the list is the one that belongs to this class.
+
+ Signed-off-by: Egbert Eich
+ Reviewed-by: Peter Hutterer
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit 05ea6307fa4f0bee3d3bf536396059f3906791a0)
+
+commit cc7084af0d61e88ec0a62e14d6eef10c0b2b8b38
+Author: Peter Hutterer
+Date: Mon Aug 26 15:51:46 2013 +1000
+
+ Xi: allow for XIAllowEvent requests larger than XI < 2.2 size (#68554)
+
+ XIAllowEvents changed length in XI 2.2 (for the touchid). A bug in libXi
+ causes libXi to always use the new request length if the server supports
+ 2.2, regardless of the client's XIQueryVersion request.
+
+ The server takes the client's XIQueryVersion request into account though,
+ resulting in a BadLength error if a 2.[0,1] client calls XIAllowEvents on a
+ XI 2.2+ server.
+
+ Can't fix this in libXi, so work around this in the server.
+
+ X.Org Bug 68554 http://bugs.freedesktop.org/show_bug.cgi?id=68554
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ (cherry picked from commit 94d4e29aedc69431fa9b299ca1b67947173d7a24)
+
+commit 2ac257d845e7f52975123741292056b3df02f908
+Author: Peter Hutterer
+Date: Fri Aug 16 15:30:59 2013 +1000
+
+ dix: check for grab type before checking XI2 mask
+
+ if the grab type isn't XI2, grab->xi2mask is random. That random data may
+ have the enter/leave mask set, leading to events sent to the client that the
+ client can't handler.
+
+ Source of these errors:
+ _xgeWireToEvent: Unknown extension 131, this should never happen.
+
+ Simplest reproducer:
+ Start Xephyr, press button inside window, move out. As the pointer leaves
+ the Xephyr window, the errors appear.
+
+ Signed-off-by: Peter Hutterer
+ Reviewed-by: Adam Jackson
+ (cherry picked from commit 82939e02392cbb880313fe92957091ff89ce2f2b)
+
+commit 3ac50dca8b4b9b6b3a7e16c5855ca246a70c9232
+Author: Peter Hutterer
+Date: Fri Aug 23 09:04:01 2013 +1000
+
+ test: fix the gcc diagnostics pragma
+
+ pop without push restores the commandline options. The proper way is to
+ push, then ignore, then pop.
+
+ And while we're at it, change the pop argument to a comment - pop ignores
+ the argument, but be proper about it.
+
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit d803f296c616ccf55711cf0af9e7d3eae2edda16)
+
+commit ec6de521161d5c45885c8751c250d3fabcbc2194
+Merge: 1427621 a1985e8
+Author: Matt Dew
+Date: Mon Oct 21 21:03:29 2013 -0600
+
+ Merge commit 'a1985e892f5b5f0959235a631d8bcf676b78bfbc' into server-1.14-branch
+
+commit 14276213ac4d59316d5745ccb9a2fb23eb10cf99
+Author: Alan Coopersmith
+Date: Mon Aug 5 20:46:45 2013 -0700
+
+ Allow disabling XFree86-DGA, DRI, VidModeExtension extensions
+
+ Code to recognize these in extension enable/disable options was wrapped
+ in #ifdef XorgLoader, but that's not defined when building miinitext.c
+ since the great module merge of 1.13. Change to an #ifdef that is defined.
+
+ Signed-off-by: Alan Coopersmith
+ Reviewed-by: Robert Hooker
+ Reviewed-by: Daniel Stone
+ Signed-off-by: Keith Packard
+
+commit 296057914570bd319bce9b718e6b90f46e6cc661
+Author: Alan Coopersmith
+Date: Mon Sep 16 21:47:16 2013 -0700
+
+ Avoid use-after-free in dix/dixfonts.c: doImageText() [CVE-2013-4396]
+
+ Save a pointer to the passed in closure structure before copying it
+ and overwriting the *c pointer to point to our copy instead of the
+ original. If we hit an error, once we free(c), reset c to point to
+ the original structure before jumping to the cleanup code that
+ references *c.
+
+ Since one of the errors being checked for is whether the server was
+ able to malloc(c->nChars * itemSize), the client can potentially pass
+ a number of characters chosen to cause the malloc to fail and the
+ error path to be taken, resulting in the read from freed memory.
+
+ Since the memory is accessed almost immediately afterwards, and the
+ X server is mostly single threaded, the odds of the free memory having
+ invalid contents are low with most malloc implementations when not using
+ memory debugging features, but some allocators will definitely overwrite
+ the memory there, leading to a likely crash.
+
+ Reported-by: Pedro Ribeiro
+ Signed-off-by: Alan Coopersmith
+ Reviewed-by: Julien Cristau
+
+commit a1985e892f5b5f0959235a631d8bcf676b78bfbc
+Author: Julien Cristau
+Date: Sat Jul 27 12:09:07 2013 +0200
+
+ dix: add missing include for DeleteWindowFromAnySelections
+
+ Fixes build error with XACE disabled:
+ window.c:886:5: error: implicit declaration of function 'DeleteWindowFromAnySelections' [-Werror=implicit-function-declaration]
+ DeleteWindowFromAnySelections(pWin);
+ ^
+
+ Debian bug#701372
+
+ Reported-by: Matthias Klose
+ Signed-off-by: Julien Cristau
+ Reviewed-by: Alan Coopersmith
+ Signed-off-by: Keith Packard
+ (cherry picked from commit fe7463b8ce0de301c2f82b108c93963424f77219)
+
+commit 19c2d516c2b5182e8b45649485aa3123b229b66a
+Author: Julien Cristau
+Date: Fri Aug 2 20:07:36 2013 +0200
+
+ xfree86: improve check for posix saved ids
+
+ Replace hardcoded SVR4 || linux || CSRG_BASED with an autoconf check and
+ the _POSIX_SAVED_IDS macro.
+
+ Suggested-by: Mark Kettenis
+ Signed-off-by: Julien Cristau
+ Reviewed-by: Alan Coopersmith
+ Reviewed-by: Mark Kettenis .
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit c218ba8423a73a7a643cb17789db8a1dd0901ca6)
+
+commit b39a6ab645815a6012d9b2feaa049336ea09aa76
+Author: Julien Cristau
+Date: Fri Aug 2 23:46:00 2013 +0200
+
+ test: include dix-config.h in hashtabletest.c
+
+ Missing _XSERVER64 define caused inconsistent sizeof(XID) between the
+ test and hashtable code, leading to test failures on 64bit big endian
+ archs like s390x or ppc64.
+
+ Signed-off-by: Julien Cristau
+ Reviewed-by: Peter Hutterer
+ Signed-off-by: Peter Hutterer
+ (cherry picked from commit 930c6ff15d437dfb0f897e8cb4253abba70819cc)
+
commit 9acb64f54ee9dd2fe41afda159b919280850ad8e
Author: Matt Dew
Date: Thu Sep 12 21:17:40 2013 -0600
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/Xext/saver.c new/xorg-server-1.14.3.901/Xext/saver.c
--- old/xorg-server-1.14.3/Xext/saver.c 2013-07-26 07:14:32.000000000 +0200
+++ new/xorg-server-1.14.3.901/Xext/saver.c 2013-10-23 02:48:30.000000000 +0200
@@ -392,9 +392,7 @@
DeviceIntPtr dev;
UpdateCurrentTimeIf();
nt_list_for_each_entry(dev, inputInfo.devices, next)
- lastDeviceEventTime[dev->id] = currentTime;
- lastDeviceEventTime[XIAllDevices] = currentTime;
- lastDeviceEventTime[XIAllMasterDevices] = currentTime;
+ NoticeTime(dev, currentTime);
SetScreenSaverTimer();
}
}
@@ -681,7 +679,7 @@
pPriv = GetScreenPrivate(pDraw->pScreen);
UpdateCurrentTime();
- lastInput = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
+ lastInput = GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds;
rep = (xScreenSaverQueryInfoReply) {
.type = X_Reply,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/Xext/sync.c new/xorg-server-1.14.3.901/Xext/sync.c
--- old/xorg-server-1.14.3/Xext/sync.c 2013-07-26 07:19:03.000000000 +0200
+++ new/xorg-server-1.14.3.901/Xext/sync.c 2013-10-23 02:48:30.000000000 +0200
@@ -699,6 +699,14 @@
FreeResource(pAwaitUnion->header.delete_id, RT_NONE);
}
+static CARD64
+SyncUpdateCounter(SyncCounter *pCounter, CARD64 newval)
+{
+ CARD64 oldval = pCounter->value;
+ pCounter->value = newval;
+ return oldval;
+}
+
/* This function should always be used to change a counter's value so that
* any triggers depending on the counter will be checked.
*/
@@ -708,8 +716,7 @@
SyncTriggerList *ptl, *pnext;
CARD64 oldval;
- oldval = pCounter->value;
- pCounter->value = newval;
+ oldval = SyncUpdateCounter(pCounter, newval);
/* run through triggers to see if any become true */
for (ptl = pCounter->sync.pTriglist; ptl; ptl = pnext) {
@@ -1019,6 +1026,11 @@
psci->bracket_greater = pTrigger->test_value;
pnewgtval = &psci->bracket_greater;
}
+ else if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+ psci->bracket_less = pTrigger->test_value;
+ pnewltval = &psci->bracket_less;
+ }
}
else if (pTrigger->test_type == XSyncNegativeComparison &&
ct != XSyncCounterNeverDecreases) {
@@ -1028,52 +1040,53 @@
psci->bracket_less = pTrigger->test_value;
pnewltval = &psci->bracket_less;
}
+ else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+ psci->bracket_greater = pTrigger->test_value;
+ pnewgtval = &psci->bracket_greater;
+ }
}
else if (pTrigger->test_type == XSyncNegativeTransition &&
ct != XSyncCounterNeverIncreases) {
- if (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
- XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less))
- {
- psci->bracket_less = pTrigger->test_value;
- pnewltval = &psci->bracket_less;
+ if (XSyncValueGreaterOrEqual(pCounter->value, pTrigger->test_value) &&
+ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+ /*
+ * If 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;
}
- 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;
+ else if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+ psci->bracket_greater = pTrigger->test_value;
+ pnewgtval = &psci->bracket_greater;
}
}
else if (pTrigger->test_type == XSyncPositiveTransition &&
ct != XSyncCounterNeverDecreases) {
- if (XSyncValueLessThan(pCounter->value, pTrigger->test_value) &&
- XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater))
- {
- psci->bracket_greater = pTrigger->test_value;
- pnewgtval = &psci->bracket_greater;
+ if (XSyncValueLessOrEqual(pCounter->value, pTrigger->test_value) &&
+ XSyncValueLessThan(pTrigger->test_value, psci->bracket_greater)) {
+ /*
+ * If 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 (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 (XSyncValueGreaterThan(pCounter->value, pTrigger->test_value) &&
+ XSyncValueGreaterThan(pTrigger->test_value, psci->bracket_less)) {
+ psci->bracket_less = pTrigger->test_value;
+ pnewltval = &psci->bracket_less;
}
}
} /* end for each trigger */
- if (pnewgtval || pnewltval) {
- (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval);
- }
+ (*psci->BracketValues) ((pointer) pCounter, pnewltval, pnewgtval);
+
}
/*
@@ -2619,7 +2632,7 @@
}
else
deviceid = XIAllDevices;
- idle = GetTimeInMillis() - lastDeviceEventTime[deviceid].milliseconds;
+ idle = GetTimeInMillis() - LastEventTime(deviceid).milliseconds;
XSyncIntsToValue(pValue_return, idle, 0);
}
@@ -2638,7 +2651,7 @@
return;
old_idle = counter->value;
- IdleTimeQueryValue(NULL, &idle);
+ IdleTimeQueryValue(counter, &idle);
counter->value = idle; /* push, so CheckTrigger works */
if (less && XSyncValueLessOrEqual(idle, *less)) {
@@ -2700,6 +2713,17 @@
}
static void
+IdleTimeCheckBrackets(SyncCounter *counter, XSyncValue idle, XSyncValue *less, XSyncValue *greater)
+{
+ if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) ||
+ (less && XSyncValueLessOrEqual(idle, *less))) {
+ SyncChangeCounter(counter, idle);
+ }
+ else
+ SyncUpdateCounter(counter, idle);
+}
+
+static void
IdleTimeWakeupHandler(pointer pCounter, int rc, pointer LastSelectMask)
{
SyncCounter *counter = pCounter;
@@ -2713,10 +2737,24 @@
IdleTimeQueryValue(pCounter, &idle);
- if ((greater && XSyncValueGreaterOrEqual(idle, *greater)) ||
- (less && XSyncValueLessOrEqual(idle, *less))) {
- SyncChangeCounter(counter, idle);
+ /*
+ There is no guarantee for the WakeupHandler to be called within a specific
+ timeframe. Idletime may go to 0, but by the time we get here, it may be
+ non-zero and alarms for a pos. transition on 0 won't get triggered.
+ https://bugs.freedesktop.org/show_bug.cgi?id=70476
+ */
+ if (LastEventTimeWasReset(priv->deviceid)) {
+ LastEventTimeToggleResetFlag(priv->deviceid, FALSE);
+ if (!XSyncValueIsZero(idle)) {
+ XSyncValue zero;
+ XSyncIntsToValue(&zero, 0, 0);
+ IdleTimeCheckBrackets(counter, zero, less, greater);
+ less = priv->value_less;
+ greater = priv->value_greater;
+ }
}
+
+ IdleTimeCheckBrackets(counter, idle, less, greater);
}
static void
@@ -2734,6 +2772,9 @@
IdleTimeWakeupHandler, pCounter);
}
else if (!registered && (pbracket_less || pbracket_greater)) {
+ /* Reset flag must be zero so we don't force a idle timer reset on
+ the first wakeup */
+ LastEventTimeToggleResetAll(FALSE);
RegisterBlockAndWakeupHandlers(IdleTimeBlockHandler,
IdleTimeWakeupHandler, pCounter);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/Xi/xiallowev.c new/xorg-server-1.14.3.901/Xi/xiallowev.c
--- old/xorg-server-1.14.3/Xi/xiallowev.c 2013-07-26 07:14:32.000000000 +0200
+++ new/xorg-server-1.14.3.901/Xi/xiallowev.c 2013-10-23 02:48:30.000000000 +0200
@@ -81,7 +81,7 @@
have_xi22 = TRUE;
}
else {
- REQUEST_SIZE_MATCH(xXIAllowEventsReq);
+ REQUEST_AT_LEAST_SIZE(xXIAllowEventsReq);
}
ret = dixLookupDevice(&dev, stuff->deviceid, client, DixGetAttrAccess);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/configure new/xorg-server-1.14.3.901/configure
--- old/xorg-server-1.14.3/configure 2013-09-13 05:06:39.000000000 +0200
+++ new/xorg-server-1.14.3.901/configure 2013-10-26 21:42:34.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for xorg-server 1.14.3.
+# Generated by GNU Autoconf 2.68 for xorg-server 1.14.3.901.
#
# Report bugs to https://bugs.freedesktop.org/enter_bug.cgi?product=xorg.
#
@@ -631,8 +631,8 @@
# Identity of this package.
PACKAGE_NAME='xorg-server'
PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='1.14.3'
-PACKAGE_STRING='xorg-server 1.14.3'
+PACKAGE_VERSION='1.14.3.901'
+PACKAGE_STRING='xorg-server 1.14.3.901'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
PACKAGE_URL=''
@@ -1959,7 +1959,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures xorg-server 1.14.3 to adapt to many kinds of systems.
+\`configure' configures xorg-server 1.14.3.901 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2029,7 +2029,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of xorg-server 1.14.3:";;
+ short | recursive ) echo "Configuration of xorg-server 1.14.3.901:";;
esac
cat <<\_ACEOF
@@ -2426,7 +2426,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-xorg-server configure 1.14.3
+xorg-server configure 1.14.3.901
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -3130,7 +3130,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by xorg-server $as_me 1.14.3, which was
+It was created by xorg-server $as_me 1.14.3.901, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -3478,8 +3478,8 @@
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-RELEASE_DATE="2013-09-12"
-RELEASE_NAME="September Rain"
+RELEASE_DATE="2013-10-26"
+RELEASE_NAME="October Flood-rc1"
am__api_version='1.11'
@@ -3948,7 +3948,7 @@
# Define the identity of the package.
PACKAGE='xorg-server'
- VERSION='1.14.3'
+ VERSION='1.14.3.901'
cat >>confdefs.h <<_ACEOF
@@ -21770,7 +21770,7 @@
for ac_func in backtrace ffs geteuid getuid issetugid getresuid \
getdtablesize getifaddrs getpeereid getpeerucred getzoneid \
- mmap shmctl64 strncasecmp vasprintf vsnprintf walkcontext
+ mmap seteuid shmctl64 strncasecmp vasprintf vsnprintf walkcontext
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -31061,7 +31061,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by xorg-server $as_me 1.14.3, which was
+This file was extended by xorg-server $as_me 1.14.3.901, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31127,7 +31127,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-xorg-server config.status 1.14.3
+xorg-server config.status 1.14.3.901
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/configure.ac new/xorg-server-1.14.3.901/configure.ac
--- old/xorg-server-1.14.3/configure.ac 2013-09-13 05:06:05.000000000 +0200
+++ new/xorg-server-1.14.3.901/configure.ac 2013-10-26 21:41:51.000000000 +0200
@@ -26,9 +26,9 @@
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.3, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-09-12"
-RELEASE_NAME="September Rain"
+AC_INIT([xorg-server], 1.14.3.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-10-26"
+RELEASE_NAME="October Flood-rc1"
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
@@ -215,7 +215,7 @@
dnl Checks for library functions.
AC_CHECK_FUNCS([backtrace ffs geteuid getuid issetugid getresuid \
getdtablesize getifaddrs getpeereid getpeerucred getzoneid \
- mmap shmctl64 strncasecmp vasprintf vsnprintf walkcontext])
+ mmap seteuid shmctl64 strncasecmp vasprintf vsnprintf walkcontext])
AC_REPLACE_FUNCS([strcasecmp strcasestr strlcat strlcpy strndup])
dnl Find the math libary, then check for cbrt function in it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/dix/dixfonts.c new/xorg-server-1.14.3.901/dix/dixfonts.c
--- old/xorg-server-1.14.3/dix/dixfonts.c 2013-07-26 07:14:32.000000000 +0200
+++ new/xorg-server-1.14.3.901/dix/dixfonts.c 2013-10-22 04:39:33.000000000 +0200
@@ -1425,6 +1425,7 @@
GC *pGC;
unsigned char *data;
ITclosurePtr new_closure;
+ ITclosurePtr old_closure;
/* We're putting the client to sleep. We need to
save some state. Similar problem to that handled
@@ -1436,12 +1437,14 @@
err = BadAlloc;
goto bail;
}
+ old_closure = c;
*new_closure = *c;
c = new_closure;
data = malloc(c->nChars * itemSize);
if (!data) {
free(c);
+ c = old_closure;
err = BadAlloc;
goto bail;
}
@@ -1452,6 +1455,7 @@
if (!pGC) {
free(c->data);
free(c);
+ c = old_closure;
err = BadAlloc;
goto bail;
}
@@ -1464,6 +1468,7 @@
FreeScratchGC(pGC);
free(c->data);
free(c);
+ c = old_closure;
err = BadAlloc;
goto bail;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/dix/events.c new/xorg-server-1.14.3.901/dix/events.c
--- old/xorg-server-1.14.3/dix/events.c 2013-07-26 07:19:03.000000000 +0200
+++ new/xorg-server-1.14.3.901/dix/events.c 2013-10-23 02:48:30.000000000 +0200
@@ -262,6 +262,11 @@
EventSyncInfoRec syncEvents;
+static struct DeviceEventTime {
+ Bool reset;
+ TimeStamp time;
+} lastDeviceEventTime[MAXDEVICES];
+
/**
* The root window the given device is currently on.
*/
@@ -1043,33 +1048,73 @@
#define TIMESLOP (5 * 60 * 1000) /* 5 minutes */
static void
-MonthChangedOrBadTime(InternalEvent *ev)
+MonthChangedOrBadTime(CARD32 *ms)
{
/* If the ddx/OS is careless about not processing timestamped events from
* different sources in sorted order, then it's possible for time to go
* backwards when it should not. Here we ensure a decent time.
*/
- if ((currentTime.milliseconds - ev->any.time) > TIMESLOP)
+ if ((currentTime.milliseconds - *ms) > TIMESLOP)
currentTime.months++;
else
- ev->any.time = currentTime.milliseconds;
+ *ms = currentTime.milliseconds;
+}
+
+void
+NoticeTime(const DeviceIntPtr dev, TimeStamp time)
+{
+ lastDeviceEventTime[XIAllDevices].time = currentTime;
+ lastDeviceEventTime[dev->id].time = currentTime;
+
+ LastEventTimeToggleResetFlag(dev->id, TRUE);
+ LastEventTimeToggleResetFlag(XIAllDevices, TRUE);
}
static void
-NoticeTime(InternalEvent *ev, DeviceIntPtr dev)
+NoticeTimeMillis(const DeviceIntPtr dev, CARD32 *ms)
{
- if (ev->any.time < currentTime.milliseconds)
- MonthChangedOrBadTime(ev);
- currentTime.milliseconds = ev->any.time;
- lastDeviceEventTime[XIAllDevices] = currentTime;
- lastDeviceEventTime[dev->id] = currentTime;
+ TimeStamp time;
+ if (*ms < currentTime.milliseconds)
+ MonthChangedOrBadTime(ms);
+ time.months = currentTime.months;
+ time.milliseconds = *ms;
+ NoticeTime(dev, time);
}
void
NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev)
{
if (!syncEvents.playingEvents)
- NoticeTime(ev, dev);
+ NoticeTimeMillis(dev, &ev->any.time);
+}
+
+TimeStamp
+LastEventTime(int deviceid)
+{
+ return lastDeviceEventTime[deviceid].time;
+}
+
+Bool
+LastEventTimeWasReset(int deviceid)
+{
+ return lastDeviceEventTime[deviceid].reset;
+}
+
+void
+LastEventTimeToggleResetFlag(int deviceid, Bool state)
+{
+ lastDeviceEventTime[deviceid].reset = state;
+}
+
+void
+LastEventTimeToggleResetAll(Bool state)
+{
+ DeviceIntPtr dev;
+ nt_list_for_each_entry(dev, inputInfo.devices, next) {
+ LastEventTimeToggleResetFlag(dev->id, FALSE);
+ }
+ LastEventTimeToggleResetFlag(XIAllDevices, FALSE);
+ LastEventTimeToggleResetFlag(XIAllMasterDevices, FALSE);
}
/**************************************************************************
@@ -1093,7 +1138,7 @@
if (!xorg_list_is_empty(&syncEvents.pending))
tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next);
- NoticeTime((InternalEvent *)event, device);
+ NoticeTimeMillis(device, &ev->any.time);
/* Fix for key repeating bug. */
if (device->key != NULL && device->key->xkbInfo != NULL &&
@@ -2102,6 +2147,7 @@
{
int attempt;
enum EventDeliveryState rc = EVENT_NOT_DELIVERED;
+ Bool have_device_button_grab_class_client = FALSE;
for (; inputclients; inputclients = inputclients->next) {
Mask mask;
@@ -2121,13 +2167,21 @@
events, count,
mask, filter, grab))) {
if (attempt > 0) {
- rc = EVENT_DELIVERED;
- *client_return = client;
- *mask_return = mask;
- /* Success overrides non-success, so if we've been
- * successful on one client, return that */
- }
- else if (rc == EVENT_NOT_DELIVERED)
+ /*
+ * The order of clients is arbitrary therefore if one
+ * client belongs to DeviceButtonGrabClass make sure to
+ * catch it.
+ */
+ if (!have_device_button_grab_class_client) {
+ rc = EVENT_DELIVERED;
+ *client_return = client;
+ *mask_return = mask;
+ /* Success overrides non-success, so if we've been
+ * successful on one client, return that */
+ if (mask & DeviceButtonGrabMask)
+ have_device_button_grab_class_client = TRUE;
+ }
+ } else if (rc == EVENT_NOT_DELIVERED)
rc = EVENT_REJECTED;
}
}
@@ -4130,6 +4184,9 @@
GrabPtr grab = grabinfo->grab;
Mask filter;
+ if (grab->grabtype != level)
+ return 0;
+
switch (level) {
case XI2:
rc = EventToXI2(event, &xE);
@@ -4241,22 +4298,17 @@
sendCore = (IsMaster(thisDev) && thisDev->coreEvents);
/* try core event */
- if (sendCore && grab->grabtype == CORE) {
- deliveries = DeliverOneGrabbedEvent(event, thisDev, CORE);
- }
-
- if (!deliveries) {
- deliveries = DeliverOneGrabbedEvent(event, thisDev, XI2);
- }
-
- if (!deliveries) {
- deliveries = DeliverOneGrabbedEvent(event, thisDev, XI);
- }
+ if ((sendCore && grab->grabtype == CORE) || grab->grabtype != CORE)
+ deliveries = DeliverOneGrabbedEvent(event, thisDev, grab->grabtype);
if (deliveries && (event->any.type == ET_Motion))
thisDev->valuator->motionHintWindow = grab->window;
}
- if (deliveries && !deactivateGrab && event->any.type != ET_Motion) {
+ if (deliveries && !deactivateGrab &&
+ (event->any.type == ET_KeyPress ||
+ event->any.type == ET_KeyRelease ||
+ event->any.type == ET_ButtonPress ||
+ event->any.type == ET_ButtonRelease)) {
switch (grabinfo->sync.state) {
case FREEZE_BOTH_NEXT_EVENT:
dev = GetPairedDevice(thisDev);
@@ -4641,7 +4693,7 @@
filter = GetEventFilter(mouse, (xEvent *) event);
- if (grab) {
+ if (grab && grab->type == XI2) {
Mask mask;
mask = xi2mask_isset(grab->xi2mask, mouse, type);
@@ -5266,8 +5318,12 @@
inputInfo.pointer = (DeviceIntPtr) NULL;
for (i = 0; i < MAXDEVICES; i++) {
+ DeviceIntRec dummy;
memcpy(&event_filters[i], default_filter, sizeof(default_filter));
- lastDeviceEventTime[i] = currentTime;
+
+ dummy.id = i;
+ NoticeTime(&dummy, currentTime);
+ LastEventTimeToggleResetFlag(i, FALSE);
}
syncEvents.replayDev = (DeviceIntPtr) NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/dix/globals.c new/xorg-server-1.14.3.901/dix/globals.c
--- old/xorg-server-1.14.3/dix/globals.c 2013-07-26 07:14:32.000000000 +0200
+++ new/xorg-server-1.14.3.901/dix/globals.c 2013-10-23 02:48:30.000000000 +0200
@@ -122,7 +122,6 @@
Bool whiteRoot = FALSE;
TimeStamp currentTime;
-TimeStamp lastDeviceEventTime[MAXDEVICES];
int defaultColorVisualClass = -1;
int monitorResolution = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/dix/window.c new/xorg-server-1.14.3.901/dix/window.c
--- old/xorg-server-1.14.3/dix/window.c 2013-07-26 07:19:03.000000000 +0200
+++ new/xorg-server-1.14.3.901/dix/window.c 2013-10-23 02:48:30.000000000 +0200
@@ -126,6 +126,7 @@
#ifdef COMPOSITE
#include "compint.h"
#endif
+#include "selection.h"
#include "privates.h"
#include "xace.h"
@@ -3092,9 +3093,7 @@
DeviceIntPtr dev;
UpdateCurrentTimeIf();
nt_list_for_each_entry(dev, inputInfo.devices, next)
- lastDeviceEventTime[dev->id] = currentTime;
- lastDeviceEventTime[XIAllDevices] = currentTime;
- lastDeviceEventTime[XIAllMasterDevices] = currentTime;
+ NoticeTime(dev, currentTime);
}
SetScreenSaverTimer();
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/hw/xfree86/parser/write.c new/xorg-server-1.14.3.901/hw/xfree86/parser/write.c
--- old/xorg-server-1.14.3/hw/xfree86/parser/write.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/hw/xfree86/parser/write.c 2013-10-22 05:03:29.000000000 +0200
@@ -55,6 +55,7 @@
#include
#endif
+#include "os.h"
#include "xf86Parser.h"
#include "xf86tokens.h"
#include "Configint.h"
@@ -65,7 +66,7 @@
#include
#include
-#if defined(SVR4) || defined(__linux__) || defined(CSRG_BASED)
+#if defined(HAVE_SETEUID) && defined(_POSIX_SAVED_IDS) && _POSIX_SAVED_IDS > 0
#define HAS_SAVED_IDS_AND_SETEUID
#endif
#if defined(WIN32)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/include/dix.h new/xorg-server-1.14.3.901/include/dix.h
--- old/xorg-server-1.14.3/include/dix.h 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/include/dix.h 2013-10-23 02:48:30.000000000 +0200
@@ -315,8 +315,19 @@
GetSpriteWindow(DeviceIntPtr pDev);
extern _X_EXPORT void
+NoticeTime(const DeviceIntPtr dev,
+ TimeStamp time);
+extern _X_EXPORT void
NoticeEventTime(InternalEvent *ev,
DeviceIntPtr dev);
+extern _X_EXPORT TimeStamp
+LastEventTime(int deviceid);
+extern _X_EXPORT Bool
+LastEventTimeWasReset(int deviceid);
+extern _X_EXPORT void
+LastEventTimeToggleResetFlag(int deviceid, Bool state);
+extern _X_EXPORT void
+LastEventTimeToggleResetAll(Bool state);
extern void
EnqueueEvent(InternalEvent * /* ev */ ,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/include/dixstruct.h new/xorg-server-1.14.3.901/include/dixstruct.h
--- old/xorg-server-1.14.3/include/dixstruct.h 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/include/dixstruct.h 2013-10-23 02:48:30.000000000 +0200
@@ -155,7 +155,6 @@
} WorkQueueRec;
extern _X_EXPORT TimeStamp currentTime;
-extern _X_EXPORT TimeStamp lastDeviceEventTime[MAXDEVICES];
extern _X_EXPORT int
CompareTimeStamps(TimeStamp /*a */ ,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/include/do-not-use-config.h.in new/xorg-server-1.14.3.901/include/do-not-use-config.h.in
--- old/xorg-server-1.14.3/include/do-not-use-config.h.in 2013-09-13 05:06:41.000000000 +0200
+++ new/xorg-server-1.14.3.901/include/do-not-use-config.h.in 2013-10-26 21:42:36.000000000 +0200
@@ -247,6 +247,9 @@
/* Define to 1 if you have the header file. */
#undef HAVE_RPCSVC_DBM_H
+/* Define to 1 if you have the `seteuid' function. */
+#undef HAVE_SETEUID
+
/* Use CommonCrypto SHA1 functions */
#undef HAVE_SHA1_IN_COMMONCRYPTO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/include/input.h new/xorg-server-1.14.3.901/include/input.h
--- old/xorg-server-1.14.3/include/input.h 2013-07-26 07:19:03.000000000 +0200
+++ new/xorg-server-1.14.3.901/include/input.h 2013-10-23 02:48:30.000000000 +0200
@@ -113,9 +113,9 @@
#endif
enum InputLevel {
- CORE,
- XI,
- XI2,
+ CORE = 1,
+ XI = 2,
+ XI2 = 3,
};
typedef unsigned long Leds;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/include/xorg-config.h.in new/xorg-server-1.14.3.901/include/xorg-config.h.in
--- old/xorg-server-1.14.3/include/xorg-config.h.in 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/include/xorg-config.h.in 2013-10-22 05:03:29.000000000 +0200
@@ -139,4 +139,7 @@
/* Have X server platform bus support */
#undef XSERVER_PLATFORM_BUS
+/* Define to 1 if you have the `seteuid' function. */
+#undef HAVE_SETEUID
+
#endif /* _XORG_CONFIG_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/mi/miinitext.c new/xorg-server-1.14.3.901/mi/miinitext.c
--- old/xorg-server-1.14.3/mi/miinitext.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/mi/miinitext.c 2013-10-22 04:39:47.000000000 +0200
@@ -157,7 +157,7 @@
#ifdef XF86BIGFONT
{"XFree86-Bigfont", &noXFree86BigfontExtension},
#endif
-#ifdef XorgLoader
+#ifdef XORGSERVER
#ifdef XFreeXDGA
{"XFree86-DGA", &noXFree86DGAExtension},
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/os/WaitFor.c new/xorg-server-1.14.3.901/os/WaitFor.c
--- old/xorg-server-1.14.3/os/WaitFor.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/os/WaitFor.c 2013-10-23 02:48:30.000000000 +0200
@@ -561,7 +561,7 @@
static CARD32
ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg)
{
- INT32 timeout = now - lastDeviceEventTime[XIAllDevices].milliseconds;
+ INT32 timeout = now - LastEventTime(XIAllDevices).milliseconds;
CARD32 nextTimeout = 0;
#ifdef DPMSExtension
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/os/xdmcp.c new/xorg-server-1.14.3.901/os/xdmcp.c
--- old/xorg-server-1.14.3/os/xdmcp.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/os/xdmcp.c 2013-10-23 02:48:30.000000000 +0200
@@ -1391,7 +1391,7 @@
if (SessionRunning && AliveSessionID == SessionID) {
/* backoff dormancy period */
state = XDM_RUN_SESSION;
- if ((GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds) >
+ if ((GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds) >
keepaliveDormancy * 1000) {
keepaliveDormancy <<= 1;
if (keepaliveDormancy > XDM_MAX_DORMANCY)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/test/hashtabletest.c new/xorg-server-1.14.3.901/test/hashtabletest.c
--- old/xorg-server-1.14.3/test/hashtabletest.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/test/hashtabletest.c 2013-10-22 05:03:29.000000000 +0200
@@ -1,3 +1,7 @@
+#ifdef HAVE_DIX_CONFIG_H
+#include
+#endif
+
#include
#include
#include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xorg-server-1.14.3/test/signal-logging.c new/xorg-server-1.14.3.901/test/signal-logging.c
--- old/xorg-server-1.14.3/test/signal-logging.c 2013-07-26 07:14:33.000000000 +0200
+++ new/xorg-server-1.14.3.901/test/signal-logging.c 2013-10-23 02:48:31.000000000 +0200
@@ -150,6 +150,7 @@
assert(check_float_format_test(float_tests[i]));
}
+#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-security"
static void logging_format(void)
{
@@ -378,7 +379,7 @@
#undef read_log_msg
}
-#pragma GCC diagnostic pop "-Wformat-security"
+#pragma GCC diagnostic pop /* "-Wformat-security" */
int
main(int argc, char **argv)
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org