From 7b2ab53f4d1c8f89911973a09a72035df83894c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Thu, 13 Jun 2024 19:35:23 +0200 Subject: [PATCH] call: Track which side hung up the call Adding a boolean flag allows us to distinguish this from situations where the other side ended the call. Part-of: --- src/calls-call.c | 25 +++++++++++++++++++++++++ src/calls-call.h | 5 +++++ 2 files changed, 30 insertions(+) diff --git a/src/calls-call.c b/src/calls-call.c index 7c2103b..b391eeb 100644 --- a/src/calls-call.c +++ b/src/calls-call.c @@ -73,6 +73,7 @@ typedef struct { gboolean inbound; gboolean encrypted; CallsCallType call_type; + gboolean hung_up; } CallsCallPrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (CallsCall, calls_call, G_TYPE_OBJECT) @@ -511,7 +512,12 @@ calls_call_answer (CallsCall *self) void calls_call_hang_up (CallsCall *self) { + CallsCallPrivate *priv; + g_return_if_fail (CALLS_IS_CALL (self)); + priv = calls_call_get_instance_private (self); + + priv->hung_up = TRUE; CALLS_CALL_GET_CLASS (self)->hang_up (self); } @@ -650,3 +656,22 @@ calls_call_set_encrypted (CallsCall *self, g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ENCRYPTED]); } + +/** + * calls_call_get_we_hung_up: + * @self: The call + * + * Get whether we hung up or the remote side. + * + * Returns: `TRUE` if we hung up, otherwise `FALSE` + */ +gboolean +calls_call_get_we_hung_up (CallsCall *self) +{ + CallsCallPrivate *priv; + + g_return_val_if_fail (CALLS_IS_CALL (self), FALSE); + priv = calls_call_get_instance_private (self); + + return priv->hung_up; +} diff --git a/src/calls-call.h b/src/calls-call.h index 5be2854..878df0b 100644 --- a/src/calls-call.h +++ b/src/calls-call.h @@ -58,6 +58,10 @@ typedef enum { CALLS_CALL_TYPE_SIP_VOICE, } CallsCallType; +/** + * CallsCallClass: + * @hang_up: Called to hang up a call. + */ struct _CallsCallClass { GObjectClass parent_class; @@ -88,6 +92,7 @@ void calls_call_hang_up (CallsCall *self); gboolean calls_call_can_dtmf (CallsCall *self); void calls_call_send_dtmf_tone (CallsCall *self, char key); +gboolean calls_call_get_we_hung_up (CallsCall *self); gboolean calls_call_state_parse_nick (CallsCallState *state, const char *nick);