diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c index a5a715a19a1a07d751a23203bda23e301b41d624..f9ac4d05a1b8777fdb54602a00b6960b2d69db41 100644 --- a/sflphone-client-gnome/src/contacts/calltree.c +++ b/sflphone-client-gnome/src/contacts/calltree.c @@ -706,7 +706,33 @@ void calltree_remove_conference (calltab_t* tab, const conference_obj_t* conf) DEBUG("calltree_remove_conference %s\n", conf->_confID); - + GtkTreeIter iter; + GValue val; + conference_obj_t * iterCall; + GtkListStore* store = tab->store; + + int nbChild = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL); + int i; + for( i = 0; i < nbChild; i++) + { + if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, i)) + { + val.g_type = 0; + gtk_tree_model_get_value (GTK_TREE_MODEL(store), &iter, 2, &val); + + iterCall = (conference_obj_t*) g_value_get_pointer(&val); + g_value_unset(&val); + + if(iterCall == conf) + { + gtk_list_store_remove(store, &iter); + } + } + } + // callable_obj_t * selectedCall = calltab_get_selected_call(tab); + // if(selectedCall == c) + // calltab_select_call(tab, NULL); + toolbar_update_buttons(); } diff --git a/sflphone-client-gnome/src/contacts/conferencelist.c b/sflphone-client-gnome/src/contacts/conferencelist.c index 2e416f7a63e97e9ff9ed3cccc7acb34a31f6d166..9dee60e481f979646486623414c20a86f5122d42 100644 --- a/sflphone-client-gnome/src/contacts/conferencelist.c +++ b/sflphone-client-gnome/src/contacts/conferencelist.c @@ -59,7 +59,6 @@ conferencelist_add(const conference_obj_t* conf) gchar* c = (gchar*)conferencelist_get(conf->_confID); if(!c) { - g_print("Conference id(s): %s\n", conf->_confID); g_queue_push_tail (conferenceQueue, (gpointer)conf); } } @@ -78,6 +77,7 @@ conferencelist_remove (const gchar* conf) conference_obj_t* conferencelist_get (const gchar* conf_id) { + GList* c = g_queue_find_custom(conferenceQueue, conf_id, is_confID_confstruct); if (c) { diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index f1e56f2ef98068df9b690a8f329492c3dfe5aded..7a6fe42395779e1099a03841ffb6343d2255a150 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -233,14 +233,11 @@ conference_removed_cb (DBusGProxy *proxy UNUSED, const gchar* confID, void * foo UNUSED ) { - DEBUG ("Conference removed\n"); + DEBUG ("Conference removed %s\n", confID); - // sflphone_display_transfer_status("Transfer successfull"); conference_obj_t * c = conferencelist_get(confID); calltree_remove_conference (current_calls, c); - conferencelist_remove(c->_confID); - } @@ -415,7 +412,7 @@ dbus_connect () "conferenceAdded", G_CALLBACK(conference_added_cb), NULL, NULL); dbus_g_proxy_add_signal (callManagerProxy, - "conferenceRemoved", G_TYPE_INVALID); + "conferenceRemoved", G_TYPE_STRING, G_TYPE_INVALID); dbus_g_proxy_connect_signal (callManagerProxy, "conferenceRemoved", G_CALLBACK(conference_removed_cb), NULL, NULL); diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index fb760fd37c806effbdc4e7a1e71650df17869afd..8154ba3964d272226a8a59e7ffa1aadd3d8d6254 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -708,7 +708,8 @@ ManagerImpl::removeConference(const ConfID& conference_id) _debug("ManagerImpl:: error cannot remove conference id: %s\n", conference_id.c_str()); // broadcast a signal over dbus - _dbus->getCallManager()->conferenceRemoved(default_conf); + _debug("ManagerImpl:: broadcast call removed on dbus: %s\n", conference_id.c_str()); + _dbus->getCallManager()->conferenceRemoved(conference_id); }