diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-04-06 10:34:02 +0100 |
---|---|---|
committer | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2011-04-06 10:36:34 +0100 |
commit | 3b75abc45c51f18be79ac15685efc28ecc822851 (patch) | |
tree | a3c80fd2c151e95aaec41a3d48b181cfcbd9b355 | |
parent | d208ffca52be5d0a0e585db8ea6d592ce84edfaa (diff) | |
download | wocky-3b75abc45c51f18be79ac15685efc28ecc822851.tar.gz |
meta-porter: disconnect porter signal handlers before trying to close it
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r-- | wocky/wocky-meta-porter.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/wocky/wocky-meta-porter.c b/wocky/wocky-meta-porter.c index 1b5b6f9..165652d 100644 --- a/wocky/wocky-meta-porter.c +++ b/wocky/wocky-meta-porter.c @@ -115,6 +115,8 @@ wocky_meta_porter_error_quark (void) static void register_porter_handlers (WockyMetaPorter *self, WockyPorter *porter, WockyContact *contact); +static void disconnect_porter_signal_handlers (WockyPorter *porter, + PorterData *data); static void porter_data_free (gpointer data) @@ -123,6 +125,10 @@ porter_data_free (gpointer data) if (p->porter != NULL) { + /* We have to make sure we disconnect the handlers or ::closing + * will be fired by close_async, then the callback will unref + * p->porter before we have a chance to do it outselves. */ + disconnect_porter_signal_handlers (p->porter, p); wocky_porter_close_async (p->porter, NULL, NULL, NULL); g_object_unref (p->porter); } |