diff --git a/src/bin/e_client_volume.c b/src/bin/e_client_volume.c index 6526b209d..a53082d42 100644 --- a/src/bin/e_client_volume.c +++ b/src/bin/e_client_volume.c @@ -117,7 +117,7 @@ e_client_volume_shutdown(void) } E_API E_Client_Volume_Sink * -e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink_Set func_set, E_Client_Volume_Sink_Min_Get func_min_get, E_Client_Volume_Sink_Max_Get func_max_get, void *data) +e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink_Set func_set, E_Client_Volume_Sink_Min_Get func_min_get, E_Client_Volume_Sink_Max_Get func_max_get, E_Client_Volume_Sink_Name_Get func_name_get, void *data) { E_Client_Volume_Sink *sink; @@ -126,6 +126,7 @@ e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink sink->func_get = func_get; sink->func_min_get = func_min_get; sink->func_max_get = func_max_get; + sink->func_name_get = func_name_get; sink->data = data; return sink; @@ -179,6 +180,15 @@ e_client_volume_sink_max_get(const E_Client_Volume_Sink *sink) return 0; } +E_API const char * +e_client_volume_sink_name_get(const E_Client_Volume_Sink *sink) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(sink, 0); + if (sink->func_name_get) + return sink->func_name_get(sink->data); + return NULL; +} + E_API void e_client_volume_sink_append(E_Client *ec, E_Client_Volume_Sink *sink) { diff --git a/src/bin/e_client_volume.h b/src/bin/e_client_volume.h index 3ef0e164a..44de594f8 100644 --- a/src/bin/e_client_volume.h +++ b/src/bin/e_client_volume.h @@ -7,6 +7,7 @@ typedef void (*E_Client_Volume_Sink_Get)(int *volume, Eina_Bool *mute, void *dat typedef void (*E_Client_Volume_Sink_Set)(int volume, Eina_Bool mute, void *data); typedef int (*E_Client_Volume_Sink_Min_Get)(void *data); typedef int (*E_Client_Volume_Sink_Max_Get)(void *data); +typedef const char *(*E_Client_Volume_Sink_Name_Get)(void *data); E_API extern int E_EVENT_CLIENT_VOLUME; E_API extern int E_EVENT_CLIENT_MUTE; @@ -18,6 +19,7 @@ struct _E_Client_Volume_Sink E_Client_Volume_Sink_Set func_set; E_Client_Volume_Sink_Min_Get func_min_get; E_Client_Volume_Sink_Max_Get func_max_get; + E_Client_Volume_Sink_Name_Get func_name_get; void *data; Eina_List *clients; }; @@ -31,12 +33,13 @@ E_API void e_client_volume_mute_set(E_Client *ec, Eina_Bool mute); E_API Evas_Object *e_client_volume_object_add(E_Client *ec, Evas *evas); -E_API E_Client_Volume_Sink *e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink_Set func_set, E_Client_Volume_Sink_Min_Get func_min_get, E_Client_Volume_Sink_Max_Get func_max_get, void *data); +E_API E_Client_Volume_Sink *e_client_volume_sink_new(E_Client_Volume_Sink_Get func_get, E_Client_Volume_Sink_Set func_set, E_Client_Volume_Sink_Min_Get func_min_get, E_Client_Volume_Sink_Max_Get func_max_get, E_Client_Volume_Sink_Name_Get func_name_get, void *data); E_API void e_client_volume_sink_del(E_Client_Volume_Sink *mixer); E_API void e_client_volume_sink_set(E_Client_Volume_Sink *mixer, int volume, Eina_Bool mute); E_API void e_client_volume_sink_get(const E_Client_Volume_Sink *mixer, int *volume, Eina_Bool *mute); E_API int e_client_volume_sink_min_get(const E_Client_Volume_Sink *mixer); E_API int e_client_volume_sink_max_get(const E_Client_Volume_Sink *mixer); +E_API const char * e_client_volume_sink_name_get(const E_Client_Volume_Sink *mixer); E_API void e_client_volume_sink_append(E_Client *ec, E_Client_Volume_Sink *mixer); E_API void e_client_volume_sink_remove(E_Client *ec, E_Client_Volume_Sink *mixer); E_API void e_client_volume_sink_update(E_Client_Volume_Sink *mixer); diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c index 51c7e1f61..5c1880d7f 100644 --- a/src/modules/mixer/e_mod_main.c +++ b/src/modules/mixer/e_mod_main.c @@ -871,6 +871,15 @@ _sink_input_max_get(void *data EINA_UNUSED) return emix_max_volume_get(); } +static const char * +_sink_input_name_get(void *data) +{ + Emix_Sink_Input *input; + + input = data; + return input->name; +} + static pid_t _get_ppid(pid_t pid) { @@ -926,10 +935,11 @@ _sink_input_event(int type, Emix_Sink_Input *input) DBG("Sink found the client %s", e_client_util_name_get(ec)); sink = e_client_volume_sink_new(_sink_input_get, - _sink_input_set, - _sink_input_min_get, - _sink_input_max_get, - input); + _sink_input_set, + _sink_input_min_get, + _sink_input_max_get, + _sink_input_name_get, + input); e_client_volume_sink_append(ec, sink); _client_sinks = eina_list_append(_client_sinks, sink); return;