diff --git a/daemon/src/dbus/callmanager-introspec.xml b/daemon/src/dbus/callmanager-introspec.xml index 07630ac456e632f1bc898bd6f8fb6a94bf714681..ff8a7121dfcdf561e3b6cf425bf38b6c53f0e942 100644 --- a/daemon/src/dbus/callmanager-introspec.xml +++ b/daemon/src/dbus/callmanager-introspec.xml @@ -160,6 +160,22 @@ </arg> </method> + <method name="isValidCall" tp:name-for-bindings="isValidCall"> + <tp:docstring> + Tests whether or not a call exists. + </tp:docstring> + <arg type="s" name="callID" direction="in"> + <tp:docstring> + The call ID. + </tp:docstring> + </arg> + <arg type="b" name="isValid" direction="out"> + <tp:docstring> + Returns true is the call has already been created/can be retrieved. False otherwise. + </tp:docstring> + </arg> + </method> + <method name="startTone" tp:name-for-bindings="startTone"> <tp:docstring> Start audio stream and play tone. diff --git a/daemon/src/dbus/callmanager.cpp b/daemon/src/dbus/callmanager.cpp index 465c2014cce7e01aa6c35b80e55ed8a0bea9b888..2f8464a7f59fc90ce4aba6da4b70a3bcab5558b9 100644 --- a/daemon/src/dbus/callmanager.cpp +++ b/daemon/src/dbus/callmanager.cpp @@ -288,6 +288,12 @@ CallManager::getCallList() return Manager::instance().getCallList(); } +bool +CallManager::isValidCall(const std::string &callID) +{ + return Manager::instance().isValidCall(callID); +} + void CallManager::playDTMF(const std::string& key) { diff --git a/daemon/src/dbus/callmanager.h b/daemon/src/dbus/callmanager.h index 367ad8e92f184ea33533d617d5de957bdb7c9110..0c04eca07562af77521cc9951492420850ba72ec 100644 --- a/daemon/src/dbus/callmanager.h +++ b/daemon/src/dbus/callmanager.h @@ -85,6 +85,7 @@ class CallManager void attendedTransfer(const std::string& transferID, const std::string& targetID); std::map< std::string, std::string > getCallDetails(const std::string& callID); std::vector< std::string > getCallList(); + bool isValidCall(const std::string &callID); /* Conference related methods */ void joinParticipant(const std::string& sel_callID, const std::string& drag_callID); diff --git a/gnome/src/contacts/calltree.c b/gnome/src/contacts/calltree.c index 7b76dd5c04789f87e18b244e5a863308a392bf15..501f8dbe10e858343c58e5af43764662f4476ca9 100644 --- a/gnome/src/contacts/calltree.c +++ b/gnome/src/contacts/calltree.c @@ -624,12 +624,22 @@ update_call(GtkTreeModel *model, G_GNUC_UNUSED GtkTreePath *path, GtkTreeIter *i /* Update text */ gchar *description = NULL; - gchar *audio_codec = call_get_audio_codec(call); + + gchar *audio_codec; + gchar *video_codec; + + /* Don't get codec names if call does not yet exist */ + if (dbus_is_valid_call(call->_callID)) { + audio_codec = call_get_audio_codec(call); #ifdef SFL_VIDEO - gchar *video_codec = call_get_video_codec(call); + video_codec = call_get_video_codec(call); #else - gchar *video_codec = g_strdup(""); + video_codec = g_strdup(""); #endif + } else { + audio_codec = g_strdup(""); + video_codec = g_strdup(""); + } if (call->_state == CALL_STATE_TRANSFER) description = calltree_display_call_info(call, DISPLAY_TYPE_CALL_TRANSFER, "", ""); diff --git a/gnome/src/dbus/callmanager-introspec.xml b/gnome/src/dbus/callmanager-introspec.xml index 07630ac456e632f1bc898bd6f8fb6a94bf714681..ff8a7121dfcdf561e3b6cf425bf38b6c53f0e942 100644 --- a/gnome/src/dbus/callmanager-introspec.xml +++ b/gnome/src/dbus/callmanager-introspec.xml @@ -160,6 +160,22 @@ </arg> </method> + <method name="isValidCall" tp:name-for-bindings="isValidCall"> + <tp:docstring> + Tests whether or not a call exists. + </tp:docstring> + <arg type="s" name="callID" direction="in"> + <tp:docstring> + The call ID. + </tp:docstring> + </arg> + <arg type="b" name="isValid" direction="out"> + <tp:docstring> + Returns true is the call has already been created/can be retrieved. False otherwise. + </tp:docstring> + </arg> + </method> + <method name="startTone" tp:name-for-bindings="startTone"> <tp:docstring> Start audio stream and play tone. diff --git a/gnome/src/dbus/dbus.c b/gnome/src/dbus/dbus.c index 68e688856a9fe275354bba70db16b22bd178c254..302d1466be7f563bbcdf3e4d6c4f574f48f41f18 100644 --- a/gnome/src/dbus/dbus.c +++ b/gnome/src/dbus/dbus.c @@ -1786,6 +1786,17 @@ dbus_get_call_details(const gchar *callID) return details; } +gboolean +dbus_is_valid_call(const gchar *callID) +{ + GError *error = NULL; + gboolean valid = FALSE; + org_sflphone_SFLphone_CallManager_is_valid_call(call_proxy, callID, &valid, &error); + check_error(error); + + return valid; +} + gchar ** dbus_get_call_list(void) { diff --git a/gnome/src/dbus/dbus.h b/gnome/src/dbus/dbus.h index 8d574b74113671cc21465821425bff6d47be4e6d..f5e1ccaf06b572b980a07194502f3786fa7b40e9 100644 --- a/gnome/src/dbus/dbus.h +++ b/gnome/src/dbus/dbus.h @@ -500,6 +500,8 @@ gboolean dbus_get_is_recording(const callable_obj_t *); GHashTable *dbus_get_call_details(const gchar *callID); +gboolean dbus_is_valid_call(const gchar *callID); + gchar **dbus_get_call_list(void); GHashTable* dbus_get_conference_details(const gchar *confID);