From 92d33f8ca276d1ced74dbf8c235cd6959b72d457 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 7 Jun 2021 16:18:32 +0100 Subject: [PATCH] mixer - add actions for vol+- mute of mic/input/source device --- src/modules/mixer/backend.c | 81 +++++++++++++++++++++++++++++++------ 1 file changed, 69 insertions(+), 12 deletions(-) diff --git a/src/modules/mixer/backend.c b/src/modules/mixer/backend.c index b3c6453e7..7215f673c 100644 --- a/src/modules/mixer/backend.c +++ b/src/modules/mixer/backend.c @@ -33,6 +33,9 @@ static void _volume_mute_cb(E_Object *obj, const char *params); static void _volume_increase_app_cb(E_Object *obj, const char *params); static void _volume_decrease_app_cb(E_Object *obj, const char *params); static void _volume_mute_app_cb(E_Object *obj, const char *params); +static void _volume_increase_source_cb(E_Object *obj, const char *params); +static void _volume_decrease_source_cb(E_Object *obj, const char *params); +static void _volume_mute_source_cb(E_Object *obj, const char *params); static void _actions_register(void); static void _actions_unregister(void); static void _sink_event(int type, void *info); @@ -92,6 +95,9 @@ static E_Action *_action_mute = NULL; static E_Action *_action_incr_app = NULL; static E_Action *_action_decr_app = NULL; static E_Action *_action_mute_app = NULL; +static E_Action *_action_incr_source = NULL; +static E_Action *_action_decr_source = NULL; +static E_Action *_action_mute_source = NULL; static void _notify_cb(void *data EINA_UNUSED, unsigned int id) @@ -179,6 +185,13 @@ _volume_decrease_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) _volume_adjust(-VOLUME_STEP); } +static void +_volume_mute_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) +{ + EINA_SAFETY_ON_NULL_RETURN(_sink_default); + backend_mute_set(!_sink_default->mute); +} + static void _volume_source_adjust(int step) { @@ -214,10 +227,22 @@ _volume_source_adjust(int step) } static void -_volume_mute_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) +_volume_increase_source_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) { - EINA_SAFETY_ON_NULL_RETURN(_sink_default); - backend_mute_set(!_sink_default->mute); + _volume_source_adjust(VOLUME_STEP); +} + +static void +_volume_decrease_source_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) +{ + _volume_source_adjust(-VOLUME_STEP); +} + +static void +_volume_mute_source_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) +{ + EINA_SAFETY_ON_NULL_RETURN(_source_default); + backend_source_mute_set(!_source_default->mute); } static void @@ -266,7 +291,6 @@ _actions_register(void) e_action_predef_name_set("Mixer", _("Increase Volume"), "volume_increase", NULL, NULL, 0); } - _action_decr = e_action_add("volume_decrease"); if (_action_decr) { @@ -274,13 +298,12 @@ _actions_register(void) e_action_predef_name_set("Mixer", _("Decrease Volume"), "volume_decrease", NULL, NULL, 0); } - _action_mute = e_action_add("volume_mute"); if (_action_mute) { _action_mute->func.go = _volume_mute_cb; - e_action_predef_name_set("Mixer", _("Mute volume"), "volume_mute", - NULL, NULL, 0); + e_action_predef_name_set("Mixer", _("Mute volume"), + "volume_mute", NULL, NULL, 0); } _action_incr_app = e_action_add("volume_increase_app"); if (_action_incr_app) @@ -306,6 +329,27 @@ _actions_register(void) _("Mute Volume of Focused Application"), "volume_mute_app", NULL, NULL, 0); } + _action_incr_source = e_action_add("volume_increase_mic"); + if (_action_incr_source) + { + _action_incr_source->func.go = _volume_increase_source_cb; + e_action_predef_name_set("Mixer", _("Increase Mic Volume"), + "volume_increase_mic", NULL, NULL, 0); + } + _action_decr_source = e_action_add("volume_decrease_mic"); + if (_action_decr_source) + { + _action_decr_source->func.go = _volume_decrease_source_cb; + e_action_predef_name_set("Mixer", _("Decrease Mic Volume"), + "volume_decrease_mic", NULL, NULL, 0); + } + _action_mute_source = e_action_add("volume_mute_mic"); + if (_action_mute_source) + { + _action_mute_source->func.go = _volume_mute_source_cb; + e_action_predef_name_set("Mixer", _("Mute Mic volume"), + "volume_mute_mic", NULL, NULL, 0); + } e_comp_canvas_keys_ungrab(); e_comp_canvas_keys_grab(); @@ -320,21 +364,18 @@ _actions_unregister(void) e_action_del("volume_increase"); _action_incr = NULL; } - if (_action_decr) { e_action_predef_name_del("Mixer", _("Decrease Volume")); e_action_del("volume_decrease"); _action_decr = NULL; } - if (_action_mute) { e_action_predef_name_del("Mixer", _("Mute Volume")); e_action_del("volume_mute"); _action_mute = NULL; } - if (_action_incr_app) { e_action_predef_name_del("Mixer", @@ -342,7 +383,6 @@ _actions_unregister(void) e_action_del("volume_increase_app"); _action_incr_app = NULL; } - if (_action_decr_app) { e_action_predef_name_del("Mixer", @@ -350,7 +390,6 @@ _actions_unregister(void) e_action_del("volume_decrease_app"); _action_decr_app = NULL; } - if (_action_mute_app) { e_action_predef_name_del("Mixer", @@ -358,6 +397,24 @@ _actions_unregister(void) e_action_del("volume_mute_app"); _action_mute_app = NULL; } + if (_action_incr_source) + { + e_action_predef_name_del("Mixer", _("Increase Mic Volume")); + e_action_del("volume_increase_mic"); + _action_incr_source = NULL; + } + if (_action_decr_source) + { + e_action_predef_name_del("Mixer", _("Decrease Mic Volume")); + e_action_del("volume_decrease_mic"); + _action_decr_source = NULL; + } + if (_action_mute_source) + { + e_action_predef_name_del("Mixer", _("Mute Mic Volume")); + e_action_del("volume_mute_mic"); + _action_mute_source = NULL; + } e_comp_canvas_keys_ungrab(); e_comp_canvas_keys_grab();