aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mm-base-call.c61
-rw-r--r--src/mm-base-call.h15
-rw-r--r--src/mm-call-list.c90
-rw-r--r--src/mm-call-list.h10
-rw-r--r--src/mm-iface-modem-voice.c29
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);
}