diff -u consolekit-0.2.10/debian/changelog consolekit-0.2.10/debian/changelog --- consolekit-0.2.10/debian/changelog +++ consolekit-0.2.10/debian/changelog @@ -1,3 +1,11 @@ +consolekit (0.2.10-1ubuntu5) intrepid; urgency=low + + * Patches pulled from Fedora that will are in 0.3: + - Correctly shutdown event logger threads (LP: #196724) + - Return PolicyKit results when the action is denied (LP: #268944) + + -- James Westby Thu, 11 Sep 2008 12:09:17 +0100 + consolekit (0.2.10-1ubuntu4) intrepid; urgency=low * Enable PolicyKit controlled shutdown/reboot functionality (LP: #250506): diff -u consolekit-0.2.10/debian/patches/series consolekit-0.2.10/debian/patches/series --- consolekit-0.2.10/debian/patches/series +++ consolekit-0.2.10/debian/patches/series @@ -5,0 +6,2 @@ +06-polkit-result.patch +07-fix-thread-shutdown.patch only in patch2: unchanged: --- consolekit-0.2.10.orig/debian/patches/06-polkit-result.patch +++ consolekit-0.2.10/debian/patches/06-polkit-result.patch @@ -0,0 +1,14 @@ +diff -up ConsoleKit-0.2.10/src/ck-manager.c.polkit-result ConsoleKit-0.2.10/src/ck-manager.c +--- ConsoleKit-0.2.10/src/ck-manager.c.polkit-result 2008-04-05 19:01:36.000000000 -0400 ++++ ConsoleKit-0.2.10/src/ck-manager.c 2008-04-05 19:01:41.000000000 -0400 +@@ -1123,8 +1123,8 @@ _check_polkit_for_action (CkManager + if (pk_result != POLKIT_RESULT_YES) { + error = g_error_new (CK_MANAGER_ERROR, + CK_MANAGER_ERROR_NOT_PRIVILEGED, +- "Not privileged for action: %s", +- action); ++ "Not privileged for action: %s %s", ++ action, polkit_result_to_string_representation (pk_result)); + dbus_error_free (&dbus_error); + dbus_g_method_return_error (context, error); + g_error_free (error); only in patch2: unchanged: --- consolekit-0.2.10.orig/debian/patches/07-fix-thread-shutdown.patch +++ consolekit-0.2.10/debian/patches/07-fix-thread-shutdown.patch @@ -0,0 +1,97 @@ +diff --git a/src/ck-event-logger.c b/src/ck-event-logger.c +index 2fded87..92bf987 100644 +--- a/src/ck-event-logger.c ++++ b/src/ck-event-logger.c +@@ -254,12 +254,16 @@ writer_thread_start (CkEventLogger *event_logger) + { + CkLogEvent *event; + +- while ((event = g_async_queue_pop (event_logger->priv->event_queue)) != NULL) { ++ while (1) { ++ event = g_async_queue_pop (event_logger->priv->event_queue); ++ if (event == NULL || event->type == CK_LOG_EVENT_NONE) { ++ break; ++ } + write_log_for_event (event_logger, event); + ck_log_event_free (event); + } + +- g_thread_exit (NULL); ++ g_debug ("Writer thread received None event - exiting"); + return NULL; + } + +@@ -274,7 +278,7 @@ create_writer_thread (CkEventLogger *event_logger) + event_logger->priv->writer_thread = g_thread_create_full ((GThreadFunc)writer_thread_start, + event_logger, + 65536, +- FALSE, ++ TRUE, + TRUE, + G_THREAD_PRIORITY_NORMAL, + &error); +@@ -284,6 +288,22 @@ create_writer_thread (CkEventLogger *event_logger) + } + } + ++static void ++destroy_writer_thread (CkEventLogger *event_logger) ++{ ++ CkLogEvent event; ++ ++ event.type = CK_LOG_EVENT_NONE; ++ ++ g_debug ("Destroying writer thread"); ++ g_async_queue_push (event_logger->priv->event_queue, ++ &event); ++#if 1 ++ g_debug ("Joining writer thread"); ++ g_thread_join (event_logger->priv->writer_thread); ++#endif ++} ++ + static GObject * + ck_event_logger_constructor (GType type, + guint n_construct_properties, +@@ -394,6 +414,8 @@ ck_event_logger_finalize (GObject *object) + + g_return_if_fail (event_logger->priv != NULL); + ++ destroy_writer_thread (event_logger); ++ + if (event_logger->priv->event_queue != NULL) { + g_async_queue_unref (event_logger->priv->event_queue); + } +diff --git a/src/ck-log-event.h b/src/ck-log-event.h +index 149f49b..64dec58 100644 +--- a/src/ck-log-event.h ++++ b/src/ck-log-event.h +@@ -27,7 +27,8 @@ G_BEGIN_DECLS + + typedef enum + { +- CK_LOG_EVENT_START = 0, ++ CK_LOG_EVENT_NONE = 0, ++ CK_LOG_EVENT_START, + CK_LOG_EVENT_STOP, + CK_LOG_EVENT_SYSTEM_START, + CK_LOG_EVENT_SYSTEM_STOP, +@@ -44,6 +45,10 @@ typedef enum + + typedef struct + { ++} CkLogNoneEvent; ++ ++typedef struct ++{ + } CkLogSystemStopEvent; + + typedef struct +@@ -117,6 +122,7 @@ typedef struct + typedef struct + { + union { ++ CkLogNoneEvent none; + CkLogSystemRestartEvent system_start; + CkLogSystemStopEvent system_stop; + CkLogSystemRestartEvent system_restart;