From 8c6131dc17cadb3279bc64729dc95e51734eac9b Mon Sep 17 00:00:00 2001 From: Michael 'Mickey' Lauer Date: Sat, 13 Mar 2010 01:29:20 +0100 Subject: dbus 1.3.0: add patch to improve threading stability --- .../dbus-1.3.0/improve-threading-stability.patch | 38 ++++++++++++++++++++++ recipes/dbus/dbus_1.3.0.bb | 3 +- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 recipes/dbus/dbus-1.3.0/improve-threading-stability.patch (limited to 'recipes/dbus') diff --git a/recipes/dbus/dbus-1.3.0/improve-threading-stability.patch b/recipes/dbus/dbus-1.3.0/improve-threading-stability.patch new file mode 100644 index 0000000000..59de6ef27f --- /dev/null +++ b/recipes/dbus/dbus-1.3.0/improve-threading-stability.patch @@ -0,0 +1,38 @@ +From ae95a0ff9651a774cd983436d7e656c62492659c Mon Sep 17 00:00:00 2001 +From: Michael Meeks +Date: Fri, 12 Mar 2010 16:50:27 +0000 +Subject: [DBusConnection] When handling a watch, return if another thread is doing I/O + +http://lists.freedesktop.org/archives/dbus/2010-March/012337.html + +Previously, the watch handler would block until the I/O path was available. +However, if another non-main thread was doing a synchronous call, this would +cause the main thread to block on that thread, a highly undesirable +thing because it's important for the main thread to remain responsive +for user interfaces. + +Signed-off-by: Colin Walters +Signed-off-by: Thiago Macieira +--- +diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c +index 5fb234d..69fdf53 100644 +--- a/dbus/dbus-connection.c ++++ b/dbus/dbus-connection.c +@@ -1435,7 +1435,14 @@ _dbus_connection_handle_watch (DBusWatch *watch, + _dbus_verbose ("%s start\n", _DBUS_FUNCTION_NAME); + + CONNECTION_LOCK (connection); +- _dbus_connection_acquire_io_path (connection, -1); ++ ++ if (!_dbus_connection_acquire_io_path (connection, 1)) ++ { ++ /* another thread is handling the message */ ++ CONNECTION_UNLOCK (connection); ++ return TRUE; ++ } ++ + HAVE_LOCK_CHECK (connection); + retval = _dbus_transport_handle_watch (connection->transport, + watch, condition); +-- +cgit v0.8.3-6-g21f6 diff --git a/recipes/dbus/dbus_1.3.0.bb b/recipes/dbus/dbus_1.3.0.bb index 3abc40a0d4..a06d9dc479 100644 --- a/recipes/dbus/dbus_1.3.0.bb +++ b/recipes/dbus/dbus_1.3.0.bb @@ -10,6 +10,7 @@ SRC_URI = "\ file://will-5.patch;patch=1 \ file://will-6.patch;patch=1 \ \ + file://improve-threading-stability.patch;patch=1 \ file://tmpdir.patch;patch=1 \ file://fix-install-daemon.patch;patch=1 \ file://0001-Make-the-default-DBus-reply-timeout-configurable.patch;patch=1 \ @@ -19,4 +20,4 @@ SRC_URI = "\ # This is the development version of dbus that will lead to 1.4.x DEFAULT_PREFERENCE = "-1" -PR = "r1" +PR = "r2" -- cgit 1.2.3-korg