Hello community, here is the log from the commit of package xorg-x11-server for openSUSE:Factory checked in at 2015-06-10 09:15:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xorg-x11-server (Old) and /work/SRC/openSUSE:Factory/.xorg-x11-server.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xorg-x11-server" Changes: -------- --- /work/SRC/openSUSE:Factory/xorg-x11-server/xorg-x11-server.changes 2015-06-06 09:53:29.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xorg-x11-server.new/xorg-x11-server.changes 2015-06-10 09:15:21.000000000 +0200 @@ -1,0 +2,7 @@ +Mon Jun 8 15:21:18 UTC 2015 - antoine.belv...@laposte.net + +- Fix GNOME X Session for some hybrid graphics (rh#1209347): + + add U_systemd-logind-filter-out-non-signal-messages-from.patch + + add U_systemd-logind-dont-second-guess-D-Bus-default-tim.patch + +------------------------------------------------------------------- New: ---- U_systemd-logind-dont-second-guess-D-Bus-default-tim.patch U_systemd-logind-filter-out-non-signal-messages-from.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-server.spec ++++++ --- /var/tmp/diff_new_pack.Lgz4g8/_old 2015-06-10 09:15:23.000000000 +0200 +++ /var/tmp/diff_new_pack.Lgz4g8/_new 2015-06-10 09:15:23.000000000 +0200 @@ -175,6 +175,10 @@ Patch1211: b_0001-Prevent-XSync-Alarms-from-senslessly-calling-CheckTr.patch Patch1222: b_sync-fix.patch +# PATCH-FIX-UPSTREAM U_systemd-logind-* rh#1209347 antoine.belv...@laposte.net -- Fix Gnome X session for some hybrid graphics +Patch2000: U_systemd-logind-filter-out-non-signal-messages-from.patch +Patch2001: U_systemd-logind-dont-second-guess-D-Bus-default-tim.patch + %description This package contains the X.Org Server. @@ -264,6 +268,9 @@ %patch1000 -p1 +%patch2000 -p1 +%patch2001 -p1 + ### disabled for now #%patch1162 -p1 ### disabled for now ++++++ U_systemd-logind-dont-second-guess-D-Bus-default-tim.patch ++++++ >From b1029716e41e252f149b82124a149da180607c96 Mon Sep 17 00:00:00 2001 From: Ray Strode <rstr...@redhat.com> Date: Thu, 16 Apr 2015 11:28:16 -0400 Subject: systemd-logind: don't second guess D-Bus default timeout At the moment, the X server uses a non-default timeout for D-Bus messages to systemd-logind. The only timeouts normally used with D-Bus are: 1) Infinite 2) Default Anything else is just as arbitrary as Default, and so rarely makes sense to use instead of Default. Put another way, there's little reason to be fault tolerant against a local root running daemon (logind), that in some configurations, the X server already depends on for proper functionality. This commit changes systemd-logind to just use the default timeouts. Downstream-bug: https://bugzilla.redhat.com/show_bug.cgi?id=1209347 Signed-off-by: Ray Strode <rstr...@redhat.com> Reviewed-by: Hans de Goede <hdego...@redhat.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c index 57c87c0..4ad41a3 100644 --- a/hw/xfree86/os-support/linux/systemd-logind.c +++ b/hw/xfree86/os-support/linux/systemd-logind.c @@ -40,8 +40,6 @@ #include "systemd-logind.h" -#define DBUS_TIMEOUT 500 /* Wait max 0.5 seconds */ - struct systemd_logind_info { DBusConnection *conn; char *session; @@ -130,7 +128,7 @@ systemd_logind_take_fd(int _major, int _minor, const char *path, } reply = dbus_connection_send_with_reply_and_block(info->conn, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) { LogMessage(X_ERROR, "systemd-logind: failed to take device %s: %s\n", path, error.message); @@ -207,7 +205,7 @@ systemd_logind_release_fd(int _major, int _minor, int fd) } reply = dbus_connection_send_with_reply_and_block(info->conn, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) LogMessage(X_ERROR, "systemd-logind: failed to release device: %s\n", error.message); @@ -289,7 +287,7 @@ systemd_logind_ack_pause(struct systemd_logind_info *info, } reply = dbus_connection_send_with_reply_and_block(info->conn, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) LogMessage(X_ERROR, "systemd-logind: failed to ack pause: %s\n", error.message); @@ -457,7 +455,7 @@ connect_hook(DBusConnection *connection, void *data) } reply = dbus_connection_send_with_reply_and_block(connection, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) { LogMessage(X_ERROR, "systemd-logind: failed to get session: %s\n", error.message); @@ -492,7 +490,7 @@ connect_hook(DBusConnection *connection, void *data) } reply = dbus_connection_send_with_reply_and_block(connection, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) { LogMessage(X_ERROR, "systemd-logind: TakeControl failed: %s\n", error.message); @@ -564,7 +562,7 @@ systemd_logind_release_control(struct systemd_logind_info *info) } reply = dbus_connection_send_with_reply_and_block(info->conn, msg, - DBUS_TIMEOUT, &error); + DBUS_TIMEOUT_USE_DEFAULT, &error); if (!reply) { LogMessage(X_ERROR, "systemd-logind: ReleaseControl failed: %s\n", error.message); -- cgit v0.10.2 ++++++ U_systemd-logind-filter-out-non-signal-messages-from.patch ++++++ >From 792e9251670ce94210df5c6d354059bbb97f4478 Mon Sep 17 00:00:00 2001 From: Ray Strode <rstr...@redhat.com> Date: Thu, 16 Apr 2015 11:28:15 -0400 Subject: systemd-logind: filter out non-signal messages from message filter It's possible to receive a message reply in the message filter if a previous message call timed out locally before the reply arrived. The message_filter function only handles signals, at the moment, and does not properly handle message replies. This commit changes the message_filter function to filter out all non-signal messages, including spurious message replies. Downstream-bug: https://bugzilla.redhat.com/show_bug.cgi?id=1209347 Signed-off-by: Ray Strode <rstr...@redhat.com> Reviewed-by: Hans de Goede <hdego...@redhat.com> Signed-off-by: Keith Packard <kei...@keithp.com> diff --git a/hw/xfree86/os-support/linux/systemd-logind.c b/hw/xfree86/os-support/linux/systemd-logind.c index 49758f4..57c87c0 100644 --- a/hw/xfree86/os-support/linux/systemd-logind.c +++ b/hw/xfree86/os-support/linux/systemd-logind.c @@ -313,6 +313,9 @@ message_filter(DBusConnection * connection, DBusMessage * message, void *data) dbus_int32_t major, minor; char *pause_str; + if (dbus_message_get_type (message) != DBUS_MESSAGE_TYPE_SIGNAL) + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; + dbus_error_init(&error); if (dbus_message_is_signal(message, -- cgit v0.10.2