From 719195ff044564911344e88541b7bfd0cc4fbb27 Mon Sep 17 00:00:00 2001 From: Emmanuel Milou Date: Wed, 20 Jan 2010 17:55:11 -0500 Subject: [PATCH] [#2518] Functionnal on the client side --- sflphone-client-gnome/src/callable_obj.c | 2 +- sflphone-client-gnome/src/codeclist.c | 22 +++++++++++++------- sflphone-client-gnome/src/codeclist.h | 6 +++--- sflphone-client-gnome/src/config/audioconf.c | 15 ++++++------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/sflphone-client-gnome/src/callable_obj.c b/sflphone-client-gnome/src/callable_obj.c index 240488b70..b1b2cea6c 100644 --- a/sflphone-client-gnome/src/callable_obj.c +++ b/sflphone-client-gnome/src/callable_obj.c @@ -89,7 +89,7 @@ gchar* call_get_audio_codec (callable_obj_t *obj) if (obj) { audio_codec = dbus_get_current_codec_name (obj); - codec = codec_list_get_by_name (audio_codec); + codec = codec_list_get_by_name (audio_codec, NULL); if (codec){ samplerate = codec->sample_rate; format = g_markup_printf_escaped ("%s/%i", audio_codec, samplerate); diff --git a/sflphone-client-gnome/src/codeclist.c b/sflphone-client-gnome/src/codeclist.c index 6d038148f..a74f6e41d 100644 --- a/sflphone-client-gnome/src/codeclist.c +++ b/sflphone-client-gnome/src/codeclist.c @@ -177,19 +177,21 @@ void codec_list_add(codec_t * c, GQueue **queue) { g_queue_push_tail (*queue, (gpointer *) c); } -void codec_set_active (codec_t * c) { +void codec_set_active (codec_t **c) { if(c) { - DEBUG("%s set active", c->name); - c->is_active = TRUE; + DEBUG("%s set active", (*c)->name); + (*c)->is_active = TRUE; } } -void codec_set_inactive (codec_t * c) { +void codec_set_inactive (codec_t **c) { - if(c) - c->is_active = FALSE; + if(c){ + DEBUG("%s set active", (*c)->name); + (*c)->is_active = FALSE; + } } guint codec_list_get_size () { @@ -199,9 +201,13 @@ guint codec_list_get_size () { return g_queue_get_length (codecsCapabilities); } -codec_t* codec_list_get_by_name (const gchar* name) { +codec_t* codec_list_get_by_name (gconstpointer name, GQueue *q) { - GList * c = g_queue_find_custom (codecsCapabilities, name, is_name_codecstruct); + // If NULL is passed as argument, we look into the global capabilities + if (q == NULL) + q = codecsCapabilities; + + GList * c = g_queue_find_custom (q, name, is_name_codecstruct); if(c) return (codec_t *)c->data; else diff --git a/sflphone-client-gnome/src/codeclist.h b/sflphone-client-gnome/src/codeclist.h index 165fd1029..4a1a5f5dd 100644 --- a/sflphone-client-gnome/src/codeclist.h +++ b/sflphone-client-gnome/src/codeclist.h @@ -77,13 +77,13 @@ void codec_list_add (codec_t * c, GQueue **q); * Set a codec active. An active codec will be used for codec negociation * @param name The string description of the codec */ -void codec_set_active (codec_t * c); +void codec_set_active (codec_t **c); /** * Set a codec inactive. An active codec won't be used for codec negociation * @param name The string description of the codec */ -void codec_set_inactive(codec_t * c); +void codec_set_inactive(codec_t **c); /** * Return the number of codecs in the list @@ -96,7 +96,7 @@ guint codec_list_get_size(); * @param name The string description of the codec * @return codec_t* A codec or NULL */ -codec_t * codec_list_get_by_name(const gchar * name); +codec_t * codec_list_get_by_name(gconstpointer name, GQueue *q); /** * Return the codec at the nth position in the list diff --git a/sflphone-client-gnome/src/config/audioconf.c b/sflphone-client-gnome/src/config/audioconf.c index 079134601..1225fbbd2 100644 --- a/sflphone-client-gnome/src/config/audioconf.c +++ b/sflphone-client-gnome/src/config/audioconf.c @@ -408,16 +408,17 @@ codec_active_toggled (GtkCellRendererToggle *renderer UNUSED, gchar *path, gpoin -1); printf("%s, %s\n", name, srate); + printf("%i\n", g_queue_get_length (acc->codecs)); // codec_list_get_by_name(name); if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"8 kHz")==0)) - codec = codec_list_get_by_payload((gconstpointer) 110, NULL); + codec = codec_list_get_by_payload((gconstpointer) 110, acc->codecs); else if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"16 kHz")==0)) - codec = codec_list_get_by_payload((gconstpointer) 111, NULL); + codec = codec_list_get_by_payload((gconstpointer) 111, acc->codecs); else if ((g_strcasecmp(name,"speex")==0) && (g_strcasecmp(srate,"32 kHz")==0)) - codec = codec_list_get_by_payload((gconstpointer) 112, NULL); + codec = codec_list_get_by_payload((gconstpointer) 112, acc->codecs); else - codec = codec_list_get_by_name(name); + codec = codec_list_get_by_name ((gconstpointer) name, acc->codecs); // Toggle active value active = !active; @@ -431,9 +432,9 @@ codec_active_toggled (GtkCellRendererToggle *renderer UNUSED, gchar *path, gpoin // Modify codec queue to represent change if (active) - codec_set_active (codec); + codec_set_active (&codec); else - codec_set_inactive (codec); + codec_set_inactive (&codec); // Perpetuate changes to the deamon // codec_list_update_to_daemon (acc); @@ -587,7 +588,7 @@ GtkWidget* codecs_box (account_t **a) gtk_tree_view_append_column(GTK_TREE_VIEW(codecTreeView), treeViewColumn); // Toggle codec active property on clicked - g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK (codec_active_toggled), (gpointer) codecTreeView); + g_signal_connect(G_OBJECT(renderer), "toggled", G_CALLBACK (codec_active_toggled), (gpointer) *a); // Name column renderer = gtk_cell_renderer_text_new();