diff options
author | Eion Robb <eion@robbmob.com> | 2011-04-08 17:25:18 +0400 |
---|---|---|
committer | Eion Robb <eion@robbmob.com> | 2011-04-08 17:25:18 +0400 |
commit | 1727b1caa29dc0b86cb6a9d904fa0aad4f7d7ee5 (patch) | |
tree | 234033a5251d2ecb63afb348547ca1043d509d52 | |
parent | a2f70523635da275ca3fa67b041f34a145743139 (diff) |
Awesome patch from skotlex which fixes crashes, hangs and memory leaks in the dbus version of the plugin. Fixes issue #148.
-rw-r--r-- | skype_messaging_dbus.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/skype_messaging_dbus.c b/skype_messaging_dbus.c index 5369d4b..9118d64 100644 --- a/skype_messaging_dbus.c +++ b/skype_messaging_dbus.c @@ -39,6 +39,7 @@ skype_notify_handler(DBusConnection *connection, DBusMessage *message, gpointer dbus_message_iter_init(temp_message, &iterator); if (dbus_message_iter_get_arg_type(&iterator) != DBUS_TYPE_STRING) { + dbus_message_unref(message); return FALSE; } @@ -53,6 +54,13 @@ skype_notify_handler(DBusConnection *connection, DBusMessage *message, gpointer return DBUS_HANDLER_RESULT_HANDLED; } +static void +skype_destroy_handler(GObject *sender, gpointer data) +{ + proxy = NULL; + skype_message_received(g_strdup("CONNSTATUS LOGGEDOUT")); +} + static gboolean skype_connect() { @@ -83,9 +91,14 @@ skype_connect() if (proxy == NULL && error != NULL) { skype_debug_warning("skype_dbus", "%s\n", error->message); + g_error_free(error); return FALSE; } - + + g_signal_connect(G_OBJECT(proxy), "destroy", G_CALLBACK(skype_destroy_handler), NULL); +#ifdef DBUS_MAJOR_VERSION + dbus_g_proxy_set_default_timeout(proxy, 3000); +#endif vtable.message_function = &skype_notify_handler; dbus_connection_register_object_path(dbus_g_connection_get_connection(connection), "/com/Skype/Client", &vtable, NULL); } |