diff options
-rw-r--r-- | src/mm-base-call.c | 61 | ||||
-rw-r--r-- | src/mm-base-call.h | 15 | ||||
-rw-r--r-- | src/mm-call-list.c | 90 | ||||
-rw-r--r-- | src/mm-call-list.h | 10 | ||||
-rw-r--r-- | src/mm-iface-modem-voice.c | 29 |
5 files changed, 30 insertions, 175 deletions
diff --git a/src/mm-base-call.c b/src/mm-base-call.c index 3f4c4a42..95ea2d00 100644 --- a/src/mm-base-call.c +++ b/src/mm-base-call.c @@ -819,65 +819,6 @@ call_send_dtmf (MMBaseCall *self, /*****************************************************************************/ -static void -call_delete (MMBaseCall *self, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GTask *task; - - task = g_task_new (self, NULL, callback, user_data); - g_task_return_boolean (task, TRUE); - g_object_unref (task); -} - -static gboolean -call_delete_finish (MMBaseCall *self, - GAsyncResult *res, - GError **error) -{ - return g_task_propagate_boolean (G_TASK (res), error); -} - -/*****************************************************************************/ - -gboolean -mm_base_call_delete_finish (MMBaseCall *self, - GAsyncResult *res, - GError **error) -{ - if (MM_BASE_CALL_GET_CLASS (self)->delete_finish) { - gboolean deleted; - - deleted = MM_BASE_CALL_GET_CLASS (self)->delete_finish (self, res, error); - if (deleted) - /* We do change the state of this call back to UNKNOWN */ - mm_base_call_change_state (self, MM_CALL_STATE_UNKNOWN, MM_CALL_STATE_REASON_UNKNOWN); - - return deleted; - } - - return g_task_propagate_boolean (G_TASK (res), error); -} - -void -mm_base_call_delete (MMBaseCall *self, - GAsyncReadyCallback callback, - gpointer user_data) -{ - if (MM_BASE_CALL_GET_CLASS (self)->delete && - MM_BASE_CALL_GET_CLASS (self)->delete_finish) { - MM_BASE_CALL_GET_CLASS (self)->delete (self, callback, user_data); - return; - } - - g_task_report_new_error (self, callback, user_data, mm_base_call_delete, - MM_CORE_ERROR, MM_CORE_ERROR_UNSUPPORTED, - "Deleting call is not supported by this modem"); -} - -/*****************************************************************************/ - MMBaseCall * mm_base_call_new (MMBaseModem *modem) { @@ -1053,8 +994,6 @@ mm_base_call_class_init (MMBaseCallClass *klass) klass->accept_finish = call_accept_finish; klass->hangup = call_hangup; klass->hangup_finish = call_hangup_finish; - klass->delete = call_delete; - klass->delete_finish = call_delete_finish; klass->send_dtmf = call_send_dtmf; klass->send_dtmf_finish = call_send_dtmf_finish; diff --git a/src/mm-base-call.h b/src/mm-base-call.h index b6bf8082..938e4581 100644 --- a/src/mm-base-call.h +++ b/src/mm-base-call.h @@ -79,14 +79,6 @@ struct _MMBaseCallClass { gboolean (* send_dtmf_finish) (MMBaseCall *self, GAsyncResult *res, GError **error); - - /* Delete the call */ - void (* delete) (MMBaseCall *self, - GAsyncReadyCallback callback, - gpointer user_data); - gboolean (* delete_finish) (MMBaseCall *self, - GAsyncResult *res, - GError **error); }; GType mm_base_call_get_type (void); @@ -106,11 +98,4 @@ void mm_base_call_change_state (MMBaseCall *self, void mm_base_call_received_dtmf (MMBaseCall *self, const gchar *dtmf); -void mm_base_call_delete (MMBaseCall *self, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_base_call_delete_finish (MMBaseCall *self, - GAsyncResult *res, - GError **error); - #endif /* MM_BASE_CALL_H */ diff --git a/src/mm-call-list.c b/src/mm-call-list.c index 44d4565d..b1950e3a 100644 --- a/src/mm-call-list.c +++ b/src/mm-call-list.c @@ -207,14 +207,6 @@ mm_call_list_send_dtmf_to_active_calls (MMCallList *self, /*****************************************************************************/ -gboolean -mm_call_list_delete_call_finish (MMCallList *self, - GAsyncResult *res, - GError **error) -{ - return g_task_propagate_boolean (G_TASK (res), error); -} - static guint cmp_call_by_path (MMBaseCall *call, const gchar *path) @@ -222,78 +214,34 @@ cmp_call_by_path (MMBaseCall *call, return g_strcmp0 (mm_base_call_get_path (call), path); } -static void -delete_ready (MMBaseCall *call, - GAsyncResult *res, - GTask *task) -{ - MMCallList *self; - const gchar *path; - GError *error = NULL; - GList *l; - - self = g_task_get_source_object (task); - path = g_task_get_task_data (task); - if (!mm_base_call_delete_finish (call, res, &error)) { - /* We report the error */ - g_task_return_error (task, error); - g_object_unref (task); - return; - } - - /* The CALL was properly deleted, we now remove it from our list */ - l = g_list_find_custom (self->priv->list, - path, - (GCompareFunc)cmp_call_by_path); - if (l) { - g_object_unref (MM_BASE_CALL (l->data)); - self->priv->list = g_list_delete_link (self->priv->list, l); - } - - /* We don't need to unref the CALL any more, but we can use the - * reference we got in the method, which is the one kept alive - * during the async operation. */ - mm_base_call_unexport (call); - - g_signal_emit (self, - signals[SIGNAL_CALL_DELETED], 0, - path); - - g_task_return_boolean (task, TRUE); - g_object_unref (task); -} - -void -mm_call_list_delete_call (MMCallList *self, - const gchar *call_path, - GAsyncReadyCallback callback, - gpointer user_data) +gboolean +mm_call_list_delete_call (MMCallList *self, + const gchar *call_path, + GError **error) { - GList *l; - GTask *task; + GList *l; + MMBaseCall *call; l = g_list_find_custom (self->priv->list, (gpointer)call_path, (GCompareFunc)cmp_call_by_path); if (!l) { - g_task_report_new_error (self, - callback, - user_data, - mm_call_list_delete_call, - MM_CORE_ERROR, - MM_CORE_ERROR_NOT_FOUND, - "No CALL found with path '%s'", - call_path); - return; + g_set_error (error, + MM_CORE_ERROR, + MM_CORE_ERROR_NOT_FOUND, + "No call found with path '%s'", + call_path); + return FALSE; } - /* Delete all CALL parts */ - task = g_task_new (self, NULL, callback, user_data); - g_task_set_task_data (task, g_strdup (call_path), g_free); + call = MM_BASE_CALL (l->data); + mm_base_call_unexport (call); + g_signal_emit (self, signals[SIGNAL_CALL_DELETED], 0, call_path); + + g_object_unref (call); + self->priv->list = g_list_delete_link (self->priv->list, l); - mm_base_call_delete (MM_BASE_CALL (l->data), - (GAsyncReadyCallback)delete_ready, - task); + return TRUE; } /*****************************************************************************/ diff --git a/src/mm-call-list.h b/src/mm-call-list.h index 4a761fc8..1c668500 100644 --- a/src/mm-call-list.h +++ b/src/mm-call-list.h @@ -64,13 +64,9 @@ guint mm_call_list_get_count (MMCallList *self); void mm_call_list_add_call (MMCallList *self, MMBaseCall *call); -void mm_call_list_delete_call (MMCallList *self, - const gchar *call_path, - GAsyncReadyCallback callback, - gpointer user_data); -gboolean mm_call_list_delete_call_finish (MMCallList *self, - GAsyncResult *res, - GError **error); +gboolean mm_call_list_delete_call (MMCallList *self, + const gchar *call_path, + GError **error); MMBaseCall *mm_call_list_get_new_incoming (MMCallList *self); MMBaseCall *mm_call_list_get_first_ringing_call (MMCallList *self); diff --git a/src/mm-iface-modem-voice.c b/src/mm-iface-modem-voice.c index e9669f2a..eabb0681 100644 --- a/src/mm-iface-modem-voice.c +++ b/src/mm-iface-modem-voice.c @@ -230,21 +230,6 @@ handle_delete_context_free (HandleDeleteContext *ctx) } static void -handle_delete_ready (MMCallList *list, - GAsyncResult *res, - HandleDeleteContext *ctx) -{ - GError *error = NULL; - - if (!mm_call_list_delete_call_finish (list, res, &error)) - g_dbus_method_invocation_take_error (ctx->invocation, error); - else - mm_gdbus_modem_voice_complete_delete_call (ctx->skeleton, ctx->invocation); - - handle_delete_context_free (ctx); -} - -static void handle_delete_auth_ready (MMBaseModem *self, GAsyncResult *res, HandleDeleteContext *ctx) @@ -267,7 +252,7 @@ handle_delete_auth_ready (MMBaseModem *self, g_dbus_method_invocation_return_error (ctx->invocation, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, - "Cannot delete CALL: device not yet enabled"); + "Cannot delete call: device not yet enabled"); handle_delete_context_free (ctx); return; } @@ -279,15 +264,17 @@ handle_delete_auth_ready (MMBaseModem *self, g_dbus_method_invocation_return_error (ctx->invocation, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, - "Cannot delete CALL: missing CALL list"); + "Cannot delete call: missing call list"); handle_delete_context_free (ctx); return; } - mm_call_list_delete_call (list, - ctx->path, - (GAsyncReadyCallback)handle_delete_ready, - ctx); + if (!mm_call_list_delete_call (list, ctx->path, &error)) + g_dbus_method_invocation_take_error (ctx->invocation, error); + else + mm_gdbus_modem_voice_complete_delete_call (ctx->skeleton, ctx->invocation); + + handle_delete_context_free (ctx); g_object_unref (list); } |