eion/purple-hangouts

Parents 54b26f7ac4e5
Children f6b6760a4d76
Fix for memleak and "something tried to register a callback..." message
  • +19 -10
    libhangouts.c
  • --- a/libhangouts.c Thu Mar 08 09:12:02 2018 +1300
    +++ b/libhangouts.c Mon Mar 26 19:33:04 2018 +1300
    @@ -322,6 +322,19 @@
    static gulong chat_conversation_typing_signal = 0;
    +#if !PURPLE_VERSION_CHECK(3, 0, 0)
    +static gulong deleting_chat_buddy_signal = 0;
    +
    +// See workaround for purple_chat_conversation_find_user() in purplecompat.h
    +static void
    +hangouts_deleting_chat_buddy(PurpleConvChatBuddy *cb)
    +{
    + if (g_dataset_get_data(cb, "chat") != NULL) {
    + g_dataset_destroy(cb);
    + }
    +}
    +#endif
    +
    static void
    hangouts_login(PurpleAccount *account)
    {
    @@ -384,6 +397,12 @@
    if (!chat_conversation_typing_signal) {
    chat_conversation_typing_signal = purple_signal_connect(purple_conversations_get_handle(), "chat-conversation-typing", purple_connection_get_protocol(pc), PURPLE_CALLBACK(hangouts_conv_send_typing), ha);
    }
    +
    +#if !PURPLE_VERSION_CHECK(3, 0, 0)
    + if (!deleting_chat_buddy_signal) {
    + deleting_chat_buddy_signal = purple_signal_connect(purple_conversations_get_handle(), "deleting-chat-buddy", purple_connection_get_protocol(pc), PURPLE_CALLBACK(hangouts_deleting_chat_buddy), NULL);
    + }
    +#endif
    ha->active_client_timeout = g_timeout_add_seconds(HANGOUTS_ACTIVE_CLIENT_TIMEOUT, ((GSourceFunc) hangouts_set_active_client), pc);
    }
    @@ -753,14 +772,6 @@
    void _purple_socket_init(void);
    void _purple_socket_uninit(void);
    -// See workaround for purple_chat_conversation_find_user() in purplecompat.h
    -static void
    -hangouts_deleting_chat_buddy(PurpleConvChatBuddy *cb)
    -{
    - if (g_dataset_get_data(cb, "chat") != NULL) {
    - g_dataset_destroy(cb);
    - }
    -}
    static gboolean
    libpurple2_plugin_load(PurplePlugin *plugin)
    @@ -768,8 +779,6 @@
    _purple_socket_init();
    purple_http_init();
    - purple_signal_connect(purple_conversations_get_handle(), "deleting-chat-buddy", plugin, PURPLE_CALLBACK(hangouts_deleting_chat_buddy), NULL);
    -
    return plugin_load(plugin, NULL);
    }