[EGIT] [core/enlightenment] master 03/03: add window maximize animation
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d44de2e1928f12c191ba8be78cf6835e400bd0a0 commit d44de2e1928f12c191ba8be78cf6835e400bd0a0 Author: Mike BlumenkrantzDate: Tue Mar 8 18:04:31 2016 -0500 add window maximize animation this has been implemented and working well in desksanity for a couple years, and it's a trivial thing to bring over now that efx is available --- src/bin/e_client.c | 75 ++ src/bin/e_config.c | 15 + src/bin/e_config.h | 5 +- .../e_int_config_window_display.c | 45 + 4 files changed, 113 insertions(+), 27 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index f30dae1..57c4be7 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -1545,10 +1545,17 @@ _e_client_cb_evas_restack(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA static void +_e_client_maximize_done(void *data, E_Efx_Map_Data *emd EINA_UNUSED, Evas_Object *obj EINA_UNUSED) +{ + E_Client *ec = data; + ec->maximize_override = 0; +} + +static void _e_client_maximize(E_Client *ec, E_Maximize max) { int x1, yy1, x2, y2; - int w, h, pw, ph; + int x, y, w, h, pw, ph; int zx, zy, zw, zh; int ecx, ecy, ecw, ech; Eina_Bool override = ec->maximize_override; @@ -1577,25 +1584,30 @@ _e_client_maximize(E_Client *ec, E_Maximize max) switch (max & E_MAXIMIZE_DIRECTION) { case E_MAXIMIZE_BOTH: - evas_object_geometry_set(ec->frame, x1, yy1, w, h); + x = x1, y = yy1; break; case E_MAXIMIZE_VERTICAL: - evas_object_geometry_set(ec->frame, ec->x, yy1, ec->w, h); + x = ec->x, y = yy1, w = ec->w; break; case E_MAXIMIZE_HORIZONTAL: - evas_object_geometry_set(ec->frame, x1, ec->y, w, ec->h); + x = x1, y = ec->y, h = ec->h; break; case E_MAXIMIZE_LEFT: - evas_object_geometry_set(ec->frame, ec->zone->x, ec->zone->y, w / 2, h); + x = ec->zone->x, y = ec->zone->y, w /= 2; break; case E_MAXIMIZE_RIGHT: - evas_object_geometry_set(ec->frame, x1, ec->zone->y, w / 2, h); + x = x1, y = ec->zone->y, w /= 2; break; } +if (e_config->window_maximize_animate && (!starting) && (!ec->changes.need_maximize)) + e_efx_resize(ec->frame, e_config->window_maximize_transition, E_EFX_POINT(x, y), +w, h, e_config->window_maximize_time, _e_client_maximize_done, ec); +else + evas_object_geometry_set(ec->frame, x, y, w, h); break; case E_MAXIMIZE_SMART: @@ -1642,26 +1654,30 @@ _e_client_maximize(E_Client *ec, E_Maximize max) switch (max & E_MAXIMIZE_DIRECTION) { case E_MAXIMIZE_BOTH: - evas_object_geometry_set(ec->frame, zx, zy, zw, zh); + x = zx, y = zy, w = zw, h = zh; break; case E_MAXIMIZE_VERTICAL: - evas_object_geometry_set(ec->frame, ec->x, zy, ec->w, zh); + x = ec->x, y = zy, w = ec->w, h = zh; break; case E_MAXIMIZE_HORIZONTAL: - evas_object_geometry_set(ec->frame, zx, ec->y, zw, ec->h); + x = zx, y = ec->y, w = zw, h = ec->h; break; case E_MAXIMIZE_LEFT: - evas_object_geometry_set(ec->frame, zx, zy, zw / 2, zh); + x = zx, y = zy, w = zw / 2, h = zh; break; case E_MAXIMIZE_RIGHT: - evas_object_geometry_set(ec->frame, zx + zw / 2, zy, zw / 2, zh); + x = zx + zw / 2, y = zy, w = zw / 2, h = zh; break; } - +if (e_config->window_maximize_animate && (!starting) && (!ec->changes.need_maximize)) + e_efx_resize(ec->frame, e_config->window_maximize_transition, E_EFX_POINT(x, y), +w, h, e_config->window_maximize_time, _e_client_maximize_done, ec); +else + evas_object_geometry_set(ec->frame, x, y, w, h); break; case E_MAXIMIZE_FILL: @@ -1689,28 +1705,33 @@ _e_client_maximize(E_Client *ec, E_Maximize max) switch (max & E_MAXIMIZE_DIRECTION) { case E_MAXIMIZE_BOTH: - evas_object_geometry_set(ec->frame, x1, yy1, w, h); + x = x1, y = yy1; break; case E_MAXIMIZE_VERTICAL: - evas_object_geometry_set(ec->frame, ec->x, yy1, ec->w, h); + x = ec->x, y = yy1, w = ec->w; break; case E_MAXIMIZE_HORIZONTAL: - evas_object_geometry_set(ec->frame, x1, ec->y, w, ec->h); + x =
[EGIT] [core/enlightenment] master 01/03: unify client e_hints window size setting in move/resize callbacks
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=103da25b9402a4cb6ec3e17c96ea20c881819d34 commit 103da25b9402a4cb6ec3e17c96ea20c881819d34 Author: Mike BlumenkrantzDate: Tue Mar 8 17:05:57 2016 -0500 unify client e_hints window size setting in move/resize callbacks --- src/bin/e_client.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index dd3801d..f30dae1 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -1460,6 +1460,8 @@ _e_client_cb_evas_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN if (ec->moving || (ecmove == ec)) _e_client_hook_call(E_CLIENT_HOOK_MOVE_UPDATE, ec); e_remember_update(ec); + if (ec->fullscreen || (ec->maximized & E_MAXIMIZE_DIRECTION)) + e_hints_window_size_set(ec); ec->pre_cb.x = x; ec->pre_cb.y = y; } @@ -1500,6 +1502,8 @@ _e_client_cb_evas_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ if (e_client_util_resizing_get(ec) || (ecresize == ec)) _e_client_hook_call(E_CLIENT_HOOK_RESIZE_UPDATE, ec); e_remember_update(ec); + if (ec->fullscreen || (ec->maximized & E_MAXIMIZE_DIRECTION)) + e_hints_window_size_set(ec); ec->pre_cb.w = w; ec->pre_cb.h = h; } @@ -3755,7 +3759,6 @@ e_client_maximize(E_Client *ec, E_Maximize max) } ec->saved.zone = ec->zone->num; - e_hints_window_size_set(ec); _e_client_maximize(ec, max); @@ -3875,7 +3878,6 @@ e_client_unmaximize(E_Client *ec, E_Maximize max) evas_object_smart_callback_call(ec->frame, "unmaximize", NULL); e_client_resize_limit(ec, , ); e_client_util_move_resize_without_frame(ec, x, y, w, h); - e_hints_window_size_set(ec); } if (vert) ec->saved.h = ec->saved.y = 0; @@ -3936,7 +3938,6 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy) ec->saved.w = w; ec->saved.h = h; } - e_hints_window_size_set(ec); ec->saved.layer = ec->layer; if (!e_config->allow_above_fullscreen) --
[EGIT] [core/enlightenment] master 02/03: bump E_VERSION_MAJOR and modapi
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=aa024e0a4f3bb22cc5f3c19b6183811d758a4b23 commit aa024e0a4f3bb22cc5f3c19b6183811d758a4b23 Author: Mike BlumenkrantzDate: Tue Mar 8 18:03:28 2016 -0500 bump E_VERSION_MAJOR and modapi --- src/bin/e.h| 2 +- src/bin/e_module.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e.h b/src/bin/e.h index 34887bc..8b3ce26 100644 --- a/src/bin/e.h +++ b/src/bin/e.h @@ -1,7 +1,7 @@ #ifndef E_H # define E_H -# define E_VERSION_MAJOR 20 +# define E_VERSION_MAJOR 21 /** * @defgroup API Enlightenment API diff --git a/src/bin/e_module.h b/src/bin/e_module.h index 35675de..c436548 100644 --- a/src/bin/e_module.h +++ b/src/bin/e_module.h @@ -1,6 +1,6 @@ #ifdef E_TYPEDEFS -#define E_MODULE_API_VERSION 18 +#define E_MODULE_API_VERSION 19 typedef struct _E_Module E_Module; typedef struct _E_Module_Api E_Module_Api; --
[EGIT] [tools/edi] edi-0.3 01/01: Fix make dist
ajwillia-ms pushed a commit to branch edi-0.3. http://git.enlightenment.org/tools/edi.git/commit/?id=a59e60b2ba282c90e948239bc6c040a0312962d5 commit a59e60b2ba282c90e948239bc6c040a0312962d5 Author: Andy WilliamsDate: Tue Mar 8 22:53:36 2016 + Fix make dist --- elm_code/src/lib/Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/elm_code/src/lib/Makefile.am b/elm_code/src/lib/Makefile.am index 319acae..08efd7a 100644 --- a/elm_code/src/lib/Makefile.am +++ b/elm_code/src/lib/Makefile.am @@ -66,7 +66,9 @@ BUILT_SOURCES = \ elmcodeeolianfilesdir = $(datadir)/eolian/include/elm_code-@VMAJ@ elmcodeeolianfiles_DATA = $(elm_code_eolian_files) -EXTRA_DIST = ${elmcodeeolianfiles_DATA} +EXTRA_DIST = ${elmcodeeolianfiles_DATA} \ +widget/elm_code_widget_text.c \ +widget/elm_code_widget_undo.c CLEANFILES += $(elm_code_eolian_h) $(elm_code_eolian_legacy_h) --
[EGIT] [tools/edi] master 01/01: Fix make dist
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/edi.git/commit/?id=78210323807cf34eb7ca715b6cb4d9078e00783e commit 78210323807cf34eb7ca715b6cb4d9078e00783e Author: Andy WilliamsDate: Tue Mar 8 22:53:36 2016 + Fix make dist --- elm_code/src/lib/Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/elm_code/src/lib/Makefile.am b/elm_code/src/lib/Makefile.am index 319acae..08efd7a 100644 --- a/elm_code/src/lib/Makefile.am +++ b/elm_code/src/lib/Makefile.am @@ -66,7 +66,9 @@ BUILT_SOURCES = \ elmcodeeolianfilesdir = $(datadir)/eolian/include/elm_code-@VMAJ@ elmcodeeolianfiles_DATA = $(elm_code_eolian_files) -EXTRA_DIST = ${elmcodeeolianfiles_DATA} +EXTRA_DIST = ${elmcodeeolianfiles_DATA} \ +widget/elm_code_widget_text.c \ +widget/elm_code_widget_undo.c CLEANFILES += $(elm_code_eolian_h) $(elm_code_eolian_legacy_h) --
[EGIT] [core/enlightenment] master 01/01: don't have to hook the ecore_evas resize callback here as that should be handled by elm now
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d49f60dd8a2ef169f3cb655dcdbaaac456c7a0d0 commit d49f60dd8a2ef169f3cb655dcdbaaac456c7a0d0 Author: Chris MichaelDate: Tue Mar 8 16:09:17 2016 -0500 don't have to hook the ecore_evas resize callback here as that should be handled by elm now Signed-off-by: Chris Michael --- src/modules/wl_drm/e_mod_main.c | 8 1 file changed, 8 deletions(-) diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c index 23f2715..9a54132 100644 --- a/src/modules/wl_drm/e_mod_main.c +++ b/src/modules/wl_drm/e_mod_main.c @@ -91,12 +91,6 @@ end: return ECORE_CALLBACK_PASS_ON; } -static void -_e_mod_drm_cb_ee_resize(Ecore_Evas *ee EINA_UNUSED) -{ - e_comp_canvas_update(); -} - static Ecore_Drm_Output_Mode * _e_mod_drm_mode_screen_find(E_Randr2_Screen *s, Ecore_Drm_Output *output) { @@ -766,8 +760,6 @@ e_modapi_init(E_Module *m) /* get the current screen geometry */ ecore_evas_screen_geometry_get(e_comp->ee, NULL, NULL, , ); - ecore_evas_callback_resize_set(e_comp->ee, _e_mod_drm_cb_ee_resize); - e_comp->screen = if (!e_comp_wl_init()) return NULL; --
[EGIT] [core/enlightenment] master 01/01: always run client res changes in e_comp_canvas_update()
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=8ca293423a2de2d7c288245311b1574ac96403f3 commit 8ca293423a2de2d7c288245311b1574ac96403f3 Author: Mike BlumenkrantzDate: Tue Mar 8 15:59:57 2016 -0500 always run client res changes in e_comp_canvas_update() this function is only called when screen geometry (or useful geometry) has changed, and so all clients should have their geometries checked at this point to ensure that they update for any new zone obstacle changes which have occurred --- src/bin/e_comp_canvas.c | 41 - 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index 2506cd5..265448c 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -583,6 +583,26 @@ e_comp_canvas_update(void) } } + for (i = 0; i < 11; i++) + { +Eina_List *tmp = NULL; +E_Client *ec; + +if (!e_comp->layers[i].clients) continue; +/* Make temporary list as e_client_res_change_geometry_restore + * rearranges the order. */ +EINA_INLIST_FOREACH(e_comp->layers[i].clients, ec) + { + if (!e_client_util_ignored_get(ec)) + tmp = eina_list_append(tmp, ec); + } + +EINA_LIST_FREE(tmp, ec) + { + e_client_res_change_geometry_save(ec); + e_client_res_change_geometry_restore(ec); + } + } if (!changed) return; if (!starting) { @@ -605,27 +625,6 @@ e_comp_canvas_update(void) } e_comp_canvas_zone_update(zone); } - - for (i = 0; i < 11; i++) - { -Eina_List *tmp = NULL; -E_Client *ec; - -if (!e_comp->layers[i].clients) continue; -/* Make temporary list as e_client_res_change_geometry_restore - * rearranges the order. */ -EINA_INLIST_FOREACH(e_comp->layers[i].clients, ec) - { - if (!e_client_util_ignored_get(ec)) - tmp = eina_list_append(tmp, ec); - } - -EINA_LIST_FREE(tmp, ec) - { - e_client_res_change_geometry_save(ec); - e_client_res_change_geometry_restore(ec); - } - } } E_API void --
[EGIT] [core/enlightenment] master 01/01: block re-unsetting of native surface for comp objects
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b710f6f3b39227a61976e020d8aa473183a1c01a commit b710f6f3b39227a61976e020d8aa473183a1c01a Author: Mike BlumenkrantzDate: Tue Mar 8 14:53:00 2016 -0500 block re-unsetting of native surface for comp objects due to recent evas internals changes, this breaks software compositing --- src/bin/e_comp_object.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 68329ae..c538770 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3576,6 +3576,7 @@ e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set) EINA_SAFETY_ON_NULL_RETURN(cw->ec); if (cw->ec->input_only) return; set = !!set; + if ((!set) && (!cw->native)) return; if (set) { --
[EGIT] [core/elementary] master 01/01: theme: Fix scroller colorclass typo.
okra pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=d5a26c084f5b6efa9d27e6bf08f0f55871b3ca19 commit d5a26c084f5b6efa9d27e6bf08f0f55871b3ca19 Author: Stephen okra HoustonDate: Tue Mar 8 13:36:58 2016 -0600 theme: Fix scroller colorclass typo. --- data/themes/edc/elm/scroller.edc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/themes/edc/elm/scroller.edc b/data/themes/edc/elm/scroller.edc index 27b267c..8902c50 100644 --- a/data/themes/edc/elm/scroller.edc +++ b/data/themes/edc/elm/scroller.edc @@ -694,7 +694,7 @@ group { name: "elm/scroller/base/default"; rel2.to: "elm.swallow.background"; //color: 64 64 64 200; color: 0 0 0 0; -color_class: "scroller_bg`"; +color_class: "scroller_bg"; } } part { name: "clipper"; type: RECT; --
[EGIT] [core/enlightenment] master 01/01: manually calc bryce center-screen coords
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=69fe80959b1ae2d31342a8ad06f42fef808cc9be commit 69fe80959b1ae2d31342a8ad06f42fef808cc9be Author: Mike BlumenkrantzDate: Tue Mar 8 13:00:43 2016 -0500 manually calc bryce center-screen coords e_comp_object_util_center_pos_get() uses zone useful geometry --- src/bin/e_bryce.c | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c index 64b8961..296cdb7 100644 --- a/src/bin/e_bryce.c +++ b/src/bin/e_bryce.c @@ -127,14 +127,11 @@ _bryce_position(Bryce *b, int w, int h, int *nx, int *ny) zone = e_comp_zone_number_get(b->zone); ox = zone->x, oy = zone->y, ow = zone->w, oh = zone->h; -e_comp_object_util_center_pos_get(b->bryce, , ); } else - { -evas_object_geometry_get(b->parent, , , , ); -x = ox + (ow - w) / 2; -y = oy + (oh - h) / 2; - } + evas_object_geometry_get(b->parent, , , , ); + x = ox + (ow - w) / 2; + y = oy + (oh - h) / 2; an = e_gadget_site_anchor_get(b->site); if (an & E_GADGET_SITE_ANCHOR_LEFT) x = ox; --
[EGIT] [core/enlightenment] master 09/12: Re-enable window close animations for wayland
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e4490c4bf661a24d72fea87a243e320c9a720dd6 commit e4490c4bf661a24d72fea87a243e320c9a720dd6 Author: Derek ForemanDate: Tue Feb 16 13:38:31 2016 -0600 Re-enable window close animations for wayland These should work properly with the new buffer management code. --- src/bin/e_client.h | 1 - src/bin/e_comp_object.c | 14 -- src/bin/e_comp_wl.c | 12 ++-- 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/bin/e_client.h b/src/bin/e_client.h index a6b0cac..13d24fd 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -636,7 +636,6 @@ struct E_Client unsigned int internal : 1; unsigned int internal_no_remember : 1; unsigned int internal_no_reopen : 1; - Eina_Bool dead : 1; Evas_Object *internal_elm_win; diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 7a41fa3..bf51f98 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -2187,20 +2187,6 @@ _e_comp_smart_hide(Evas_Object *obj) evas_object_hide(cw->clip); if (cw->input_obj) evas_object_hide(cw->input_obj); evas_object_hide(cw->effect_obj); - if (cw->ec->dead) - { -Evas_Object *o; - -evas_object_hide(cw->obj); -EINA_LIST_FREE(cw->obj_mirror, o) - { - evas_object_image_data_set(o, NULL); - evas_object_freeze_events_set(o, 1); - evas_object_event_callback_del_full(o, EVAS_CALLBACK_DEL, _e_comp_object_cb_mirror_del, cw); - evas_object_del(o); - } -if (!_e_comp_object_animating_end(cw)) return; - } if (stopping) return; if (!cw->ec->input_only) { diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index a9db71f..2ec2491 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -1440,14 +1440,6 @@ static const struct wl_surface_interface _e_surface_interface = #endif }; -static void -_e_comp_wl_surface_render_stop(E_Client *ec) -{ - /* FIXME: this may be fine after e_pixmap can create textures for wl clients? */ - //if ((!ec->internal) && (!e_comp_gl_get())) - ec->dead = ec->hidden = 1; - evas_object_hide(ec->frame); -} static void _e_comp_wl_surface_destroy(struct wl_resource *resource) @@ -1456,7 +1448,7 @@ _e_comp_wl_surface_destroy(struct wl_resource *resource) if (!(ec = wl_resource_get_user_data(resource))) return; - _e_comp_wl_surface_render_stop(ec); + evas_object_hide(ec->frame); e_object_del(E_OBJECT(ec)); } @@ -2167,7 +2159,7 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec) wl_resource_set_user_data(ec->comp_data->surface, NULL); if (ec->internal_elm_win) - _e_comp_wl_surface_render_stop(ec); + evas_object_hide(ec->frame); _e_comp_wl_focus_check(); } --
[EGIT] [core/enlightenment] master 02/12: Render deleted objects as long as they still have a pixmap
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ac47fd61ca8b68f110e51cbd38e8145573b450f6 commit ac47fd61ca8b68f110e51cbd38e8145573b450f6 Author: Derek ForemanDate: Fri Mar 4 15:08:07 2016 -0600 Render deleted objects as long as they still have a pixmap In wayland we can be presented with a new frame before being deleted. If we've never displayed that frame we should (since we released all pointers to the old frame when we got the new one) --- src/bin/e_comp_object.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index e09895b..817737b 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -863,7 +863,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj EINA_UNUSED) int pw, ph; int bx, by, bxx, byy; - if (e_object_is_del(E_OBJECT(ec))) return; + if (!ec->pixmap) return; if (!e_pixmap_size_get(ec->pixmap, , )) return; //INF("PIXEL GET %p: %dx%d || %dx%d", ec, ec->w, ec->h, pw, ph); e_pixmap_image_opaque_get(cw->ec->pixmap, , , , ); --
[EGIT] [core/enlightenment] master 11/12: Don't use e_pixmap_image_data_argb_convert for wayland images
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b4bcb1dc238075d9a9249a274a43b4eecc1d352c commit b4bcb1dc238075d9a9249a274a43b4eecc1d352c Author: Derek ForemanDate: Thu Feb 18 11:05:58 2016 -0600 Don't use e_pixmap_image_data_argb_convert for wayland images All we really need for wayland is to set alpha properly, so we can save the conversion/copy when doing XRGB. --- src/bin/e_comp_object.c | 13 + 1 file changed, 13 insertions(+) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index e1f6ea3..68329ae 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3730,6 +3730,19 @@ e_comp_object_render(Evas_Object *obj) evas_object_image_pixels_dirty_set(cw->obj, EINA_FALSE); RENDER_DEBUG("RENDER SIZE: %dx%d", pw, ph); + + if (e_comp->comp_type == E_PIXMAP_TYPE_WL) + { +Eina_Bool alpha = e_pixmap_image_is_argb(cw->ec->pixmap); + +it = NULL; +pix = e_pixmap_image_data_get(cw->ec->pixmap); +evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix); +evas_object_image_alpha_set(cw->obj, alpha); +ret = EINA_TRUE; +goto end; + } + it = eina_tiler_iterator_new(cw->pending_updates); if (e_pixmap_image_is_argb(cw->ec->pixmap)) { --
[EGIT] [core/enlightenment] master 04/12: Take an extra reference on wayland clients
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=65166c5a36669a2f903b24d9d91166308c103a17 commit 65166c5a36669a2f903b24d9d91166308c103a17 Author: Derek ForemanDate: Mon Feb 29 12:11:56 2016 -0600 Take an extra reference on wayland clients We need to make sure wayland clients aren't deleted while the scene graph has their data pointers, so we take an extra reference when creating them. We drop that reference by clearing the client's image data and putting it in the render post_updates list. --- src/bin/e_comp_wl.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index d74f75b..5da860b 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -136,6 +136,18 @@ _e_comp_wl_evas_cb_hide(void *data, Evas *evas EINA_UNUSED, Evas_Object *obj EIN EINA_LIST_FOREACH(ec->e.state.video_child, l, tmp) evas_object_hide(tmp->frame); + + if (!e_object_is_del(E_OBJECT(ec))) return; + + e_comp_object_dirty(ec->frame); + e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h); + if (!e_comp_object_render(ec->frame)) return; + if (!ec->on_post_updates) + { +ec->on_post_updates = EINA_TRUE; +e_comp->post_updates = eina_list_append(e_comp->post_updates, ec); + } + else e_object_unref(E_OBJECT(ec)); } static void @@ -1532,6 +1544,8 @@ _e_comp_wl_compositor_cb_surface_create(struct wl_client *client, struct wl_reso #endif /* emit surface create signal */ wl_signal_emit(_comp_wl->signals.surface.create, res); + + e_object_ref(E_OBJECT(ec)); } static void --
[EGIT] [core/enlightenment] master 03/12: Track whether objects are on the post_updates list or not
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a35c7637a25d6e7e0266bf8febf82d6f45c2a94d commit a35c7637a25d6e7e0266bf8febf82d6f45c2a94d Author: Derek ForemanDate: Fri Feb 19 11:50:16 2016 -0600 Track whether objects are on the post_updates list or not Will use this to prevent accidentally adding objects to the list twice --- src/bin/e_client.h | 1 + src/bin/e_comp_canvas.c | 1 + src/bin/e_comp_object.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/src/bin/e_client.h b/src/bin/e_client.h index 14427b9..a6b0cac 100644 --- a/src/bin/e_client.h +++ b/src/bin/e_client.h @@ -698,6 +698,7 @@ struct E_Client Eina_Bool maximize_override : 1; // client is doing crazy stuff and should "just do it" when moving/resizing Eina_Bool keyboard_resizing : 1; + Eina_Bool on_post_updates : 1; // client is on the post update list #ifdef HAVE_WAYLAND uuid_t uuid; #endif diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index 0ce97fd..c5cb76d 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -53,6 +53,7 @@ _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *ev EINA_LIST_FREE(e_comp->post_updates, ec) { //INF("POST %p", ec); +ec->on_post_updates = EINA_FALSE; if (!e_object_is_del(E_OBJECT(ec))) e_pixmap_image_clear(ec->pixmap, 1); UNREFD(ec, 111); diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 817737b..7a41fa3 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -900,6 +900,7 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj EINA_UNUSED) if (cw->native) { E_FREE_FUNC(cw->pending_updates, eina_tiler_free); +cw->ec->on_post_updates = EINA_TRUE; e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec); REFD(cw->ec, 111); e_object_ref(E_OBJECT(cw->ec)); @@ -3820,6 +3821,7 @@ end: E_FREE_FUNC(cw->pending_updates, eina_tiler_free); if (ret) { +cw->ec->on_post_updates = EINA_TRUE; e_comp->post_updates = eina_list_append(e_comp->post_updates, cw->ec); REFD(cw->ec, 111); e_object_ref(E_OBJECT(cw->ec)); --
[EGIT] [core/enlightenment] master 10/12: Stop copying all wayland buffers
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2e0e74f087eeff728e22be82ff666dd7614fb21d commit 2e0e74f087eeff728e22be82ff666dd7614fb21d Author: Derek ForemanDate: Tue Feb 16 15:48:24 2016 -0600 Stop copying all wayland buffers The new buffer management shouldn't require this anymore. --- src/bin/e_comp_object.c | 11 +-- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index bf51f98..e1f6ea3 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -3759,16 +3759,7 @@ e_comp_object_render(Evas_Object *obj) } else ret = EINA_TRUE; -/* set pixel data */ -if (e_comp->comp_type == E_PIXMAP_TYPE_WL) - { -#warning FIXME BROKEN WAYLAND SHM BUFFER PROTOCOL - evas_object_image_data_copy_set(cw->obj, cw->blanked ? NULL : pix); - pix = evas_object_image_data_get(cw->obj, 0); - evas_object_image_data_set(cw->obj, pix); - } -else - evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix); +evas_object_image_data_set(cw->obj, cw->blanked ? NULL : pix); goto end; } --
[EGIT] [core/enlightenment] master 07/12: Rework wayland buffer handling
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=dfc7c26ce4c5f47a253e027c70e7614a5b37ac7a commit dfc7c26ce4c5f47a253e027c70e7614a5b37ac7a Author: Derek ForemanDate: Tue Feb 16 13:28:10 2016 -0600 Rework wayland buffer handling We need to keep wayland buffers around even if they'll never be written to again. This is part of Buffer_Reference's task in weston, but we already have our pixmap abstraction which can serve mostly the same purpose. Remove the "buffer reference" stuff from e_pixmap and replace it with a kept buffer for the last commit. Add shared memory pool references to keep pools from going away on us. --- src/bin/e_comp_wl.c | 6 +- src/bin/e_comp_wl.h | 3 + src/bin/e_pixmap.c | 155 +--- 3 files changed, 130 insertions(+), 34 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 5da860b..47ff0bd 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -1696,7 +1696,6 @@ _e_comp_wl_subsurface_destroy(struct wl_resource *resource) } _e_comp_wl_surface_state_finish(>cached); - e_comp_wl_buffer_reference(>cached_buffer_ref, NULL); /* the client is getting deleted, which means the pixmap will be getting * freed. We need to unset the surface user data */ @@ -1743,8 +1742,9 @@ _e_comp_wl_subsurface_commit_to_cache(E_Client *ec) sdata->cached.new_attach = EINA_TRUE; _e_comp_wl_surface_state_buffer_set(>cached, cdata->pending.buffer); -e_comp_wl_buffer_reference(>cached_buffer_ref, - cdata->pending.buffer); +e_pixmap_resource_set(ec->pixmap, cdata->pending.buffer); +e_pixmap_dirty(ec->pixmap); +e_pixmap_refresh(ec->pixmap); } sdata->cached.sx = cdata->pending.sx; diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 7857db1..d60bb63 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -56,7 +56,10 @@ struct _E_Comp_Wl_Buffer struct wl_resource *resource; struct wl_signal destroy_signal; struct wl_listener destroy_listener; + struct wl_listener deferred_destroy_listener; struct wl_shm_buffer *shm_buffer; + struct wl_shm_pool *pool; + E_Pixmap *discarding_pixmap; int32_t w, h; uint32_t busy; }; diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 80d4232..af7f852 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -42,11 +42,13 @@ struct _E_Pixmap #ifdef HAVE_WAYLAND E_Comp_Wl_Buffer *buffer; - E_Comp_Wl_Buffer_Ref buffer_ref; + E_Comp_Wl_Buffer *held_buffer; struct wl_listener buffer_destroy_listener; + struct wl_listener held_buffer_destroy_listener; void *data; Eina_Rectangle opaque; uuid_t uuid; + Eina_List *free_buffers; #endif Eina_Bool usable : 1; @@ -55,15 +57,36 @@ struct _E_Pixmap }; #ifdef HAVE_WAYLAND + +static void +_e_pixmap_cb_deferred_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED) +{ + E_Comp_Wl_Buffer *buffer; + + buffer = container_of(listener, E_Comp_Wl_Buffer, deferred_destroy_listener); + buffer->discarding_pixmap->free_buffers = eina_list_remove(buffer->discarding_pixmap->free_buffers, buffer); + buffer->discarding_pixmap = NULL; +} + static void _e_pixmap_cb_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED) { E_Pixmap *cp; cp = container_of(listener, E_Pixmap, buffer_destroy_listener); - cp->data = NULL; + cp->buffer = NULL; cp->buffer_destroy_listener.notify = NULL; } + +static void +_e_pixmap_cb_held_buffer_destroy(struct wl_listener *listener, void *data EINA_UNUSED) +{ + E_Pixmap *cp; + + cp = container_of(listener, E_Pixmap, held_buffer_destroy_listener); + cp->held_buffer = NULL; + cp->held_buffer_destroy_listener.notify = NULL; +} #endif static void @@ -102,6 +125,67 @@ _e_pixmap_image_clear_x(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U } #endif +#ifdef HAVE_WAYLAND +static void +_e_pixmap_wayland_buffer_release(E_Pixmap *cp, E_Comp_Wl_Buffer *buffer) +{ + if (!buffer) return; + + if (e_comp->rendering) + { +if (buffer->discarding_pixmap) return; + +buffer->discarding_pixmap = cp; +buffer->deferred_destroy_listener.notify = _e_pixmap_cb_deferred_buffer_destroy; +wl_signal_add(>destroy_signal, >deferred_destroy_listener); +cp->free_buffers = eina_list_append(cp->free_buffers, buffer); +return; + } + + buffer->busy--; + if (buffer->busy) return; + + wl_resource_queue_event(buffer->resource, WL_BUFFER_RELEASE); + wl_shm_pool_unref(buffer->pool); + buffer->pool = NULL; +} + +static void +_e_pixmap_wl_buffers_free(E_Pixmap *cp) +{ + E_Comp_Wl_Buffer *b; + + if (e_comp->rendering) return; + +
[EGIT] [core/enlightenment] master 01/12: Add a NULL check in native_surface_init under wayland
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e5e887c773ab4a324af467d384edb37a76dbd2ce commit e5e887c773ab4a324af467d384edb37a76dbd2ce Author: Derek ForemanDate: Fri Mar 4 16:24:18 2016 -0600 Add a NULL check in native_surface_init under wayland --- src/bin/e_pixmap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index a7f66d5..80d4232 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -580,6 +580,7 @@ e_pixmap_native_surface_init(E_Pixmap *cp, Evas_Native_Surface *ns) break; case E_PIXMAP_TYPE_WL: #ifdef HAVE_WAYLAND +if (!cp->buffer) return EINA_FALSE; ns->type = EVAS_NATIVE_SURFACE_WL; ns->version = EVAS_NATIVE_SURFACE_VERSION; ns->data.wl.legacy_buffer = cp->buffer->resource; --
[EGIT] [core/enlightenment] master 05/12: Don't allow deleted wayland clients to set the cursor
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=33582859e2dd75d340a99f418bc5e68a0672dd96 commit 33582859e2dd75d340a99f418bc5e68a0672dd96 Author: Derek ForemanDate: Mon Feb 29 12:12:35 2016 -0600 Don't allow deleted wayland clients to set the cursor --- src/bin/e_comp_wl_input.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index 07d1196..22147ba 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -41,6 +41,7 @@ _e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resou E_CLIENT_FOREACH(ec) { + if (e_object_is_del(E_OBJECT(ec))) continue; if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) continue; if (!ec->comp_data->surface) continue; if (client != wl_resource_get_client(ec->comp_data->surface)) continue; --
[EGIT] [core/enlightenment] master 12/12: Remove argb_convert for wayland buffers
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=df7bc5963dc1a624c11276ca5fc22c212c26 commit df7bc5963dc1a624c11276ca5fc22c212c26 Author: Derek ForemanDate: Thu Feb 18 11:06:40 2016 -0600 Remove argb_convert for wayland buffers Wayland buffers are currently either ARGB or XRGB - we don't need to convert either of these, we just need to set alpha appropriately - which we now do. --- src/bin/e_pixmap.c | 31 +-- 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index af7f852..555d4e7 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -901,36 +901,7 @@ e_pixmap_image_data_argb_convert(E_Pixmap *cp, void *pix, void *ipix, Eina_Recta break; case E_PIXMAP_TYPE_WL: if (cp->image_argb) return EINA_TRUE; -#ifdef HAVE_WAYLAND -if (cp->buffer) - { - struct wl_shm_buffer *shm_buffer; - uint32_t format; - int i, x, y; - unsigned int *src, *dst; - - shm_buffer = cp->buffer->shm_buffer; - if (!shm_buffer) return EINA_FALSE; - - format = wl_shm_buffer_get_format(shm_buffer); - if (format == WL_SHM_FORMAT_XRGB) - { - dst = (unsigned int *)pix; - src = (unsigned int *)ipix; - - for (y = 0; y < r->h; y++) -{ - i = (r->y + y) * stride / 4 + r->x; - for (x = 0; x < r->w; x++) - dst[i+x] = 0xff00 | src[i+x]; -} - pix = (void *)dst; - } - - return EINA_TRUE; - } -#endif -break; +return EINA_FALSE; default: break; } --
[EGIT] [core/enlightenment] master 08/12: Remove wayland buffer reference
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=36586fbf9cd84bacf6568f5c2eb8ba131f1e1b11 commit 36586fbf9cd84bacf6568f5c2eb8ba131f1e1b11 Author: Derek ForemanDate: Tue Feb 16 13:33:25 2016 -0600 Remove wayland buffer reference This code is similar to code in weston, but doesn't really work properly for us in E, since this can blow up buffers behind the async renderer's back. The rest of the reference code has been pushed into e_pixmap, so we can kill this all now. --- src/bin/e_comp_wl.c | 35 --- src/bin/e_comp_wl.h | 10 -- 2 files changed, 45 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 47ff0bd..a9db71f 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -729,16 +729,6 @@ _e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, void *event EINA_UNUS } static void -_e_comp_wl_buffer_reference_cb_destroy(struct wl_listener *listener, void *data) -{ - E_Comp_Wl_Buffer_Ref *ref; - - ref = container_of(listener, E_Comp_Wl_Buffer_Ref, destroy_listener); - if ((E_Comp_Wl_Buffer *)data != ref->buffer) return; - ref->buffer = NULL; -} - -static void _e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSED) { E_Comp_Wl_Buffer *buffer; @@ -1984,7 +1974,6 @@ _e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, uint32_t id, struct wl _e_comp_wl_surface_state_init(>cached, ec->w, ec->h); /* set subsurface data properties */ - sdata->cached_buffer_ref.buffer = NULL; sdata->resource = res; sdata->synchronized = EINA_TRUE; sdata->parent = epc; @@ -2695,30 +2684,6 @@ e_comp_wl_subsurface_commit(E_Client *ec) return EINA_TRUE; } -EINTERN void -e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer) -{ - if ((ref->buffer) && (buffer != ref->buffer)) - { -ref->buffer->busy--; -if (ref->buffer->busy == 0) - { - if (!wl_resource_get_client(ref->buffer->resource)) return; - wl_resource_queue_event(ref->buffer->resource, WL_BUFFER_RELEASE); - } -wl_list_remove(>destroy_listener.link); - } - - if ((buffer) && (buffer != ref->buffer)) - { -buffer->busy++; -wl_signal_add(>destroy_signal, >destroy_listener); - } - - ref->buffer = buffer; - ref->destroy_listener.notify = _e_comp_wl_buffer_reference_cb_destroy; -} - /** * Get the buffer for a given resource. * diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index d60bb63..e7df72a 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -43,7 +43,6 @@ }) typedef struct _E_Comp_Wl_Buffer E_Comp_Wl_Buffer; -typedef struct _E_Comp_Wl_Buffer_Ref E_Comp_Wl_Buffer_Ref; typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data; typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State; typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data; @@ -64,12 +63,6 @@ struct _E_Comp_Wl_Buffer uint32_t busy; }; -struct _E_Comp_Wl_Buffer_Ref -{ - E_Comp_Wl_Buffer *buffer; - struct wl_listener destroy_listener; -}; - struct _E_Comp_Wl_Surface_State { int sx, sy; @@ -95,7 +88,6 @@ struct _E_Comp_Wl_Subsurf_Data } position; E_Comp_Wl_Surface_State cached; - E_Comp_Wl_Buffer_Ref cached_buffer_ref; Eina_Bool synchronized; }; @@ -287,7 +279,6 @@ struct _E_Comp_Wl_Client_Data E_Shell_Data *data; } shell; - E_Comp_Wl_Buffer_Ref buffer_ref; E_Comp_Wl_Surface_State pending; Eina_List *frames; @@ -336,7 +327,6 @@ EINTERN struct wl_resource *e_comp_wl_surface_create(struct wl_client *client, i EINTERN void e_comp_wl_surface_destroy(struct wl_resource *resource); EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec); EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec); -EINTERN void e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer); E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource); E_API struct wl_signal e_comp_wl_surface_create_signal_get(void); --
[EGIT] [core/enlightenment] master 06/12: Track whether a render is in progress or not
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b98e78d46476d8c5468c3034ee13e2dae8c83047 commit b98e78d46476d8c5468c3034ee13e2dae8c83047 Author: Derek ForemanDate: Fri Mar 4 15:46:14 2016 -0600 Track whether a render is in progress or not We'll need this to protect certain wayland operations. --- src/bin/e_comp.h| 2 ++ src/bin/e_comp_canvas.c | 5 + 2 files changed, 7 insertions(+) diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h index d343036..1f4f2d5 100644 --- a/src/bin/e_comp.h +++ b/src/bin/e_comp.h @@ -155,6 +155,8 @@ struct _E_Comp Eina_Bool nocomp_want : 1; Eina_Bool saver : 1; Eina_Bool shape_queue_blocked : 1; + + Eina_Bool rendering : 1; // we've received a pre-render callback but no post-render yet. }; diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index c5cb76d..2506cd5 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -50,6 +50,9 @@ _e_comp_canvas_render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *ev //EINA_LIST_FOREACH(ev->updated_area, l, r) //INF("POST RENDER: %d,%d %dx%d", r->x, r->y, r->w, r->h); //} + + e_comp->rendering = EINA_FALSE; + EINA_LIST_FREE(e_comp->post_updates, ec) { //INF("POST %p", ec); @@ -258,6 +261,8 @@ _e_comp_canvas_prerender(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *even E_Comp_Cb cb; Eina_List *l; + e_comp->rendering = EINA_TRUE; + EINA_LIST_FOREACH(e_comp->pre_render_cbs, l, cb) cb(); } --
[EGIT] [core/enlightenment] master 01/02: enforce accurate resizing/orienting when changing the location of a bryce
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=82a4dbda8da921f7efde000b967f1ec62a2249ad commit 82a4dbda8da921f7efde000b967f1ec62a2249ad Author: Mike BlumenkrantzDate: Tue Mar 8 12:31:10 2016 -0500 enforce accurate resizing/orienting when changing the location of a bryce --- src/bin/e_bryce.c| 28 +++- src/bin/e_bryce_editor.c | 5 - src/bin/e_gadget.c | 10 +- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c index 8348063..d3aba88 100644 --- a/src/bin/e_bryce.c +++ b/src/bin/e_bryce.c @@ -731,6 +731,14 @@ _bryce_gadget_popup(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) } static void +_bryce_site_anchor(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + Bryce *b = data; + + e_bryce_orient(b->bryce, e_gadget_site_orient_get(obj), e_gadget_site_anchor_get(obj)); +} + +static void _bryce_orient(Bryce *b) { char buf[1024]; @@ -748,6 +756,11 @@ _bryce_orient(Bryce *b) elm_layout_signal_emit(b->layout, "e,state,orient,horizontal", "e"); else elm_layout_signal_emit(b->layout, "e,state,orient,vertical", "e"); + evas_object_event_callback_add(b->site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _bryce_site_hints, b); + evas_object_smart_callback_add(b->site, "gadget_site_anchor", _bryce_site_anchor, b); + evas_object_smart_callback_add(b->site, "gadget_site_style_menu", _bryce_style_menu, b); + evas_object_smart_callback_add(b->site, "gadget_site_owner_menu", _bryce_owner_menu, b); + evas_object_smart_callback_add(b->site, "gadget_site_popup", _bryce_gadget_popup, b); } static void @@ -801,11 +814,6 @@ _bryce_create(Bryce *b, Evas_Object *parent) evas_object_event_callback_add(bryce, EVAS_CALLBACK_MOUSE_DOWN, _bryce_mouse_down, b); evas_object_event_callback_add(bryce, EVAS_CALLBACK_MOUSE_UP, _bryce_mouse_up, b); evas_object_event_callback_add(bryce, EVAS_CALLBACK_MOUSE_WHEEL, _bryce_mouse_wheel, b); - evas_object_event_callback_add(b->site, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _bryce_site_hints, b); - - evas_object_smart_callback_add(b->site, "gadget_site_style_menu", _bryce_style_menu, b); - evas_object_smart_callback_add(b->site, "gadget_site_owner_menu", _bryce_owner_menu, b); - evas_object_smart_callback_add(b->site, "gadget_site_popup", _bryce_gadget_popup, b); zone_clip = e_comp_zone_number_get(b->zone)->bg_clip_object; evas_object_clip_set(bryce, zone_clip); @@ -912,10 +920,20 @@ e_bryce_add(Evas_Object *parent, const char *name, E_Gadget_Site_Orient orient, E_API void e_bryce_orient(Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an) { + int w, h; + E_Gadget_Site_Orient prev; + BRYCE_GET(bryce); + if ((b->orient == orient) && (b->anchor == an)) return; + prev = b->orient; b->orient = orient; b->anchor = an; + evas_object_geometry_get(bryce, NULL, NULL, , ); _bryce_orient(b); + if (prev == orient) + _bryce_autosize(b); + else + evas_object_resize(bryce, h, w); } E_API Evas_Object * diff --git a/src/bin/e_bryce_editor.c b/src/bin/e_bryce_editor.c index 4c13149..b07173a 100644 --- a/src/bin/e_bryce_editor.c +++ b/src/bin/e_bryce_editor.c @@ -77,7 +77,10 @@ _editor_bryce_add(Evas_Object *obj) gravity = E_GADGET_SITE_GRAVITY_BOTTOM; } if (b) - site = e_bryce_site_get(b); + { +e_bryce_orient(b, bi->orient, bi->anchor); +site = e_bryce_site_get(b); + } else { b = e_bryce_add(e_comp->elm, buf, bi->orient, bi->anchor); diff --git a/src/bin/e_gadget.c b/src/bin/e_gadget.c index e41f542..bb70ca2 100644 --- a/src/bin/e_gadget.c +++ b/src/bin/e_gadget.c @@ -1175,8 +1175,12 @@ _site_util_add(E_Gadget_Site_Orient orient, const char *name, Eina_Bool autoadd) zgs = E_NEW(E_Gadget_Site, 1); zgs->name = eina_stringshare_add(name); - zgs->orient = orient; zgs->autoadd = autoadd; + + if (name) + sites->sites = eina_list_append(sites->sites, zgs); +out: + zgs->orient = orient; switch (orient) { case E_GADGET_SITE_ORIENT_HORIZONTAL: @@ -1187,10 +1191,6 @@ _site_util_add(E_Gadget_Site_Orient orient, const char *name, Eina_Bool autoadd) break; default: break; } - - if (name) - sites->sites = eina_list_append(sites->sites, zgs); -out: if (autoadd) { parent = evas_object_name_find(e_comp->evas, name); --
[EGIT] [core/enlightenment] master 02/02: add bryce autohide/size getters, pull related values into wizard
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b3cda14e1b89db004d26f6ac66b8ff88e7e948d9 commit b3cda14e1b89db004d26f6ac66b8ff88e7e948d9 Author: Mike BlumenkrantzDate: Tue Mar 8 12:43:35 2016 -0500 add bryce autohide/size getters, pull related values into wizard --- src/bin/e_bryce.c| 14 ++ src/bin/e_bryce.h| 4 ++-- src/bin/e_bryce_editor.c | 21 - 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c index d3aba88..64b8961 100644 --- a/src/bin/e_bryce.c +++ b/src/bin/e_bryce.c @@ -944,6 +944,13 @@ e_bryce_site_get(Evas_Object *bryce) return b->site; } +E_API Eina_Bool +e_bryce_autosize_get(Evas_Object *bryce) +{ + BRYCE_GET(bryce); + return b->autosize; +} + E_API void e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set) { @@ -957,6 +964,13 @@ e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set) _bryce_autosize(b); } +E_API Eina_Bool +e_bryce_autohide_get(Evas_Object *bryce) +{ + BRYCE_GET(bryce); + return b->autohide; +} + E_API void e_bryce_autohide_set(Evas_Object *bryce, Eina_Bool set) { diff --git a/src/bin/e_bryce.h b/src/bin/e_bryce.h index 3fa69b5..3f575a2 100644 --- a/src/bin/e_bryce.h +++ b/src/bin/e_bryce.h @@ -8,13 +8,13 @@ EINTERN void e_bryce_shutdown(void); E_API Evas_Object *e_bryce_add(Evas_Object *parent, const char *name, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an); E_API void e_bryce_orient(Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an); E_API Evas_Object *e_bryce_site_get(Evas_Object *bryce); +E_API Eina_Bool e_bryce_autosize_get(Evas_Object *bryce); E_API void e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set); +E_API Eina_Bool e_bryce_autohide_get(Evas_Object *bryce); E_API void e_bryce_autohide_set(Evas_Object *bryce, Eina_Bool set); E_API Eina_Bool e_bryce_exists(Evas_Object *parent, Evas_Object *bryce, E_Gadget_Site_Orient orient, E_Gadget_Site_Anchor an); E_API Eina_List *e_bryce_list(Evas_Object *parent); E_API void e_bryce_style_set(Evas_Object *bryce, const char *style); -E_API void e_bryce_autosize_set(Evas_Object *bryce, Eina_Bool set); -E_API void e_bryce_autohide_set(Evas_Object *bryce, Eina_Bool set); E_API Evas_Object *e_bryce_editor_add(Evas_Object *parent, Evas_Object *bryce); E_API Evas_Object *e_bryce_edit(Evas_Object *bryce); diff --git a/src/bin/e_bryce_editor.c b/src/bin/e_bryce_editor.c index b07173a..6cd0f5a 100644 --- a/src/bin/e_bryce_editor.c +++ b/src/bin/e_bryce_editor.c @@ -134,13 +134,14 @@ _editor_style_click(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *eve const char *g; char style[1024] = {0}; Bryce_Info *bi; - Evas_Object *ly, *box, *ck, *button; + Evas_Object *ly, *box, *ck, *button, *bryce; ly = elm_object_part_content_get(obj, "e.swallow.content"); elm_layout_file_get(ly, NULL, ); g += (sizeof("e/bryce/") - 1); memcpy(style, g, MIN(sizeof(style) - 1, strchr(g, '/') - g)); + bryce = evas_object_data_get(data, "__bryce_editor_bryce"); bi = evas_object_data_get(data, "__bryce_info"); bi->style = eina_stringshare_add(style); e_theme_edje_object_set(data, NULL, "e/bryce/editor/finish"); @@ -149,24 +150,42 @@ _editor_style_click(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *eve elm_box_padding_set(box, 0, 20 * e_scale); ck = elm_check_add(box); + elm_object_focus_allow_set(ck, 0); E_ALIGN(ck, 0, 0.5); evas_object_show(ck); elm_object_text_set(ck, _("Automatically size based on contents")); evas_object_smart_callback_add(ck, "changed", _editor_autosize, bi); + if (bryce) + { +bi->autosize = e_bryce_autosize_get(bryce); +elm_check_state_set(ck, bi->autosize); + } elm_box_pack_end(box, ck); ck = elm_check_add(box); + elm_object_focus_allow_set(ck, 0); E_ALIGN(ck, 0, 0.5); evas_object_show(ck); elm_object_text_set(ck, _("Automatically hide")); evas_object_smart_callback_add(ck, "changed", _editor_autohide, bi); + if (bryce) + { +bi->autohide = e_bryce_autohide_get(bryce); +elm_check_state_set(ck, bi->autohide); + } elm_box_pack_end(box, ck); ck = elm_check_add(box); + elm_object_focus_allow_set(ck, 0); E_ALIGN(ck, 0, 0.5); evas_object_show(ck); elm_object_text_set(ck, _("Do not stack above windows")); evas_object_smart_callback_add(ck, "changed", _editor_stacking, bi); + if (bryce) + { +bi->stack_under = evas_object_layer_get(bryce) == E_LAYER_DESKTOP; +elm_check_state_set(ck, bi->stack_under); + } elm_box_pack_end(box, ck); //ck = elm_check_add(box); --
[EGIT] [core/efl] master 01/01: Revert "ecore: Create Promises"
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7d8cd6c40f61537bff5ced41dce62d54cd311eb5 commit 7d8cd6c40f61537bff5ced41dce62d54cd311eb5 Author: Tom HacohenDate: Tue Mar 8 14:23:57 2016 + Revert "ecore: Create Promises" Reverting this at Felipe's request following my email. There are many things I strongly object to in this commit. I've touched the surface of those on the ML (which doesn't work at the moment), though we need to better discuss it. The gist: 1. dlsym is a really bad hack that is not even needed. 2. I don't see why eo should even be aware of promises. It's not aware of list, hash and etc. 3. The eolian changes were done wrong. This should have been discussed and consulted before done, even if only because of the amount of hacks it includes and the cross-domain (ecore, eo and eolian) nature of it. This reverts commit f9ba80ab33e0b94dad7ec103e6d261a644f7835f. --- src/Makefile_Ecore.am| 5 +- src/bin/eolian/eo_generator.c| 30 +-- src/lib/ecore/Ecore.h| 1 - src/lib/ecore/ecore_promise.c| 452 --- src/lib/ecore/ecore_promise.h| 136 --- src/lib/eo/Eo.h | 63 ++--- src/lib/eolian/eo_lexer.c| 3 +- src/lib/eolian/eo_lexer.h| 6 +- src/lib/eolian/eo_parser.c | 2 +- src/tests/ecore/ecore_suite.c| 1 - src/tests/ecore/ecore_suite.h| 1 - src/tests/ecore/ecore_test_promise.c | 364 12 files changed, 22 insertions(+), 1042 deletions(-) diff --git a/src/Makefile_Ecore.am b/src/Makefile_Ecore.am index 79ac16c..49936af 100644 --- a/src/Makefile_Ecore.am +++ b/src/Makefile_Ecore.am @@ -47,8 +47,7 @@ lib/ecore/Ecore.h \ lib/ecore/Ecore_Common.h \ lib/ecore/Ecore_Legacy.h \ lib/ecore/Ecore_Eo.h \ -lib/ecore/Ecore_Getopt.h \ -lib/ecore/ecore_promise.h +lib/ecore/Ecore_Getopt.h nodist_installed_ecoremainheaders_DATA = \ $(ecore_eolian_h) @@ -73,7 +72,6 @@ lib/ecore/ecore_timer.c \ lib/ecore/ecore_thread.c \ lib/ecore/ecore_throttle.c \ lib/ecore/ecore_exe.c \ -lib/ecore/ecore_promise.c \ lib/ecore/ecore_exe_private.h \ lib/ecore/ecore_private.h @@ -201,7 +199,6 @@ tests/ecore/ecore_test_animator.c \ tests/ecore/ecore_test_ecore_thread_eina_thread_queue.c \ tests/ecore/ecore_test_ecore_input.c \ tests/ecore/ecore_test_ecore_file.c \ -tests/ecore/ecore_test_promise.c \ tests/ecore/ecore_suite.h tests_ecore_ecore_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index 4810658..a97f2f0 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -311,9 +311,6 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, if (ftype != EOLIAN_PROP_GET && ftype != EOLIAN_PROP_SET) ftype = eolian_function_type_get(funcid); Eina_Bool is_prop = (ftype == EOLIAN_PROP_GET || ftype == EOLIAN_PROP_SET); - Eina_Bool has_promise = EINA_FALSE; - const char* promise_param_name = NULL; - const char* promise_value_type = NULL; Eina_Bool need_implementation = EINA_TRUE; if (!impl_env && eolian_function_is_virtual_pure(funcid, ftype)) need_implementation = EINA_FALSE; @@ -340,11 +337,9 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, if (eina_iterator_next(itr, ) && !eina_iterator_next(itr, )) { Eolian_Function_Parameter *param = data; - const char* rettype_str = NULL; rettypet = eolian_parameter_type_get(param); var_as_ret = EINA_TRUE; default_ret_val = eolian_parameter_default_value_get(param); - eina_stringshare_del(rettype_str); } eina_iterator_free(itr); } @@ -380,24 +375,9 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, const char *ptype = eolian_type_c_type_get(ptypet); Eolian_Parameter_Dir pdir = eolian_parameter_direction_get(param); Eina_Bool had_star = !!strchr(ptype, '*'); - - if(!has_promise && !strcmp(ptype, "Ecore_Promise *")) - { - Eina_Iterator* promise_values; - has_promise = EINA_TRUE; - promise_param_name = eina_stringshare_add(pname); - promise_values = eolian_type_subtypes_get(eolian_type_base_type_get(ptypet)); - Eolian_Type* subtype; - if(eina_iterator_next(promise_values, (void**))) - promise_value_type = eolian_type_c_type_get(subtype); - } - if (ftype ==
[EGIT] [core/efl] master 01/01: eo_cxx: Fix unused parameter warning when no constructor is required
vitorsousa pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f1a6ff29567c3db71c7ddd58e90715463ac81af9 commit f1a6ff29567c3db71c7ddd58e90715463ac81af9 Author: Vitor SousaDate: Tue Mar 8 10:28:33 2016 -0300 eo_cxx: Fix unused parameter warning when no constructor is required Test Plan: compile elm Reviewers: stefan_schmidt Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D3778 --- src/bindings/eo_cxx/eo_cxx_interop.hh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bindings/eo_cxx/eo_cxx_interop.hh b/src/bindings/eo_cxx/eo_cxx_interop.hh index cbfa1a2..18af392 100644 --- a/src/bindings/eo_cxx/eo_cxx_interop.hh +++ b/src/bindings/eo_cxx/eo_cxx_interop.hh @@ -476,6 +476,7 @@ void call_ctors(Eo* _obj_eoid, Fs&&... fs) { std::initializer_list const v {(fs(_obj_eoid), 0)...}; (void) v; + (void) _obj_eoid; } } } // namespace efl { namespace eolian { --
[EGIT] [core/elementary] master 01/01: Revert "list: set internal box as homogeneous if no separator items are present"
hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=89a2a7c134c8b5a9ab128c44db693c207bed55f3 commit 89a2a7c134c8b5a9ab128c44db693c207bed55f3 Author: Hermet ParkDate: Tue Mar 8 20:58:17 2016 +0900 Revert "list: set internal box as homogeneous if no separator items are present" This reverts commit 9f4c43c20dfa36e7a8be18278acf4336c13574d7. I'm sorry but this causes a side effect(list sizing issue) at enventor. And I couldn't find any mis-usage in enventor side. We can't not accept this patch unless we figure the exact reason out. --- src/lib/elm_list.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index 78c6804..14164dc 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -815,7 +815,6 @@ _items_fix(Evas_Object *obj) const char *it_plain; const char *it_compress; const char *it_compress_odd; - Eina_Bool separators = EINA_FALSE; ELM_LIST_DATA_GET(obj, sd); @@ -851,7 +850,6 @@ _items_fix(Evas_Object *obj) if (mw > minw[1]) minw[1] = mw; if (mh > minh[1]) minh[1] = mh; } -separators |= it->is_separator; } if ((minw[0] != sd->minw[0]) || (minw[1] != sd->minw[1]) || @@ -865,7 +863,6 @@ _items_fix(Evas_Object *obj) } i = 0; - elm_box_homogeneous_set(sd->box, !separators); EINA_LIST_FOREACH(sd->items, l, eo_it) { ELM_LIST_ITEM_DATA_GET(eo_it, it); --
[EGIT] [tools/enventor] master 01/03: Revert "Revert "edc_editor: Support auto save to update preview.""
hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=a3185bc64be3fb30b22d175d180f717ca7f4c5ae commit a3185bc64be3fb30b22d175d180f717ca7f4c5ae Author: Hermet ParkDate: Tue Mar 8 16:52:25 2016 +0900 Revert "Revert "edc_editor: Support auto save to update preview."" This reverts commit b663d049dbfc9d63842930b5fa14f699da153eb7. 0.8.0 was released. revert this again. --- src/lib/auto_comp.c| 4 src/lib/edc_editor.c | 37 + src/lib/enventor_private.h | 2 ++ 3 files changed, 43 insertions(+) diff --git a/src/lib/auto_comp.c b/src/lib/auto_comp.c index 664db9e..9754e62 100644 --- a/src/lib/auto_comp.c +++ b/src/lib/auto_comp.c @@ -506,6 +506,8 @@ list_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, { autocomp_data *ad = data; ad->list = NULL; + + edit_auto_save_timer_apply(ad->ed); } @@ -579,6 +581,8 @@ entry_tooltip_content_cb(void *data, Evas_Object *obj EINA_UNUSED, elm_list_go(ad->list); evas_object_show(ad->list); + edit_auto_save_timer_cancel(ad->ed); + return ad->list; } diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index f5a4c14..087bcee 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -13,6 +13,7 @@ const int MAX_LINE_DIGIT_CNT = 10; const int SYNTAX_COLOR_SPARE_LINES = 42; const double SYNTAX_COLOR_DEFAULT_TIME = 0.25; const double SYNTAX_COLOR_SHORT_TIME = 0.025; +const double AUTO_SAVE_TIME = 2.0; typedef struct syntax_color_thread_data_s { @@ -48,6 +49,7 @@ struct editor_s int right; } bracket; + Ecore_Timer *auto_save_timer; Ecore_Timer *syntax_color_timer; Ecore_Thread *syntax_color_thread; @@ -470,6 +472,8 @@ edit_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) syntax_color_partial_update(ed, SYNTAX_COLOR_DEFAULT_TIME); parser_bracket_cancel(ed->pd); + + edit_auto_save_timer_apply(ed); } static void @@ -564,6 +568,8 @@ ctxpopup_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, { edit_data *ed = data; ed->ctxpopup = NULL; + + edit_auto_save_timer_apply(ed); } //This function is called when user press up/down key or mouse wheel up/down @@ -725,6 +731,8 @@ candidate_list_show(edit_data *ed, char *text, char *cur, char *selected) evas_object_event_callback_add(ctxpopup, EVAS_CALLBACK_DEL, ctxpopup_del_cb, ed); ed->ctxpopup = ctxpopup; elm_object_tree_focus_allow_set(ed->layout, EINA_FALSE); + + edit_auto_save_timer_cancel(ed); } static void @@ -1127,6 +1135,16 @@ edit_focused_cb(void *data, Evas_Object *obj EINA_UNUSED, evas_object_smart_callback_call(ed->enventor, SIG_FOCUSED, NULL); } +static Eina_Bool +auto_save_timer_cb(void *data) +{ + edit_data *ed = data; + edit_save(ed, build_edc_path_get()); + build_edc(); + ed->auto_save_timer = NULL; + return ECORE_CALLBACK_CANCEL; +} + /*/ /* Externally accessible calls */ /*/ @@ -1884,5 +1902,24 @@ edit_redoundo(edit_data *ed, Eina_Bool undo) edit_changed_set(ed, EINA_TRUE); syntax_color_full_update(ed, EINA_TRUE); + edit_auto_save_timer_apply(ed); + return EINA_TRUE; } + +void +edit_auto_save_timer_apply(edit_data *ed) +{ + if (ed->auto_save_timer) + ecore_timer_del(ed->auto_save_timer); + ed->auto_save_timer = ecore_timer_add(AUTO_SAVE_TIME, auto_save_timer_cb, + ed); +} + +void +edit_auto_save_timer_cancel(edit_data *ed) +{ + if (ed->auto_save_timer) + ecore_timer_del(ed->auto_save_timer); + ed->auto_save_timer = NULL; +} diff --git a/src/lib/enventor_private.h b/src/lib/enventor_private.h index c16e5e9..e1df42f 100644 --- a/src/lib/enventor_private.h +++ b/src/lib/enventor_private.h @@ -296,5 +296,7 @@ void edit_disabled_set(edit_data *ed, Eina_Bool disabled); void edit_error_set(edit_data *ed, int line, const char *target); void edit_text_insert(edit_data *ed, const char *text); void edit_part_cursor_set(edit_data *ed, const char *group_name, const char *part_name); +void edit_auto_save_timer_apply(edit_data *ed); +void edit_auto_save_timer_cancel(edit_data *ed); #endif --
[EGIT] [tools/enventor] master 02/03: Revert "Revert "editor: don't auto save always.""
hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=3869e9acc882051892e0745977cb0c9549f9e0f7 commit 3869e9acc882051892e0745977cb0c9549f9e0f7 Author: Hermet ParkDate: Tue Mar 8 16:53:13 2016 +0900 Revert "Revert "editor: don't auto save always."" This reverts commit aa6607c616d5a907a172bcfd8078fdd85b86b6c6. 0.8.0 was released. revert this again. --- src/lib/edc_editor.c | 9 +++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/lib/edc_editor.c b/src/lib/edc_editor.c index 087bcee..0fd966c 100644 --- a/src/lib/edc_editor.c +++ b/src/lib/edc_editor.c @@ -1139,8 +1139,13 @@ static Eina_Bool auto_save_timer_cb(void *data) { edit_data *ed = data; - edit_save(ed, build_edc_path_get()); - build_edc(); + + //Avoid auto save if save has been already accomplished. + if (ed->edit_changed) + { +edit_save(ed, build_edc_path_get()); +build_edc(); + } ed->auto_save_timer = NULL; return ECORE_CALLBACK_CANCEL; } --
[EGIT] [tools/enventor] master 03/03: Revert "Revert "Fix to apply Eo4.""
hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=498c1259ebc7b3087af84bece94924c7b45e2673 commit 498c1259ebc7b3087af84bece94924c7b45e2673 Author: Hermet ParkDate: Tue Mar 8 16:53:27 2016 +0900 Revert "Revert "Fix to apply Eo4."" This reverts commit e67a1d1607a846a0b7192cc735990ab35aa145d6. 0.8.0 was released. revert this again. --- src/lib/edj_viewer.c | 3 +-- src/lib/enventor_smart.c | 12 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/lib/edj_viewer.c b/src/lib/edj_viewer.c index 2b28701..0a24dea 100644 --- a/src/lib/edj_viewer.c +++ b/src/lib/edj_viewer.c @@ -163,8 +163,7 @@ view_obj_create_post_job(view_data *vd) if (vd->part_name) view_part_highlight_set(vd, vd->part_name); - Eina_Bool ret; - if (eo_do_ret(vd->enventor, ret, enventor_obj_dummy_parts_get())) + if (enventor_obj_dummy_parts_get(vd->enventor)) dummy_obj_new(vd->layout); if (vd->changed_part.part) diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c index 7b5c3a8..a5b118c 100644 --- a/src/lib/enventor_smart.c +++ b/src/lib/enventor_smart.c @@ -196,7 +196,7 @@ _enventor_object_evas_object_smart_add(Eo *obj, Enventor_Object_Data *pd) pd->obj = obj; elm_widget_sub_object_parent_add(obj); - eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); + evas_obj_smart_add(eo_super(obj, MY_CLASS)); build_init(); autocomp_init(); @@ -288,10 +288,9 @@ EOLIAN static Eo * _enventor_object_eo_base_constructor(Eo *obj, Enventor_Object_Data *pd EINA_UNUSED) { - obj = eo_do_super_ret(obj, MY_CLASS, obj, eo_constructor()); - eo_do(obj, - evas_obj_type_set(MY_CLASS_NAME_LEGACY), - evas_obj_smart_callbacks_descriptions_set(_smart_callbacks)); + obj = eo_constructor(eo_super(obj, MY_CLASS)); + evas_obj_type_set(obj, MY_CLASS_NAME_LEGACY); + evas_obj_smart_callbacks_descriptions_set(obj, _smart_callbacks); return obj; } @@ -759,8 +758,7 @@ enventor_object_add(Evas_Object *parent) EAPI Eina_Bool enventor_object_file_set(Evas_Object *obj, const char *file) { - Eina_Bool ret; - return eo_do_ret(obj, ret, efl_file_set(file, NULL)); + return efl_file_set(obj, file, NULL); } #include "enventor_object.eo.c" --
[EGIT] [core/efl] master 03/03: tests eolian: add test cases for type stub generations
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=35c577578a22362f0628fe52332f14ad4b9ea3ff commit 35c577578a22362f0628fe52332f14ad4b9ea3ff Author: Stefan SchmidtDate: Mon Mar 7 23:40:37 2016 +0100 tests eolian: add test cases for type stub generations While we had the functionality to generate type stubs header we never had these tested in our unit test setup. Adding to simple cases for struct and typedef which we already use for normal header generation tests. --- src/Makefile_Eolian.am | 2 ++ src/tests/eolian/data/struct_ref_stub.c | 13 + src/tests/eolian/data/typedef_ref_stub.c | 15 +++ src/tests/eolian/eolian_generation.c | 5 + 4 files changed, 35 insertions(+) diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index 50fcc4f..2f4554c 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -132,7 +132,9 @@ EXTRA_DIST += \ tests/eolian/data/object_impl_ref.c \ tests/eolian/data/object_impl_add_ref.c \ tests/eolian/data/typedef_ref.c \ +tests/eolian/data/typedef_ref_stub.c \ tests/eolian/data/struct_ref.c \ +tests/eolian/data/struct_ref_stub.c \ tests/eolian/data/class_simple_ref.c \ tests/eolian/data/override_ref.c \ tests/eolian/data/class_simple_ref_eo.h \ diff --git a/src/tests/eolian/data/struct_ref_stub.c b/src/tests/eolian/data/struct_ref_stub.c new file mode 100644 index 000..3ad9709 --- /dev/null +++ b/src/tests/eolian/data/struct_ref_stub.c @@ -0,0 +1,13 @@ +#ifndef _TYPES_OUTPUT_C_STUBS +#define _TYPES_OUTPUT_C_STUBS + +typedef Eo Struct; + +typedef struct _Named Named; + +typedef struct _Another Another; + +typedef struct _Opaque Opaque; + + +#endif diff --git a/src/tests/eolian/data/typedef_ref_stub.c b/src/tests/eolian/data/typedef_ref_stub.c new file mode 100644 index 000..fe9200a --- /dev/null +++ b/src/tests/eolian/data/typedef_ref_stub.c @@ -0,0 +1,15 @@ +#ifndef _TYPES_OUTPUT_C_STUBS +#define _TYPES_OUTPUT_C_STUBS + +typedef Eo Typedef; + +typedef int Evas_Coord; + +typedef Eina_List *List_Objects; + +typedef Evas_Coord Evas_Coord2; + +typedef Evas_Coord2 Evas_Coord3; + + +#endif diff --git a/src/tests/eolian/eolian_generation.c b/src/tests/eolian/eolian_generation.c index 9512e33..c63c641 100644 --- a/src/tests/eolian/eolian_generation.c +++ b/src/tests/eolian/eolian_generation.c @@ -116,6 +116,11 @@ START_TEST(eolian_types_generation) fail_if(!_files_compare(PACKAGE_DATA_DIR"/data/typedef_ref.c", output_filepath)); fail_if(0 != _eolian_gen_execute(PACKAGE_DATA_DIR"/data/struct.eo", "--gh", output_filepath)); fail_if(!_files_compare(PACKAGE_DATA_DIR"/data/struct_ref.c", output_filepath)); + + fail_if(0 != _eolian_gen_execute(PACKAGE_DATA_DIR"/data/typedef.eo", "--gs", output_filepath)); + fail_if(!_files_compare(PACKAGE_DATA_DIR"/data/typedef_ref_stub.c", output_filepath)); + fail_if(0 != _eolian_gen_execute(PACKAGE_DATA_DIR"/data/struct.eo", "--gs", output_filepath)); + fail_if(!_files_compare(PACKAGE_DATA_DIR"/data/struct_ref_stub.c", output_filepath)); } END_TEST --
[EGIT] [core/efl] master 01/03: eolian_gen: remove unused functions _nextline and _startline
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ff215b2f8f34fa25e56214be35123b81c99d16fe commit ff215b2f8f34fa25e56214be35123b81c99d16fe Author: Stefan SchmidtDate: Mon Mar 7 16:34:09 2016 +0100 eolian_gen: remove unused functions _nextline and _startline These two have no users and there is no point in keeping them around. --- src/bin/eolian/common_funcs.c | 26 -- src/bin/eolian/common_funcs.h | 4 2 files changed, 30 deletions(-) diff --git a/src/bin/eolian/common_funcs.c b/src/bin/eolian/common_funcs.c index 515f249..0005e1d 100644 --- a/src/bin/eolian/common_funcs.c +++ b/src/bin/eolian/common_funcs.c @@ -129,29 +129,3 @@ _template_fill(Eina_Strbuf *buf, const char *templ, const Eolian_Class *class, c eina_strbuf_replace_all(buf, "@#CLASS", tmp_env.upper_classname); } } - -char* -_nextline(char *str, unsigned int lines) -{ - if (!str) return NULL; - - char *ret = str; - while (lines--) - { -ret= strchr(ret, '\n'); -if (ret) ret++; -else return NULL; - } - return ret; -} - -char* -_startline(char *str, char *pos) -{ - if (!str || !pos) return NULL; - - char *ret = pos; - while ((ret > str) && (*(ret-1)!='\n')) ret--; - - return ret; -} diff --git a/src/bin/eolian/common_funcs.h b/src/bin/eolian/common_funcs.h index 4f72a9b..e63c8f4 100644 --- a/src/bin/eolian/common_funcs.h +++ b/src/bin/eolian/common_funcs.h @@ -59,10 +59,6 @@ typedef struct void _template_fill(Eina_Strbuf *buf, const char *templ, const Eolian_Class *class, const char *classname, const char *funcname, Eina_Bool reset); -char *_nextline(char *str, unsigned int lines); - -char *_startline(char *str, char *pos); - void _class_env_create(const Eolian_Class *class, const char *over_classname, _eolian_class_vars *env); void _class_func_env_create(const Eolian_Class *class, const char *funcname, Eolian_Function_Type ftype EINA_UNUSED, _eolian_class_func_vars *env); --
[EGIT] [core/efl] master 02/03: eolian_gen: mention the option for generating a stub header in the example use
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=29028a50ce845cbfeae351cbe288ca5a6de47207 commit 29028a50ce845cbfeae351cbe288ca5a6de47207 Author: Stefan SchmidtDate: Mon Mar 7 16:40:35 2016 +0100 eolian_gen: mention the option for generating a stub header in the example use Listed in the available options already but better also list it in the example usage where the other three generation types are listed as well. --- src/bin/eolian/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c index 075ab1c..77ad87f 100644 --- a/src/bin/eolian/main.c +++ b/src/bin/eolian/main.c @@ -314,7 +314,7 @@ main(int argc, char **argv) if (help) { -printf("Usage: %s [-h/--help] [-I/--include input_dir] [--legacy] [--gh|--gc|--gi] [--output/-o outfile] file.eo ... \n", argv[0]); +printf("Usage: %s [-h/--help] [-I/--include input_dir] [--legacy] [--gh|--gs|--gc|--gi] [--output/-o outfile] file.eo ... \n", argv[0]); printf(" --help/-h Print that help\n"); printf(" --include/-I Include 'input_dir' as directory to search .eo files into\n"); printf(" --output/-o Force output filename to 'outfile'\n"); --
[EGIT] [core/efl] master 01/01: evas-3d examples: remove unused variables
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4f86edc1b616843766e3c2e9e768ab736e8b632b commit 4f86edc1b616843766e3c2e9e768ab736e8b632b Author: Stefan SchmidtDate: Tue Mar 8 11:06:29 2016 +0100 evas-3d examples: remove unused variables --- src/examples/evas/evas-3d-hull.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/examples/evas/evas-3d-hull.c b/src/examples/evas/evas-3d-hull.c index 4877884..57602b6 100644 --- a/src/examples/evas/evas-3d-hull.c +++ b/src/examples/evas/evas-3d-hull.c @@ -289,7 +289,6 @@ _mesh_setup(Scene_Data *data) Eina_Inarray *vert, *ind; float *vertex; unsigned short int *index; - int i = 0; Eo *primitive = NULL; /* Setup material. */ @@ -413,7 +412,6 @@ main(void) //Unless Evas 3D supports Software renderer, we set gl backened forcely. setenv("ECORE_EVAS_ENGINE", "opengl_x11", 1); - int stride_pos; if (!ecore_evas_init()) return 0; --
[EGIT] [tools/eflete] master 01/01: Fix build errors
jaehwan pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=a6eda079f435841a90cfb3bd0c7781da4ab8521b commit a6eda079f435841a90cfb3bd0c7781da4ab8521b Author: Jaehwan KimDate: Tue Mar 8 17:52:21 2016 +0900 Fix build errors --- src/bin/ui/colorclass_manager.c| 2 +- src/bin/ui/editors/animator.c | 3 +- src/bin/ui/project_navigator.c | 2 +- src/bin/ui/property_group.c| 2 +- src/bin/ui/property_macros.h | 2 +- src/bin/ui/property_sound.c| 50 +- src/bin/ui/sound_manager.c | 4 +-- src/bin/ui/style_manager.c | 4 +-- src/bin/ui/tab_home_import_edc.c | 2 +- src/bin/ui/tab_home_import_edj.c | 2 +- src/bin/ui/tab_home_new.c | 2 +- src/bin/ui/workspace/group_navigator.c | 14 +- src/lib/ewe_combobox.c | 17 ++-- src/lib/ewe_ruler.c| 17 ++-- 14 files changed, 60 insertions(+), 63 deletions(-) diff --git a/src/bin/ui/colorclass_manager.c b/src/bin/ui/colorclass_manager.c index 6a80ee6..1579ed6 100644 --- a/src/bin/ui/colorclass_manager.c +++ b/src/bin/ui/colorclass_manager.c @@ -79,7 +79,7 @@ _on_button_add_clicked_cb(void *data __UNUSED__, resource_name_validator_list_set(edit->name_validator, >colorclasses, true); LAYOUT_PROP_ADD(ap.win, _("Color class name: "), "property", "1swallow") ENTRY_ADD(item, edit->entry, true); - eo_do(edit->entry, eo_event_callback_add(ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, edit->name_validator)); + eo_event_callback_add(edit->entry, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, edit->name_validator); evas_object_smart_callback_add(edit->entry, "changed", _validation, edit); elm_object_part_text_set(edit->entry, "guide", _("Type new color class name here")); elm_object_part_content_set(item, "elm.swallow.content", edit->entry); diff --git a/src/bin/ui/editors/animator.c b/src/bin/ui/editors/animator.c index 1dd935d..26fd9a5 100644 --- a/src/bin/ui/editors/animator.c +++ b/src/bin/ui/editors/animator.c @@ -364,8 +364,7 @@ _on_bt_prog_add(void *data, animator->popup.name_validator = elm_validator_regexp_new(NAME_REGEX, NULL); LAYOUT_PROP_ADD(animator->popup.popup, _("Frequency:"), "property", "1swallow") ENTRY_ADD(item, animator->popup.entry, true) - eo_do(animator->popup.entry, - eo_event_callback_add(ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, animator->popup.name_validator)); + eo_event_callback_add(animator->popup.entry, ELM_ENTRY_EVENT_VALIDATE, elm_validator_regexp_helper, animator->popup.name_validator); evas_object_smart_callback_add(animator->popup.entry, "changed", _validation, animator); elm_object_part_content_set(item, "elm.swallow.content", animator->popup.entry); diff --git a/src/bin/ui/project_navigator.c b/src/bin/ui/project_navigator.c index 7ae285d..c0eb8cb 100644 --- a/src/bin/ui/project_navigator.c +++ b/src/bin/ui/project_navigator.c @@ -437,7 +437,7 @@ _btn_add_group_cb(void *data __UNUSED__, LAYOUT_PROP_ADD(layout_p.box, _("name"), "property", "1swallow") ENTRY_ADD(layout_p.box, layout_p.entry, true) evas_object_smart_callback_add(layout_p.entry, "changed", _group_validate, NULL); - eo_do(layout_p.entry, eo_event_callback_add(ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, validator)); + eo_event_callback_add(layout_p.entry, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, validator); elm_layout_content_set(item, NULL, layout_p.entry); elm_box_pack_end(layout_p.box, item); glit = elm_genlist_selected_item_get(project_navigator.genlist); diff --git a/src/bin/ui/property_group.c b/src/bin/ui/property_group.c index 1a6d93c..32f817a 100644 --- a/src/bin/ui/property_group.c +++ b/src/bin/ui/property_group.c @@ -1515,7 +1515,7 @@ prop_part_name_add(Evas_Object *parent, Group_Prop_Data *pd) PROPERTY_ITEM_ADD(parent, _("name"), "1swallow"); ENTRY_ADD(parent, pd->attributes.part.name, true); - eo_do(pd->attributes.part.name, eo_event_callback_add(ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, pd->attributes.part.validator)); + eo_event_callback_add(pd->attributes.part.name, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, pd->attributes.part.validator); resource_name_validator_list_set(pd->attributes.part.validator, >part->group->parts, false); resource_name_validator_resource_set(pd->attributes.part.validator, (Resource *)pd->part); elm_entry_entry_set(pd->attributes.part.name, pd->part->name); diff --git a/src/bin/ui/property_macros.h b/src/bin/ui/property_macros.h index 374d79d..88aa8be 100644 --- a/src/bin/ui/property_macros.h +++ b/src/bin/ui/property_macros.h @@ -549,7 +549,7 @@ prop_##SUB##_##VALUE##_add(Evas_Object *parent, \
[EGIT] [core/efl] master 01/01: eo del interceptor: add the ability to intercept deletions of eo objects
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3df71ab0f668967cf37813cc2322d1993a4d5db1 commit 3df71ab0f668967cf37813cc2322d1993a4d5db1 Author: Carsten Haitzler (Rasterman)Date: Tue Mar 8 16:57:22 2016 +0900 eo del interceptor: add the ability to intercept deletions of eo objects Imagine this. You have an object. You pass this object handle as a message to another thread. Let's say it's not a UI object, so something you might expect to be able to be accessed from multiple threads. In order to keep the object alive you eo_ref() it when placing the message on a queue and eo_unref() it once the message is "done" in the other thread. If the original sender unref()ed the object before the message is done, then the object will be destroyed in the reciever thread. This is bad for objects "expecting" not to be destroyed outside their owning thread. This allows thius situation to be fixed. A constructor in a class of an object can set up a delete interceptor. For example if we have a "loop ownership" class you multi-ple-inherit from/use as a mixin. This class will set up the interceptor to ensure that on destruction if pthread_self() != owning loop thread id, then add object to "delete me" queue on the owning loop and wake it up. the owning loop thread will wake up and then process this queue and delete the queued objects nicely and safely within the "owning context". This can also be used in this same manner to defer deletion within a loop "until later" in the same delete_me queue. You can even use this as a caching mechanism for objects to prevernt their actual destruction and instead place them in a cached area to be picked from at a later date. The uses are many for this and this is a basic building block for future EFL features like generic messages where a message payload could be an eo object and thus the above loop onwership issue can happen and needs fixing. This adds APIs, implementation, documentation (doxy reference) and tests. @feature --- src/lib/eo/Eo.h | 58 src/lib/eo/eo.c | 16 ++ src/lib/eo/eo_private.h | 9 ++ src/tests/eo/suite/eo_test_general.c | 55 ++ 4 files changed, 138 insertions(+) diff --git a/src/lib/eo/Eo.h b/src/lib/eo/Eo.h index cf10bb3..4bfae97 100644 --- a/src/lib/eo/Eo.h +++ b/src/lib/eo/Eo.h @@ -166,6 +166,16 @@ typedef struct _Eo_Event Eo_Event; */ typedef Eina_Bool (*Eo_Event_Cb)(void *data, const Eo_Event *event); +/** + * @typedef Eo_Del_Intercept + * + * A function to be called on object deletion/destruction instead of normal + * destruction taking place. + * + * @param obj_id The object needing destruction + */ +typedef void (*Eo_Del_Intercept) (Eo *obj_id); + #include "eo_base.eo.h" #define EO_CLASS EO_BASE_CLASS @@ -787,6 +797,54 @@ EAPI void eo_unref(const Eo *obj); EAPI int eo_ref_get(const Eo *obj); /** + * @brief Set a deletion interceptor function + * @param obj The object to set the interceptor on + * @param del_intercept_func The interceptor function to call + * + * This sets the function @p del_intercept_func to be called when an object + * is about to go from a reference count of 1 to 0, thus triggering actual + * destruction of the object. Instead of going to a reference count of 0 and + * being destroyed, the object will stay alive with a reference count of 1 + * and this intercept function will be called instead. It is the job of + * this interceptor function to handle any further deletion of of the object + * from here. + * + * Note that by default objects have no interceptor function set, and thus + * will be destroyed as normal. To return an object to this state, simply + * set the @p del_intercept_func to NULL which is the default. + * + * A good use for this feature is to ensure an object is destroyed by its + * owning main loop and not in a foreign loop. This makes it possible to + * safely unrefor delete objects from any loop as an interceptor can be set + * on an object that will abort destruction and instead queue the object + * on its owning loop to be destroyed at some time in the future and now + * set the intercept function to NULL so it is not called again on the next + * "real deletion". + * + * @see eo_del_intercept_get() + * @see eo_unref() + * @see eo_del() + */ +EAPI void eo_del_intercept_set(Eo *obj, Eo_Del_Intercept del_intercept_func); + +/** + * @brief Get the deletion interceptor function + * @param obj The object to get the interceptor of + * @return The intercept function or NULL if none is set. + * + * This returns the interceptor function set by eo_del_intercept_set(). Note + * that objects by default have no interceptor (NULL) set, but certain + * classes
[EGIT] [website/www-content] master 01/01: bump up enventor version
hermet pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=3b9175e70ad567816777bf4261dccc03b58c7538 commit 3b9175e70ad567816777bf4261dccc03b58c7538 Author: Hermet ParkDate: Tue Mar 8 17:33:57 2016 +0900 bump up enventor version --- pages/download-latest.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/download-latest.txt b/pages/download-latest.txt index 5e0bc50..1195e2c 100644 --- a/pages/download-latest.txt +++ b/pages/download-latest.txt @@ -11,7 +11,7 @@ rage_v= 0.1.4 econnman_v= 1.1 epour_v = 0.6.0 -enventor_v= 0.7.0 +enventor_v= 0.8.1 eflete_v = 0.5.0 extn = .tar.gz --