diff --git a/daemon/src/dbus/callmanager-introspec.xml b/daemon/src/dbus/callmanager-introspec.xml index bf819e5cb6111091138c3ba8346edd8069130ce5..a7ce5f874e4a09d4f4ceec50557989b60ec2201e 100644 --- a/daemon/src/dbus/callmanager-introspec.xml +++ b/daemon/src/dbus/callmanager-introspec.xml @@ -81,6 +81,11 @@ The callID. </tp:docstring> </arg> + <arg type="b" name="isHungUp" direction="out"> + <tp:docstring> + Returns true is the call has been hungup. False otherwise. + </tp:docstring> + </arg> </method> <method name="hangUpConference" tp:name-for-bindings="hangUpConference"> @@ -93,6 +98,11 @@ The unique conference ID. </tp:docstring> </arg> + <arg type="b" name="isHungUp" direction="out"> + <tp:docstring> + Returns true is the conference has been hungup. False otherwise. + </tp:docstring> + </arg> </method> <method name="hold" tp:name-for-bindings="hold"> diff --git a/daemon/src/dbus/callmanager.cpp b/daemon/src/dbus/callmanager.cpp index 2f8464a7f59fc90ce4aba6da4b70a3bcab5558b9..31160fb5867524a0717f937e339a6290bdbbc4f3 100644 --- a/daemon/src/dbus/callmanager.cpp +++ b/daemon/src/dbus/callmanager.cpp @@ -96,16 +96,16 @@ CallManager::accept(const std::string& callID) Manager::instance().answerCall(callID); } -void +bool CallManager::hangUp(const std::string& callID) { - Manager::instance().hangupCall(callID); + return Manager::instance().hangupCall(callID); } -void +bool CallManager::hangUpConference(const std::string& confID) { - Manager::instance().hangupConference(confID); + return Manager::instance().hangupConference(confID); } void diff --git a/daemon/src/dbus/callmanager.h b/daemon/src/dbus/callmanager.h index 0c04eca07562af77521cc9951492420850ba72ec..143ae318b0a05ce8f682606442e132a9984dd18c 100644 --- a/daemon/src/dbus/callmanager.h +++ b/daemon/src/dbus/callmanager.h @@ -78,7 +78,7 @@ class CallManager void refuse(const std::string& callID); void accept(const std::string& callID); - void hangUp(const std::string& callID); + bool hangUp(const std::string& callID); void hold(const std::string& callID); void unhold(const std::string& callID); void transfer(const std::string& callID, const std::string& to); @@ -94,7 +94,7 @@ class CallManager void addMainParticipant(const std::string& confID); void detachParticipant(const std::string& callID); void joinConference(const std::string& sel_confID, const std::string& drag_confID); - void hangUpConference(const std::string& confID); + bool hangUpConference(const std::string& confID); void holdConference(const std::string& confID); void unholdConference(const std::string& confID); std::vector<std::string> getConferenceList(); diff --git a/gnome/src/dbus/callmanager-introspec.xml b/gnome/src/dbus/callmanager-introspec.xml index bf819e5cb6111091138c3ba8346edd8069130ce5..a7ce5f874e4a09d4f4ceec50557989b60ec2201e 100644 --- a/gnome/src/dbus/callmanager-introspec.xml +++ b/gnome/src/dbus/callmanager-introspec.xml @@ -81,6 +81,11 @@ The callID. </tp:docstring> </arg> + <arg type="b" name="isHungUp" direction="out"> + <tp:docstring> + Returns true is the call has been hungup. False otherwise. + </tp:docstring> + </arg> </method> <method name="hangUpConference" tp:name-for-bindings="hangUpConference"> @@ -93,6 +98,11 @@ The unique conference ID. </tp:docstring> </arg> + <arg type="b" name="isHungUp" direction="out"> + <tp:docstring> + Returns true is the conference has been hungup. False otherwise. + </tp:docstring> + </arg> </method> <method name="hold" tp:name-for-bindings="hold"> diff --git a/gnome/src/dbus/dbus.c b/gnome/src/dbus/dbus.c index 167c1f2f61e6f8c89d4d3d1eadebef16a1f44cea..41f002c9e4e9615834c8d8a4b14ac51a715af13e 100644 --- a/gnome/src/dbus/dbus.c +++ b/gnome/src/dbus/dbus.c @@ -972,8 +972,10 @@ dbus_stop_recorded_file_playback(const gchar *filepath) } static void -hang_up_reply_cb(G_GNUC_UNUSED DBusGProxy *proxy, GError *error, G_GNUC_UNUSED gpointer userdata) +hang_up_reply_cb(G_GNUC_UNUSED DBusGProxy *proxy, gboolean is_hung_up, GError *error, G_GNUC_UNUSED gpointer userdata) { + if (!is_hung_up) + g_warning("Did not hang up properly"); check_error(error); }