yoz pushed a commit to branch master.

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

commit cb6ea9f747be869612fe7915f5380d9300cc5d83
Author: Michael Bouchaud <michael.bouch...@ext.actia.fr>
Date:   Thu Feb 23 00:36:17 2017 +0100

    e_client_volume: check volume setted after a slider drag
---
 src/bin/e_client_volume.c      | 15 +++++++++++++++
 src/modules/mixer/e_mod_main.c | 33 +++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+)

diff --git a/src/bin/e_client_volume.c b/src/bin/e_client_volume.c
index 3c41765..187da94 100644
--- a/src/bin/e_client_volume.c
+++ b/src/bin/e_client_volume.c
@@ -11,6 +11,7 @@ static void _e_client_volume_event_simple_free(void *d, 
E_Event_Client *ev);
 static void _e_client_volume_event_simple(E_Client *ec, int type);
 static void _e_client_volume_object_mouse_down_cb(void *data, Evas *e, 
Evas_Object *obj, void *event_info);
 static void _e_client_volume_object_volume_changed(void *data, Evas_Object 
*obj, void *event_info);
+static void _e_client_volume_object_volume_drag_stop(void *data, Evas_Object 
*obj, void *event_info);
 static Eina_Bool _e_client_volume_object_changed(void *data, int type, void 
*event);
 static void _e_client_volume_object_del_cb(void *data, Evas *evas, Evas_Object 
*obj, void *event_info);
 
@@ -77,6 +78,16 @@ _e_client_volume_object_volume_changed(void *data, 
Evas_Object *obj, void *event
    e_client_volume_set(ec, elm_slider_value_get(obj));
 }
 
+static void
+_e_client_volume_object_volume_drag_stop(void *data, Evas_Object *obj, void 
*event_info EINA_UNUSED)
+{
+   E_Client *ec;
+
+   ec = data;
+
+   e_client_volume_set(ec, elm_slider_value_get(obj));
+}
+
 static Eina_Bool
 _e_client_volume_object_changed(void *data, int type EINA_UNUSED, void *event)
 {
@@ -353,6 +364,7 @@ e_client_volume_set(E_Client *ec, int volume)
         e_client_volume_sink_set(sink, ec->volume, ec->mute);
      }
 
+   _e_client_volume_update(ec);
    _e_client_volume_event_simple(ec, E_EVENT_CLIENT_VOLUME);
 }
 
@@ -423,6 +435,9 @@ e_client_volume_object_add(E_Client *ec, Evas *evas)
         evas_object_smart_callback_add(o, "changed",
                                        _e_client_volume_object_volume_changed,
                                        ec);
+        evas_object_smart_callback_add(o, "slider,drag,stop",
+                                       
_e_client_volume_object_volume_drag_stop,
+                                       ec);
         elm_slider_value_set(o, ec->volume);
         edje_object_part_swallow(bx, "e.swallow.volume", o);
         evas_object_show(o);
diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c
index d10bfb6..ac805cc 100644
--- a/src/modules/mixer/e_mod_main.c
+++ b/src/modules/mixer/e_mod_main.c
@@ -1050,6 +1050,17 @@ _bd_hook_volume_changed(void *data, Evas_Object *obj, 
void *event_info EINA_UNUS
 }
 
 static void
+_bd_hook_volume_drag_stop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   E_Client *ec;
+
+   ec = data;
+
+   elm_slider_value_set(obj, ec->volume);
+}
+
+
+static void
 _bd_hook_mute_changed(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
    E_Client *ec;
@@ -1075,6 +1086,24 @@ _bd_hook_sink_volume_changed(void *data, Evas_Object 
*obj, void *event_info EINA
 }
 
 static void
+_bd_hook_sink_volume_drag_stop(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
+{
+   E_Client_Volume_Sink *sink;
+   Evas_Object *check;
+   Eina_Bool mute;
+   int vol;
+
+   sink = data;
+
+   check = evas_object_data_get(obj, "e_sink_check");
+
+   e_client_volume_sink_get(sink, &vol, &mute);
+   elm_slider_value_set(obj, vol);
+   elm_check_state_set(check, mute);
+}
+
+
+static void
 _bd_hook_sink_mute_changed(void *data, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
    E_Client_Volume_Sink *sink;
@@ -1187,6 +1216,8 @@ _e_client_mixer_sink_append(E_Client_Volume_Sink *sink, 
Client_Mixer *cm)
    elm_slider_value_set(slider, volume);
    evas_object_smart_callback_add(slider, "changed",
                                   _bd_hook_sink_volume_changed, sink);
+   evas_object_smart_callback_add(slider, "slider,drag,stop",
+                                  _bd_hook_sink_volume_drag_stop, sink);
    elm_box_pack_end(cm->bx, slider);
    evas_object_show(slider);
 
@@ -1379,6 +1410,8 @@ _bd_hook_cb(void *data, E_Menu *m EINA_UNUSED, 
E_Menu_Item *it EINA_UNUSED)
    evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_slider_value_set(o, ec->volume);
    evas_object_smart_callback_add(o, "changed", _bd_hook_volume_changed, ec);
+   evas_object_smart_callback_add(o, "slider,drag,stop",
+                                  _bd_hook_volume_drag_stop, ec);
    elm_box_pack_end(bx, o);
    evas_object_show(o);
    cm->volume = o;

-- 


Reply via email to