bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1da2bbcd9c8504925b4b585753d4d7061ba073c6

commit 1da2bbcd9c8504925b4b585753d4d7061ba073c6
Author: Marcel Hollerbach <marcel-hollerb...@t-online.de>
Date:   Wed Sep 7 11:02:02 2016 +0200

    mixer: introduce Barrier checks
    
    in this barrier checks the module checks that the user is explicit going
    over the value of 100%
---
 src/modules/mixer/e_mod_main.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c
index fd3e808..bff3be4 100644
--- a/src/modules/mixer/e_mod_main.c
+++ b/src/modules/mixer/e_mod_main.c
@@ -6,6 +6,12 @@
 
 #define VOLUME_STEP 5
 
+#define BARRIER_CHECK(old_val, new_val) \
+   (old_val > EMIX_VOLUME_BARRIER - 20) && \
+   (old_val <= EMIX_VOLUME_BARRIER) && \
+   (new_val > EMIX_VOLUME_BARRIER) && \
+   (new_val < EMIX_VOLUME_BARRIER + 20)
+
 int _e_emix_log_domain;
 static Eina_Bool init;
 
@@ -175,6 +181,10 @@ _volume_increase_cb(E_Object *obj EINA_UNUSED, const char 
*params EINA_UNUSED)
 
    EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
    Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
+
+   if (BARRIER_CHECK(s->volume.volumes[0], s->volume.volumes[0] + VOLUME_STEP))
+     return;
+
    volume.channel_count = s->volume.channel_count;
    volume.volumes = calloc(s->volume.channel_count, sizeof(int));
    for (i = 0; i < volume.channel_count; i++)
@@ -360,12 +370,19 @@ _slider_changed_cb(void *data EINA_UNUSED, Evas_Object 
*obj,
    int val;
    Emix_Volume v;
    unsigned int i;
+   int pval;
 
    EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
    Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
+
+   pval = s->volume.volumes[0];
+
    val = (int)elm_slider_value_get(obj);
    v.volumes = calloc(s->volume.channel_count, sizeof(int));
    v.channel_count = s->volume.channel_count;
+   if (BARRIER_CHECK(pval, val))
+     val = 100;
+
    for (i = 0; i < s->volume.channel_count; i++) v.volumes[i] = val;
    emix_sink_volume_set(s, v);
    elm_slider_value_set(obj, val);

-- 


Reply via email to