diff options
author | Michael Biebl <biebl@debian.org> | 2011-06-16 17:12:41 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-02-05 08:38:26 +0100 |
commit | 59ed3390b9a798ff8bf9133cbc28c4539ad99f42 (patch) | |
tree | 2009d57abbd0061b4ee230516e004eb83509aac5 /src/mm-callback-info.c | |
parent | bbf8a053e07c66f336ed46a7fb6105dc30645596 (diff) | |
parent | 3dbe8df8bfe8741e1b9a48b56e41517816f17dc1 (diff) |
Imported Debian patch 0.4.997-1debian/0.4.997-1
Diffstat (limited to 'src/mm-callback-info.c')
-rw-r--r-- | src/mm-callback-info.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/mm-callback-info.c b/src/mm-callback-info.c index 1986bb5..a230e69 100644 --- a/src/mm-callback-info.c +++ b/src/mm-callback-info.c @@ -47,19 +47,24 @@ invoke_mm_modem_string_fn (MMCallbackInfo *info) info->error, info->user_data); } - static void modem_destroyed_cb (gpointer data, GObject *destroyed) { MMCallbackInfo *info = data; + /* Reset modem pointer, so that callback know that they shouldn't do + * anything else */ info->modem = NULL; - if (!info->pending_id) { - info->error = g_error_new_literal (MM_MODEM_ERROR, - MM_MODEM_ERROR_REMOVED, - "The modem was removed."); + + /* Overwrite any possible previous error set */ + g_clear_error (&(info->error)); + info->error = g_error_new_literal (MM_MODEM_ERROR, + MM_MODEM_ERROR_REMOVED, + "The modem was removed."); + + /* Only schedule the info if not already done before */ + if (!info->pending_id) mm_callback_info_schedule (info); - } } static void @@ -182,6 +187,14 @@ mm_callback_info_get_data (MMCallbackInfo *info, const char *key) return quark ? g_datalist_id_get_data (&info->qdata, quark) : NULL; } +gboolean +mm_callback_info_check_modem_removed (MMCallbackInfo *info) +{ + g_return_val_if_fail (info != NULL, TRUE); + + return (info->modem ? FALSE : TRUE); +} + MMCallbackInfo * mm_callback_info_ref (MMCallbackInfo *info) { |