From 82a0af2c3007a9ebcbae4c1af4cc40765b1f5c96 Mon Sep 17 00:00:00 2001 From: edman007 Date: Thu, 19 Nov 2009 04:32:13 +0000 Subject: Make the dbus plugin shutdown without showing dbus leaks when compiled with -DDEBUG git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@1066 3ae390bd-cb1e-0410-b409-cd5a39f66f1f --- plugin_dbus.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'plugin_dbus.c') diff --git a/plugin_dbus.c b/plugin_dbus.c index a7b623e..da93949 100644 --- a/plugin_dbus.c +++ b/plugin_dbus.c @@ -372,6 +372,12 @@ void plugin_exit_dbus(void) for (i = dbus_results.signals - 1; i >= 0; i--) { clear_signal_txt(i); } + +#ifdef DEBUG + //needs to be called to actually free everything, but might free stuff + //mpris_dbus uses and cause a crash on shutdown, enable for leak debugging + dbus_shutdown(); +#endif } @@ -504,7 +510,6 @@ static int lcd_dbus_init(void) dbus_error_free(&err); success &= 1; } else { - dbus_connection_ref(sessconn); setup_dbus_events(sessconn); } @@ -513,7 +518,6 @@ static int lcd_dbus_init(void) info("[DBus] Error connecting to the dbus system bus: %s\n", err.message); success &= 2; } else { - dbus_connection_ref(sysconn); setup_dbus_events(sysconn); } @@ -568,7 +572,6 @@ static void handle_inbound_signal(void *signal, int argc, char **argv) if (signal_info->event_name != NULL) { named_event_trigger(signal_info->event_name); } - free_args(argc, argv); } static lcd_sig_t *lcd_register_signal(const char *sender, const char *path, @@ -804,7 +807,6 @@ static DBusHandlerResult lcd_sig_received(DBusConnection * connection, DBusMessa { (void) connection; dbus_message_ref(msg); - lcd_sig_t *sig = sigv; //compare the signal to the one we were assigned if (dbus_message_get_type(msg) != DBUS_MESSAGE_TYPE_SIGNAL) { @@ -817,15 +819,15 @@ static DBusHandlerResult lcd_sig_received(DBusConnection * connection, DBusMessa dbus_message_unref(msg); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } - - char **args; - int argc; - fill_args(msg, &argc, &args); - //call the users function if (sig->callback != NULL) { + char **args; + int argc; + fill_args(msg, &argc, &args); sig->callback(sig->user_data, argc, args); + free_args(argc, args); } + dbus_message_unref(msg); return DBUS_HANDLER_RESULT_HANDLED; } -- cgit v1.2.3