diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c index 7de9214e5..175722cb1 100644 --- a/src/modules/mixer/e_mod_main.c +++ b/src/modules/mixer/e_mod_main.c @@ -54,7 +54,9 @@ struct _Mon_Data Emix_Source *source; Evas_Object *vu; Ecore_Animator *animator; + double last_time; float samp_max; + float samp_max2; int mon_skips; int mon_update; int mon_samps; @@ -160,23 +162,35 @@ static Eina_Bool _cb_emix_monitor_update(void *data) { Mon_Data *md = data; + double t = ecore_loop_time_get(); + double td = t - md->last_time; + + if (md->samp_max2 < md->samp_max) md->samp_max2 = md->samp_max; + else + { + md->samp_max2 = md->samp_max2 * (1.0 - (0.5 * td)); + if (md->samp_max2 < 0.001) md->samp_max2 = 0.0; + } if (md->mon_update == 0) { md->mon_skips++; if (md->mon_skips > 5) { - elm_progressbar_value_set(md->vu, 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", 0.0); md->animator = NULL; return EINA_FALSE; } return EINA_TRUE; } - elm_progressbar_value_set(md->vu, md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", md->samp_max2); md->mon_update = 0; md->samp_max = 0; md->mon_skips = 0; md->mon_samps = 0; + md->last_time = t; return EINA_TRUE; } @@ -209,23 +223,35 @@ static Eina_Bool _cb_emix_source_monitor_update(void *data) { Mon_Data *md = data; + double t = ecore_loop_time_get(); + double td = t - md->last_time; + + if (md->samp_max2 < md->samp_max) md->samp_max2 = md->samp_max; + else + { + md->samp_max2 = md->samp_max2 * (1.0 - (0.5 * td)); + if (md->samp_max2 < 0.001) md->samp_max2 = 0.0; + } if (md->mon_update == 0) { md->mon_skips++; if (md->mon_skips > 5) { - elm_progressbar_value_set(md->vu, 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", 0.0); md->animator = NULL; return EINA_FALSE; } return EINA_TRUE; } - elm_progressbar_value_set(md->vu, md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", md->samp_max2); md->mon_update = 0; md->samp_max = 0; md->mon_skips = 0; md->mon_samps = 0; + md->last_time = t; return EINA_TRUE; } @@ -685,6 +711,7 @@ _popup_recording_fill(Instance *inst) evas_object_show(bx); inst->recvu = elm_progressbar_add(e_comp->elm); + elm_object_style_set(inst->recvu, "double"); elm_progressbar_unit_format_function_set(inst->recvu, _cb_vu_format_cb, NULL); evas_object_size_hint_weight_set(inst->recvu, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(inst->recvu, EVAS_HINT_FILL, 0.5); @@ -779,6 +806,7 @@ _popup_new(Instance *inst) evas_object_show(bx); inst->vu = elm_progressbar_add(e_comp->elm); + elm_object_style_set(inst->vu, "double"); elm_progressbar_unit_format_function_set(inst->vu, _cb_vu_format_cb, NULL); evas_object_size_hint_weight_set(inst->vu, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(inst->vu, EVAS_HINT_FILL, 0.5); diff --git a/src/modules/mixer/emixer.c b/src/modules/mixer/emixer.c index ab9266d6a..b47759980 100644 --- a/src/modules/mixer/emixer.c +++ b/src/modules/mixer/emixer.c @@ -98,7 +98,9 @@ typedef struct _Mon_Data Evas_Object *fr; Evas_Object *vu; Ecore_Animator *animator; + double last_time; float samp_max; + float samp_max2; int mon_skips; int mon_update; int mon_samps; @@ -110,23 +112,35 @@ static Eina_Bool _cb_emix_monitor_update(void *data) { Mon_Data *md = data; + double t = ecore_loop_time_get(); + double td = t - md->last_time; + + if (md->samp_max2 < md->samp_max) md->samp_max2 = md->samp_max; + else + { + md->samp_max2 = md->samp_max2 * (1.0 - (0.5 * td)); + if (md->samp_max2 < 0.001) md->samp_max2 = 0.0; + } if (md->mon_update == 0) { md->mon_skips++; if (md->mon_skips > 5) { - elm_progressbar_value_set(md->vu, 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", 0.0); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", 0.0); md->animator = NULL; return EINA_FALSE; } return EINA_TRUE; } - elm_progressbar_value_set(md->vu, md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar", md->samp_max); + elm_progressbar_part_value_set(md->vu, "elm.cur.progressbar1", md->samp_max2); md->mon_update = 0; md->samp_max = 0; md->mon_skips = 0; md->mon_samps = 0; + md->last_time = t; return EINA_TRUE; } @@ -550,6 +564,7 @@ _emix_sink_add(Emix_Sink *sink) evas_object_show(hv); vu = elm_progressbar_add(win); + elm_object_style_set(vu, "double"); elm_progressbar_unit_format_function_set(vu, _cb_vu_format_cb, NULL); evas_object_data_set(fr, "vu", vu); evas_object_size_hint_weight_set(vu, EVAS_HINT_EXPAND, 0.0); @@ -1019,6 +1034,7 @@ _emix_sink_input_add(Emix_Sink_Input *input) evas_object_show(hv); vu = elm_progressbar_add(win); + elm_object_style_set(vu, "double"); elm_progressbar_unit_format_function_set(vu, _cb_vu_format_cb, NULL); evas_object_data_set(fr, "vu", vu); evas_object_size_hint_weight_set(vu, EVAS_HINT_EXPAND, 0.0); @@ -1463,6 +1479,7 @@ _emix_source_add(Emix_Source *source) evas_object_show(bxv); vu = elm_progressbar_add(win); + elm_object_style_set(vu, "double"); elm_progressbar_unit_format_function_set(vu, _cb_vu_format_cb, NULL); evas_object_data_set(fr, "vu", vu); evas_object_size_hint_weight_set(vu, EVAS_HINT_EXPAND, 0.0);