[#2518] Functionnal on the client side

This commit is contained in:
Emmanuel Milou
2010-01-20 17:55:11 -05:00
parent 324495cc2c
commit 719195ff04
4 changed files with 26 additions and 19 deletions

View File

@ -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);

View File

@ -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

View File

@ -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

View File

@ -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();