From 87bd645f1f0fe113374274d0ad44f35148eb37b5 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.net> Date: Wed, 23 Sep 2009 15:59:44 -0400 Subject: [PATCH] [#2176] Fix detaching one participant while keeping communication to others --- sflphone-client-gnome/src/contacts/calltree.c | 6 ++++++ sflphone-common/src/managerimpl.cpp | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sflphone-client-gnome/src/contacts/calltree.c b/sflphone-client-gnome/src/contacts/calltree.c index 15eda898e5..b9bd6869a6 100644 --- a/sflphone-client-gnome/src/contacts/calltree.c +++ b/sflphone-client-gnome/src/contacts/calltree.c @@ -1283,7 +1283,11 @@ static void drag_end_cb(GtkWidget * widget, GdkDragContext * context, gpointer d sflphone_detach_participant(selected_call_id); if(selected_call != NULL && dragged_conf != NULL) + { + DEBUG("Adding a participant, since dragged call on a conference"); + sflphone_add_participant(selected_call_id, dragged_call_id); + } } else { @@ -1395,6 +1399,7 @@ void drag_data_received_cb(GtkWidget *widget, GdkDragContext *context, gint x, g dragged_path_depth = gtk_tree_path_get_depth(drop_path); dragged_call_id = "NULL"; dragged_call = NULL; + dragged_conf = NULL; g_print(" AFTER dragged_path %s, dragged_call_id %s, dragged_path_depth %i\n", dragged_path, dragged_call_id, dragged_path_depth); break; @@ -1419,6 +1424,7 @@ void drag_data_received_cb(GtkWidget *widget, GdkDragContext *context, gint x, g dragged_path_depth = gtk_tree_path_get_depth(drop_path); dragged_call_id = "NULL"; dragged_call = NULL; + dragged_conf = NULL; g_print(" BEFORE dragged_path %s, dragged_call_id %s, dragged_path_depth %i\n", dragged_path, dragged_call_id, dragged_path_depth); break; diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index ed813c30ea..9f6e24540f 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -804,7 +804,7 @@ ManagerImpl::removeConference(const ConfID& conference_id) return; - /* + // unbind main participant from conference _audiodriver->getMainBuffer()->unBindAll(default_id); @@ -818,7 +818,7 @@ ManagerImpl::removeConference(const ConfID& conference_id) // switchCall(""); _audiodriver->getMainBuffer()->bindCallID(*iter_p, default_id); } - */ + @@ -1311,6 +1311,8 @@ void ManagerImpl::processRemainingParticipant(CallID current_call_id, Conference *conf) { + _debug("ManagerImpl::processRemainingParticipant()\n"); + if(conf->getNbParticipants() > 1) { -- GitLab