[EGIT] [core/efl] master 01/01: elm/genlist: use correct type of list when iterating
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ab1fd96363b630df1f5b3cb145eade3466b74b75 commit ab1fd96363b630df1f5b3cb145eade3466b74b75 Author: Mike Blumenkrantz Date: Thu Aug 2 16:42:56 2018 -0400 elm/genlist: use correct type of list when iterating itb-items is Eina_List, not Eina_Inlist. this crashes due to wrong type use ref D6720 fix T7246 Differential Revision: https://phab.enlightenment.org/D6736 --- src/lib/elementary/elm_genlist.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 9523017b35..854d3e569c 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -4362,12 +4362,13 @@ _update_block_registration(Item_Block *itb, Elm_Gen_Item *element) { Elm_Gen_Item *it = NULL; Eina_List *order = NULL; + const Eina_List *l; if (!itb->realized) return; efl_ui_focus_manager_calc_register_logical(itb->sd->obj, EO_OBJ(element), itb->adapter, NULL); - EINA_INLIST_FOREACH(itb->items, it) + EINA_LIST_FOREACH(itb->items, l, it) { order = eina_list_append(order, EO_OBJ(it)); } --
[EGIT] [website/www-content] master 01/01: Wiki page sandbox_gadgets.md changed with summary [] by Stephen M Houston
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=e66b4f203d7b5cf69b32b3d1edaff79d9ccbeb45 commit e66b4f203d7b5cf69b32b3d1edaff79d9ccbeb45 Author: Stephen M Houston Date: Thu Aug 2 07:40:12 2018 -0700 Wiki page sandbox_gadgets.md changed with summary [] by Stephen M Houston --- pages/develop/e/sandbox_gadgets.md.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/develop/e/sandbox_gadgets.md.txt b/pages/develop/e/sandbox_gadgets.md.txt index c8baf06d9..2c58f4908 100644 --- a/pages/develop/e/sandbox_gadgets.md.txt +++ b/pages/develop/e/sandbox_gadgets.md.txt @@ -3,6 +3,7 @@ --- # Creating Enlightenment Gadgets # +**The code blocks in this guide are not intended to be compiled separately or work individually. They are meant to be used as a visual reference of the changes that need to be made to make an EFL application a gadget. The final code block, along with the accompanying .desktop file and meson.build at the end of this page are the intended files to use if you would like to compile and install this example as a gadget.** *Gadgets* are standalone applications that Enlightenment can use as extensions to its desktop. They are similar to modules in that they can be placed in containers, called *gadget sites*; they differ in that they are not internal to Enlightenment and do not run in the same process. --
[EGIT] [website/www-content] master 01/01: Wiki page sandbox_gadgets.md changed with summary [] by Stephen M Houston
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=a10c3ad16e1266d64a5213cb9a830519669b2cbf commit a10c3ad16e1266d64a5213cb9a830519669b2cbf Author: Stephen M Houston Date: Thu Aug 2 07:36:17 2018 -0700 Wiki page sandbox_gadgets.md changed with summary [] by Stephen M Houston --- pages/develop/e/sandbox_gadgets.md.txt | 4 1 file changed, 4 deletions(-) diff --git a/pages/develop/e/sandbox_gadgets.md.txt b/pages/develop/e/sandbox_gadgets.md.txt index 5d6554d88..c8baf06d9 100644 --- a/pages/develop/e/sandbox_gadgets.md.txt +++ b/pages/develop/e/sandbox_gadgets.md.txt @@ -81,10 +81,6 @@ elm_main(int argc, char **argv) } ``` -Compile it (and other examples on this page) with: - - cc example.c -o example `pkg-config --cflags --libs enlightenment` - The variable ``gadget`` is used to determine if the application is running as a gadget or as a standalone application. The variable ``id_num`` is used to identify the ID of the gadget, if the application is indeed running as a gadget. If the application is running as a gadget, the window is set to alpha so that the background of the window does not show up. This is for aesthetics purposes so that gadgets on gadget sites don't all have a background. If the id of the gadget is ``-1`` the application is being run in the "Add Gadget" popup. In this case the application displays an icon. If the ID of the gadget is not ``-1`` the application is being run as a gadget in a gadget site and the ID will be unique to this gadget. This is important for complex gadgets where the application would like to save settings or configurations and have them loaded after restarts. This unique ID is how the application will identify which settings to load. --
[EGIT] [core/enlightenment] enlightenment-0.22 20/30: input method conf dialog - fix filtering of imc's to search path
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2c52afb6f4d8dc2a99d03d144b755346a710e25f commit 2c52afb6f4d8dc2a99d03d144b755346a710e25f Author: Carsten Haitzler (Rasterman) Date: Tue May 15 15:36:45 2018 +0900 input method conf dialog - fix filtering of imc's to search path if exe is not a full path it'd be filtered out... so fix and do a path search to show imc's that can work. @fix --- src/modules/conf_intl/e_int_config_imc.c | 39 +--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/modules/conf_intl/e_int_config_imc.c b/src/modules/conf_intl/e_int_config_imc.c index 64aa15a66..d49159a12 100644 --- a/src/modules/conf_intl/e_int_config_imc.c +++ b/src/modules/conf_intl/e_int_config_imc.c @@ -347,10 +347,43 @@ _basic_create_widgets(E_Config_Dialog *cfd EINA_UNUSED, Evas *evas, E_Config_Dia { Efreet_Desktop *desktop; - if (!ecore_file_exists(imc->e_im_setup_exec)) + if (imc->e_im_setup_exec[0] == '/') { -e_intl_input_method_config_free(imc); -goto out; +if (!ecore_file_exists(imc->e_im_setup_exec)) + { + e_intl_input_method_config_free(imc); + goto out; + } + } + else + { +const char *env = getenv("PATH"); +char **split, buf[PATH_MAX]; +Eina_Bool exec_found = EINA_FALSE; + +if (!env) + { + e_intl_input_method_config_free(imc); + goto out; + } +split = eina_str_split(env, ":", 0); +for (i = 0; split[i] != NULL; i++) + { + snprintf(buf, sizeof(buf), "%s/%s", split[i], imc->e_im_setup_exec); + + if (ecore_file_exists(buf) && ecore_file_can_exec(buf)) + { + exec_found = EINA_TRUE; + break; + } + } +free(split[0]); +free(split); +if (!exec_found) + { + e_intl_input_method_config_free(imc); + goto out; + } } desktop = efreet_util_desktop_exec_find(imc->e_im_setup_exec); if (desktop) --
[EGIT] [core/enlightenment] enlightenment-0.22 27/30: e randr screen setup - fix disabling of scale checkbox
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=f968b37095576ffa45272bef013739d5fbc39013 commit f968b37095576ffa45272bef013739d5fbc39013 Author: Carsten Haitzler (Rasterman) Date: Wed Jul 25 00:05:50 2018 +0900 e randr screen setup - fix disabling of scale checkbox --- src/modules/conf_randr/e_int_config_randr2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/conf_randr/e_int_config_randr2.c b/src/modules/conf_randr/e_int_config_randr2.c index e30cf08b8..5c3bdd109 100644 --- a/src/modules/conf_randr/e_int_config_randr2.c +++ b/src/modules/conf_randr/e_int_config_randr2.c @@ -466,6 +466,7 @@ _basic_screen_info_fill(E_Config_Dialog_Data *cfdata, E_Config_Randr2_Screen *cs { elm_check_state_set(cfdata->use_profile_obj, EINA_TRUE); elm_object_disabled_set(cfdata->profile_list_obj, EINA_FALSE); +elm_object_disabled_set(cfdata->scale_custom_obj, EINA_FALSE); _basic_profile_list_fill(cfdata, cs->profile); --
[EGIT] [core/enlightenment] enlightenment-0.22 17/30: compile against stable EFL again
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e047ed2638ec73aa72364e6ea9319a87b8f1cf33 commit e047ed2638ec73aa72364e6ea9319a87b8f1cf33 Author: Derek Foreman Date: Wed Apr 25 11:06:12 2018 -0500 compile against stable EFL again E should probably continue to build against released EFL older than the current interface name changes. --- src/modules/wl_drm/e_mod_main.c | 15 +++ 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c index 68d6593f9..d51293c1d 100644 --- a/src/modules/wl_drm/e_mod_main.c +++ b/src/modules/wl_drm/e_mod_main.c @@ -779,14 +779,13 @@ _drm_device_del(void *data EINA_UNUSED, const Efl_Event *event) ecore_evas_cursor_device_unset(e_comp->ee, event->info); } -EFL_CALLBACKS_ARRAY_DEFINE(_drm_device_del_cb, - { EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED, _drm_device_del }); - E_API void * e_modapi_init(E_Module *m) { int w = 0, h = 0; + static Efl_Callback_Array_Item arr[2] = { { 0, _drm_device_del } }; + printf("LOAD WL_DRM MODULE\n"); /* try to init ecore_drm */ @@ -832,6 +831,14 @@ e_modapi_init(E_Module *m) ecore_evas_screen_geometry_get(e_comp->ee, NULL, NULL, , ); if (!e_comp_canvas_init(w, h)) return NULL; +#ifdef EFL_VERSION_1_21 + arr[0].desc = EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED; +#else + if (E_EFL_VERSION_MINIMUM(1, 20, 99)) + arr[0].desc = dlsym(NULL, "_EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED"); + if (!arr[0].desc) + arr[0].desc = dlsym(NULL, "_EFL_CANVAS_EVENT_DEVICE_REMOVED"); +#endif ecore_evas_pointer_xy_get(e_comp->ee, _comp_wl->ptr.x, _comp_wl->ptr.y); evas_event_feed_mouse_in(e_comp->evas, 0, NULL); @@ -855,7 +862,7 @@ e_modapi_init(E_Module *m) ecore_event_handler_add(ELPUT_EVENT_POINTER_MOTION, (Ecore_Event_Handler_Cb)_pointer_motion, NULL); - efl_event_callback_array_priority_add(e_comp->evas, _drm_device_del_cb(), + efl_event_callback_array_priority_add(e_comp->evas, arr, EFL_CALLBACK_PRIORITY_BEFORE, NULL); return m; --
[EGIT] [core/enlightenment] enlightenment-0.22 29/30: e pixmap - follow on from previous commit to finally fix pixmap tracking
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ae64aabfa253a9c575d499440b175bf8229dfbdd commit ae64aabfa253a9c575d499440b175bf8229dfbdd Author: Carsten Haitzler (Rasterman) Date: Thu Jul 19 16:24:08 2018 +0900 e pixmap - follow on from previous commit to finally fix pixmap tracking follow on form 4c7b798b45421fec9c54d95ef50ee685fdc07392 - really remove from the alias hash. the alias id is different and should ave been stored in the pixmap and be deleted when pixmap is freed. i had it right to remove from the aliases hash too, but i used the wrong id - i used the "core" pixmap id, not alias. this tracks and uses that alias. this means internal windows are reliable now and dont crash... @fix. --- src/bin/e_pixmap.c | 37 + 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 4c667757c..bc16e498b 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -31,6 +31,7 @@ struct _E_Pixmap E_Pixmap_Type type; int64_t win; + int64_t alias; Ecore_Window parent; int w, h; @@ -266,7 +267,7 @@ _e_pixmap_find(E_Pixmap_Type type, va_list *l) int64_t id; #endif E_Pixmap *cp; - + if (!pixmaps[type]) return NULL; switch (type) { @@ -294,27 +295,32 @@ _e_pixmap_find(E_Pixmap_Type type, va_list *l) E_API int e_pixmap_free(E_Pixmap *cp) { +#ifndef HAVE_WAYLAND_ONLY + Ecore_X_Window xwin = cp ? cp->win : 0; + Ecore_X_Window alias_xwin = cp ? cp->alias : 0; +#endif +#ifdef HAVE_WAYLAND + int64_t id = cp ? cp->win : 0; + int64_t alias_id = cp ? cp->alias : 0; +#endif + E_Pixmap_Type type; + if (!cp) return 0; if (--cp->refcount) return cp->refcount; + type = cp->type; e_pixmap_image_clear(cp, EINA_FALSE); - switch (cp->type) + switch (type) { case E_PIXMAP_TYPE_X: #ifndef HAVE_WAYLAND_ONLY - { - Ecore_X_Window xwin = cp->win; - eina_hash_del_by_key(pixmaps[cp->type], ); - eina_hash_del_by_key(aliases[cp->type], ); - } +if (alias_xwin) eina_hash_del(aliases[type], _xwin, cp); +eina_hash_del(pixmaps[type], , cp); #endif break; case E_PIXMAP_TYPE_WL: #ifdef HAVE_WAYLAND - { - int64_t id = cp->win; - eina_hash_del_by_key(pixmaps[cp->type], ); - eina_hash_del_by_key(aliases[cp->type], ); - } +if (alias_id) eina_hash_del(aliases[type], _id, cp); +eina_hash_del(pixmaps[type], , cp); #endif break; default: break; @@ -1095,6 +1101,7 @@ e_pixmap_image_opaque_get(E_Pixmap *cp, int *x, int *y, int *w, int *h) E_API void e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...) { + E_Pixmap *cp2; va_list l; #ifndef HAVE_WAYLAND_ONLY Ecore_X_Window xwin; @@ -,6 +1118,9 @@ e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...) xwin = va_arg(l, uint32_t); if (!aliases[type]) aliases[type] = eina_hash_int32_new(NULL); +cp2 = eina_hash_find(aliases[type], ); +if ((cp2) && (!cp)) cp2->alias = 0; +else if (cp) cp->alias = xwin; eina_hash_set(aliases[type], , cp); #endif break; @@ -1119,6 +1129,9 @@ e_pixmap_alias(E_Pixmap *cp, E_Pixmap_Type type, ...) id = va_arg(l, int64_t); if (!aliases[type]) aliases[type] = eina_hash_int64_new(NULL); +cp2 = eina_hash_find(aliases[type], ); +if ((cp2) && (!cp)) cp2->alias = 0; +else if (cp) cp->alias = id; eina_hash_set(aliases[type], , cp); #endif break; --
[EGIT] [core/enlightenment] enlightenment-0.22 03/30: Fix single frame broken render on wayland client opaque region change
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=14c04b87774893e8a5e45f42f7be76a9de09ec04 commit 14c04b87774893e8a5e45f42f7be76a9de09ec04 Author: Derek Foreman Date: Wed Mar 21 14:19:39 2018 -0500 Fix single frame broken render on wayland client opaque region change Turns out this is called too late in the render pass and a single frame can occur with the old border setting. This can lead to nasty flicker artifacts. --- src/bin/e_comp_object.c | 66 + 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 0909b6d4e..b36be7a6a 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -959,7 +959,6 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj) E_Comp_Object *cw = data; E_Client *ec = cw->ec; int pw, ph; - int bx, by, bxx, byy; if ((!ec->pixmap) || (!e_pixmap_size_get(ec->pixmap, , ))) { @@ -967,37 +966,6 @@ _e_comp_object_pixels_get(void *data, Evas_Object *obj) return; } //INF("PIXEL GET %p: %dx%d || %dx%d", ec, ec->w, ec->h, pw, ph); - e_pixmap_image_opaque_get(cw->ec->pixmap, , , , ); - if (bxx && byy) - { -bxx = pw - (bx + bxx), byy = ph - (by + byy); -evas_object_image_border_set(cw->obj, bx, bxx, by, byy); - } - else - { -bx = by = bxx = byy = 0; -evas_object_image_border_set(cw->obj, bx, bxx, by, byy); -if (cw->client_inset.calc && (!cw->frame_object)) //CSD - { - bx = -cw->client_inset.l + 4, by = -cw->client_inset.t + 4; - bxx = -cw->client_inset.r, byy = -cw->client_inset.b; - } - } - { - Edje_Message_Int_Set *msg; - Edje_Message_Int msg2; - Eina_Bool id = (bx || by || bxx || byy); - - msg = alloca(sizeof(Edje_Message_Int_Set) + (sizeof(int) * 3)); - msg->count = 4; - msg->val[0] = bx; - msg->val[1] = by; - msg->val[2] = bxx; - msg->val[3] = byy; - edje_object_message_send(cw->shobj, EDJE_MESSAGE_INT_SET, 1, msg); - msg2.val = id; - edje_object_message_send(cw->shobj, EDJE_MESSAGE_INT, 0, ); - } /* queue another render if client is still dirty; cannot refresh here. */ if (e_pixmap_dirty_get(ec->pixmap) && e_pixmap_size_get(ec->pixmap, , )) @@ -4077,6 +4045,7 @@ e_comp_object_dirty(Evas_Object *obj) Evas_Object *o; int w, h; Eina_Bool dirty, visible, alpha; + int bx, by, bxx, byy; API_ENTRY; /* only actually dirty if pixmap is available */ @@ -4110,6 +4079,39 @@ e_comp_object_dirty(Evas_Object *obj) ERR("ERROR FETCHING PIXMAP FOR %p", cw->ec); return; } + + e_pixmap_image_opaque_get(cw->ec->pixmap, , , , ); + if (bxx && byy) + { +bxx = w - (bx + bxx), byy = h - (by + byy); +evas_object_image_border_set(cw->obj, bx, bxx, by, byy); + } + else + { +bx = by = bxx = byy = 0; +evas_object_image_border_set(cw->obj, bx, bxx, by, byy); +if (cw->client_inset.calc && (!cw->frame_object)) //CSD + { + bx = -cw->client_inset.l + 4, by = -cw->client_inset.t + 4; + bxx = -cw->client_inset.r, byy = -cw->client_inset.b; + } + } + { + Edje_Message_Int_Set *msg; + Edje_Message_Int msg2; + Eina_Bool id = (bx || by || bxx || byy); + + msg = alloca(sizeof(Edje_Message_Int_Set) + (sizeof(int) * 3)); + msg->count = 4; + msg->val[0] = bx; + msg->val[1] = by; + msg->val[2] = bxx; + msg->val[3] = byy; + edje_object_message_send(cw->shobj, EDJE_MESSAGE_INT_SET, 1, msg); + msg2.val = id; + edje_object_message_send(cw->shobj, EDJE_MESSAGE_INT, 0, ); + } + e_comp_object_native_surface_set(obj, 1); it = eina_tiler_iterator_new(cw->updates); EINA_ITERATOR_FOREACH(it, rect) --
[EGIT] [core/enlightenment] enlightenment-0.22 18/30: update arcconfig key:values for new phabricator api
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=bd3e00d46384fa1dfc43d785f85118141a1d9899 commit bd3e00d46384fa1dfc43d785f85118141a1d9899 Author: Mike Blumenkrantz Date: Fri May 11 09:46:55 2018 +0200 update arcconfig key:values for new phabricator api Summary: https://secure.phabricator.com/book/phabricator/article/arcanist_new_project/ the previous values here are no longer valid and will fail when used with git-phab Depends on D6154 Reviewers: cedric, raster, bu5hm4n Reviewed By: bu5hm4n Subscribers: devilhorns Tags: #enlightenment-git Differential Revision: https://phab.enlightenment.org/D6155 --- .arcconfig | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.arcconfig b/.arcconfig index 337a23b17..3dec5e39f 100644 --- a/.arcconfig +++ b/.arcconfig @@ -1,4 +1,6 @@ { - "project_id" : "enlightenment", - "conduit_uri" : "https://phab.enlightenment.org/; + "project_id" : "enlightenment-git", + "projects" : "enlightenment-git", + "conduit_uri" : "https://phab.enlightenment.org/;, + "phabricator.uri" : "https://phab.enlightenment.org/; } --
[EGIT] [core/enlightenment] enlightenment-0.22 22/30: emxier desktop - fix categories to match well known cat names
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a451626cc628e71f049cdae6c22156e6f3aa3756 commit a451626cc628e71f049cdae6c22156e6f3aa3756 Author: Carsten Haitzler (Rasterman) Date: Fri May 18 15:40:57 2018 +0900 emxier desktop - fix categories to match well known cat names Audio is not a well known/valid one. AudioVideo is. fixes T5076 @fix --- src/modules/mixer/emixer.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mixer/emixer.desktop b/src/modules/mixer/emixer.desktop index 2ed0ee874..948746810 100644 --- a/src/modules/mixer/emixer.desktop +++ b/src/modules/mixer/emixer.desktop @@ -18,5 +18,5 @@ Comment[it]=Un modulo per controllare il volume dell'audio e degli stream. Comment[ms]=Modul untuk mengawal volum dan strim audio. Comment[sr]=Јединица за управљање јечином звука и токова. Comment[tr]=Ses seviyesi ve ses akışı kontrol modülü. -Categories=Audio;System; +Categories=AudioVideo;System; StartupWMClass=emixer --
[EGIT] [core/enlightenment] enlightenment-0.22 12/30: startup - fix management of timer pointer for startup timeout
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2583e560a21c11a5446b849d4e04e9d9b80b801c commit 2583e560a21c11a5446b849d4e04e9d9b80b801c Author: Carsten Haitzler (Rasterman) Date: Wed Apr 11 14:37:57 2018 +0900 startup - fix management of timer pointer for startup timeout fixes access of invalid timer pointer value on slow systems. (was being caught with magic/invalid eiod before) @fix --- src/bin/e_startup.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/e_startup.c b/src/bin/e_startup.c index be9e9e595..cdfa1db25 100644 --- a/src/bin/e_startup.c +++ b/src/bin/e_startup.c @@ -15,7 +15,7 @@ static Eina_Bool _e_startup_time_exceeded(void *data); static E_Order *startup_apps = NULL; static int start_app_pos = -1; static Ecore_Event_Handler *desktop_cache_update_handler = NULL; -static Ecore_Timer *timer; +static Ecore_Timer *timer = NULL; static Eina_Bool desktop_cache_update = EINA_FALSE; static Eina_Bool started = EINA_FALSE; @@ -43,6 +43,7 @@ e_startup_mode_set(E_Startup_Mode mode) ecore_event_handler_add(EFREET_EVENT_DESKTOP_CACHE_BUILD, _e_startup_event_cb, strdup(buf)); + if (timer) ecore_timer_del(timer); timer = ecore_timer_add(5.0, _e_startup_time_exceeded, NULL); e_init_undone(); } @@ -113,7 +114,7 @@ _e_startup_event_cb(void *data, int ev_type EINA_UNUSED, void *ev) char *buf; Efreet_Event_Cache_Update *e; - ecore_timer_del(timer); + if (timer) ecore_timer_del(timer); timer = NULL; e = ev; @@ -141,5 +142,6 @@ _e_startup_time_exceeded(void *data EINA_UNUSED) fprintf(stderr, "E: efreet didn't notify about cache update\n"); _e_startup_error_dialog("E: Efreet did not update cache. " "Please check your Efreet setup"); + timer = NULL; return ECORE_CALLBACK_CANCEL; } --
[EGIT] [core/enlightenment] enlightenment-0.22 06/30: e menus - when filtering for exe handle quotes, escapes etc.
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=781f4eb70bd76582b334554457221302a8e3d3b0 commit 781f4eb70bd76582b334554457221302a8e3d3b0 Author: Carsten Haitzler (Rasterman) Date: Tue Mar 27 18:57:44 2018 +0900 e menus - when filtering for exe handle quotes, escapes etc. handle quotes, escapes and so on for the shell command so you can do things like Exec="ls" and it still work. this will also allow executables with spaces in them as well with quotes or escapes as backslash. this fixes T6787 @fix --- src/bin/e_int_menus.c | 102 +++--- 1 file changed, 88 insertions(+), 14 deletions(-) diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 10110f900..8d18e2983 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -694,6 +694,80 @@ _e_int_menus_main_exit(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Ite if ((a) && (a->func.go)) a->func.go(NULL, NULL); } +static char * +_e_int_menus_app_exe_get(const char *exec) +{ + char *real, *d; + const char *s; + Eina_Bool in_quote_dbl = EINA_FALSE; + Eina_Bool in_quote = EINA_FALSE; + + real = malloc(strlen(exec) + 1); + if (!real) return NULL; + for (d = real, s = exec; *s; s++) + { +if (in_quote_dbl) + { + switch (*s) + { +case '\"': + in_quote_dbl = EINA_FALSE; + break; +case '\\': + s++; + EINA_FALLTHROUGH +default: + *d = *s; + d++; + break; + } + } +else if (in_quote) + { + switch (*s) + { +case '\'': + in_quote = EINA_FALSE; + break; +case '\\': + s++; + EINA_FALLTHROUGH +default: + *d = *s; + d++; + break; + } + } +else + { + switch (*s) + { +case ' ': +case '\t': +case '\r': +case '\n': + goto done; + break; +case '\"': + in_quote_dbl = EINA_TRUE; + break; +case '\'': + in_quote = EINA_TRUE; + break; +case '\\': + s++; + EINA_FALLTHROUGH +default: + *d = *s; + d++; + break; + } + } + } +done: + *d = 0; + return real; +} /* * This function searches $PATH for try_exec or exec * return true if try_exec or exec is found! @@ -705,23 +779,31 @@ _e_int_menus_app_finder(const char *exec) char **split, buf[PATH_MAX]; Eina_Bool exec_found = EINA_FALSE; int i = 0; + char *real = NULL; - if (strchr(exec, '/')) + if (!exec) return EINA_FALSE; + real = _e_int_menus_app_exe_get(exec); + if (!real) return EINA_FALSE; + if (strchr(real, '/')) { -if (ecore_file_exists(exec) && ecore_file_can_exec(exec)) - return EINA_TRUE; +if (ecore_file_exists(real) && ecore_file_can_exec(real)) + { + free(real); + return EINA_TRUE; + } } if (!env) { WRN("Unable to $PATH, Returning TRUE for every .desktop"); +free(real); return EINA_TRUE; } split = eina_str_split(env, ":", 0); for (i = 0; split[i] != NULL; i++) { -snprintf(buf, sizeof(buf), "%s/%s", split[i], exec); +snprintf(buf, sizeof(buf), "%s/%s", split[i], real); if (ecore_file_exists(buf) && ecore_file_can_exec(buf)) { @@ -735,6 +817,7 @@ _e_int_menus_app_finder(const char *exec) if (!exec_found) WRN("Unable to find: [%s] I searched $PATH=%s", exec, env); + free(real); return exec_found; } @@ -795,16 +878,7 @@ _e_int_menus_app_config_append(Efreet_Desktop *desktop) } else if (cma->exec) { -if (!strchr(cma->exec, ' ')) - cma->exec_valid = _e_int_menus_app_finder(cma->exec); -else - { - char **split; - split = eina_str_split(cma->exec, " ", 0); - cma->exec_valid = _e_int_menus_app_finder(split[0]); - free(split[0]); - free(split); - } +cma->exec_valid = _e_int_menus_app_finder(cma->exec); } e_config->menu_applications = eina_list_append(e_config->menu_applications, cma); --
[EGIT] [core/enlightenment] enlightenment-0.22 13/30: efm - dont add null icons to list ... fixes segv
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=65039f9c4c4f69fcdb83018721f89e4277f59565 commit 65039f9c4c4f69fcdb83018721f89e4277f59565 Author: Carsten Haitzler (Rasterman) Date: Wed Apr 11 14:38:55 2018 +0900 efm - dont add null icons to list ... fixes segv as per title. dont store null icons in the list - not intended to be that way. @fix --- src/bin/e_fm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 1dd3ffaca..1ef171c9f 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -4561,7 +4561,7 @@ _e_fm2_uri_selected_icon_list_get(Eina_List *uri) if (eina_list_data_find(ic->sd->selected_icons, ic)) break; ic = NULL; } -icons = eina_list_append(icons, ic); +if (ic) icons = eina_list_append(icons, ic); } return icons; } --
[EGIT] [core/enlightenment] enlightenment-0.22 25/30: avoid adding render updates for deleted clients after animation completes
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=894dddfcfd8af64223c864c42234cdb457e61d27 commit 894dddfcfd8af64223c864c42234cdb457e61d27 Author: Mike Blumenkrantz Date: Mon Jun 25 06:54:46 2018 -0400 avoid adding render updates for deleted clients after animation completes Summary: in the case where deletion is deferred to preserve a window animation this codepath may be triggered by a deleted client, at which point no render update should occur in order to avoid compositor errors ref f78eb3c108fbbb84edcb4c62fc499b4be558169a fix T5203 Reviewers: ManMower, devilhorns Reviewed By: devilhorns Subscribers: netstar, cedric Tags: #enlightenment-git Maniphest Tasks: T5203 Differential Revision: https://phab.enlightenment.org/D6367 --- 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 6bab7d507..f212a164b 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -825,7 +825,7 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char * /* hide only after animation finishes to guarantee a full run of the animation */ if (cw->defer_hide && ((!strcmp(emission, "e,action,hide,done")) || (!strcmp(emission, "e,action,done" evas_object_hide(cw->smart_obj); - else + else if (!cw->deleted) { e_comp_shape_queue(); if (cw->visible && cw->updates_exist) --
[EGIT] [core/enlightenment] enlightenment-0.22 02/30: Move alpha set for mirrors out of pixels_get callback
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b88d080742976031a24f3c30b3473668ec5099fd commit b88d080742976031a24f3c30b3473668ec5099fd Author: Derek Foreman Date: Wed Mar 21 14:16:44 2018 -0500 Move alpha set for mirrors out of pixels_get callback the pixels_get callback fires too late for this to work properly, so set it in e_comp_object_dirty() instead. --- src/bin/e_comp_object.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index dce688289..0909b6d4e 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -948,7 +948,6 @@ _e_comp_object_mirror_pixels_get(void *data, Evas_Object *obj) if (cw->native) return; evas_object_image_data_set(obj, e_pixmap_image_data_get(cw->ec->pixmap)); - evas_object_image_alpha_set(obj, evas_object_image_alpha_get(cw->obj)); } / @@ -4077,7 +4076,7 @@ e_comp_object_dirty(Evas_Object *obj) Eina_List *ll; Evas_Object *o; int w, h; - Eina_Bool dirty, visible; + Eina_Bool dirty, visible, alpha; API_ENTRY; /* only actually dirty if pixmap is available */ @@ -4092,11 +4091,14 @@ e_comp_object_dirty(Evas_Object *obj) RENDER_DEBUG("SIZE [%p]: %dx%d", cw->ec, w, h); if (cw->pending_updates) eina_tiler_area_size_set(cw->pending_updates, w, h); + + alpha = evas_object_image_alpha_get(cw->obj); EINA_LIST_FOREACH(cw->obj_mirror, ll, o) { //evas_object_image_border_set(o, bx, by, bxx, byy); //evas_object_image_border_center_fill_set(o, EVAS_BORDER_FILL_SOLID); evas_object_image_pixels_dirty_set(o, dirty); +evas_object_image_alpha_set(obj, alpha); if (!dirty) evas_object_image_data_set(o, NULL); evas_object_image_size_set(o, w, h); --
[EGIT] [core/enlightenment] enlightenment-0.22 15/30: e thumb - be consistent and use safe run for restarting thumbnailer
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ff17200996ce18a741fc41195d2187865b000b40 commit ff17200996ce18a741fc41195d2187865b000b40 Author: Carsten Haitzler (Rasterman) Date: Thu Apr 12 20:56:46 2018 +0900 e thumb - be consistent and use safe run for restarting thumbnailer fix inconsistency in using ecore_exe_run and the e_util wrapper... @fix --- src/bin/e_thumb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_thumb.c b/src/bin/e_thumb.c index 2fed2c9b8..a22ed3e0d 100644 --- a/src/bin/e_thumb.c +++ b/src/bin/e_thumb.c @@ -516,7 +516,7 @@ _e_thumb_cb_exe_event_del(void *data EINA_UNUSED, int type EINA_UNUSED, void *ev snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_thumb --nice=%d", e_prefix_lib_get(), e_config->thumb_nice); - exe_thumb = ecore_exe_run(buf, NULL); + exe_thumb = e_util_exe_safe_run(buf, NULL); _thumbnailers_exe = eina_list_append(_thumbnailers_exe, exe_thumb); } } --
[EGIT] [core/enlightenment] enlightenment-0.22 11/30: efm - fill in some media icon blanks which lead to generic icons
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=8b129bab79a57ec25583495948c61896bca7bee3 commit 8b129bab79a57ec25583495948c61896bca7bee3 Author: Carsten Haitzler (Rasterman) Date: Tue Apr 10 17:50:57 2018 +0900 efm - fill in some media icon blanks which lead to generic icons i found a thumbdrive i got a generic "whatever" file icon for... because efm media type matching didnt find an icon name for it. fix that. --- src/bin/e_fm_device.c | 5 + 1 file changed, 5 insertions(+) diff --git a/src/bin/e_fm_device.c b/src/bin/e_fm_device.c index ed9d1b656..d3af98ace 100644 --- a/src/bin/e_fm_device.c +++ b/src/bin/e_fm_device.c @@ -100,12 +100,17 @@ _e_fm2_device_volume_setup(E_Volume *v) icon = "media-floppy"; else if (!strcmp(v->storage->drive_type, "tape")) icon = "media-tape"; +else if (!strcmp(v->storage->drive_type, "thumb")) + // XXX: maybe a spcial type? + icon = "drive-removable-media"; else if (!strcmp(v->storage->drive_type, "compact_flash") || !strcmp(v->storage->drive_type, "memory_stick") || !strcmp(v->storage->drive_type, "smart_media") || !strcmp(v->storage->drive_type, "sd_mmc") || !strncmp(v->storage->drive_type, "flash", 5)) icon = "media-flash"; +else // XXX: fallback if we don't know + icon = "media-floppy"; } if (icon) eina_stringshare_replace(>icon, icon); --
[EGIT] [core/enlightenment] enlightenment-0.22 28/30: e wl - fix e pixmap tracking to remove from both aliases and pixmaps
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=600a739f9134eb3541e19c2e4c35a86848c7b8eb commit 600a739f9134eb3541e19c2e4c35a86848c7b8eb Author: Carsten Haitzler (Rasterman) Date: Thu Jul 19 01:58:00 2018 +0900 e wl - fix e pixmap tracking to remove from both aliases and pixmaps on pixmap free only the pixmaps entry was deleted not the pixmaps hash one. this led to lookup of stale pixmaps in the aliases hash... and then a crash. also use the correct local type with the correct byte order as well. this has probably been an issue for a while but now internal windows should work much better without crashes. @fix --- src/bin/e_pixmap.c | 23 ++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/bin/e_pixmap.c b/src/bin/e_pixmap.c index 346b2726a..4c667757c 100644 --- a/src/bin/e_pixmap.c +++ b/src/bin/e_pixmap.c @@ -297,7 +297,28 @@ e_pixmap_free(E_Pixmap *cp) if (!cp) return 0; if (--cp->refcount) return cp->refcount; e_pixmap_image_clear(cp, EINA_FALSE); - eina_hash_del_by_key(pixmaps[cp->type], >win); + switch (cp->type) + { + case E_PIXMAP_TYPE_X: +#ifndef HAVE_WAYLAND_ONLY + { + Ecore_X_Window xwin = cp->win; + eina_hash_del_by_key(pixmaps[cp->type], ); + eina_hash_del_by_key(aliases[cp->type], ); + } +#endif +break; + case E_PIXMAP_TYPE_WL: +#ifdef HAVE_WAYLAND + { + int64_t id = cp->win; + eina_hash_del_by_key(pixmaps[cp->type], ); + eina_hash_del_by_key(aliases[cp->type], ); + } +#endif +break; + default: break; + } return 0; } --
[EGIT] [core/enlightenment] enlightenment-0.22 23/30: mixer - fix exe handler del and handle to stop crashes after mixer run
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=57b2988e7a0fd82993a35ce023aa00b13940206f commit 57b2988e7a0fd82993a35ce023aa00b13940206f Author: Carsten Haitzler (Rasterman) Date: Sat May 19 00:58:03 2018 +0900 mixer - fix exe handler del and handle to stop crashes after mixer run running emixer from the mixer module popup was resulting in crashes. it was this exe event handler handle and leaving a dangling garbage ptr after it was deleted. @fix --- src/modules/mixer/e_mod_main.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/mixer/e_mod_main.c b/src/modules/mixer/e_mod_main.c index d2ae88b3a..fe8988c8a 100644 --- a/src/modules/mixer/e_mod_main.c +++ b/src/modules/mixer/e_mod_main.c @@ -432,8 +432,10 @@ _emixer_del_cb(void *data EINA_UNUSED, int type EINA_UNUSED, { mixer_context->emixer = NULL; if (mixer_context->emix_event_handler) - ecore_event_handler_del(mixer_context->emix_event_handler); - + { +ecore_event_handler_del(mixer_context->emix_event_handler); +mixer_context->emix_event_handler = NULL; + } return EINA_TRUE; } --
[EGIT] [core/enlightenment] enlightenment-0.22 30/30: enlightenment: Ensure we have a valid menu comp object before calling
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5af9485c4f5d4aa97def122d651bc6d29fb0b149 commit 5af9485c4f5d4aa97def122d651bc6d29fb0b149 Author: Chris Michael Date: Wed Jul 25 14:59:36 2018 -0400 enlightenment: Ensure we have a valid menu comp object before calling Summary: evas functions This fixes an issue when quickly mousing through menus can cause a segfault in Enlightenment due to menu->comp_object being NULL ref T7030 Reviewers: zmike Reviewed By: zmike Subscribers: cedric Tags: #efl, #enlightenment22 Maniphest Tasks: T7030 Differential Revision: https://phab.enlightenment.org/D6641 --- src/bin/e_menu.c | 10 +++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index bbcb0a10f..7d2c458b4 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -1175,10 +1175,14 @@ e_menu_idler_before(void) /* phase 4. de-activate... */ EINA_LIST_REVERSE_FOREACH(_e_active_menus, l, m) { -if ((!m->active) && (!evas_object_visible_get(m->comp_object))) +if (!m->active) { - _e_menu_unrealize(m); - removals = eina_list_append(removals, m); + if ((m->realized) && + (!evas_object_visible_get(m->comp_object))) + { + _e_menu_unrealize(m); + removals = eina_list_append(removals, m); + } } } EINA_LIST_FREE(removals, m) --
[EGIT] [core/enlightenment] enlightenment-0.22 16/30: compile again after efl change interface names...
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5155856566df843d0dfa997ee2456f73ac5d226b commit 5155856566df843d0dfa997ee2456f73ac5d226b Author: Carsten Haitzler (Rasterman) Date: Wed Apr 25 14:37:49 2018 +0900 compile again after efl change interface names... --- src/modules/wl_drm/e_mod_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/wl_drm/e_mod_main.c b/src/modules/wl_drm/e_mod_main.c index 51ea01280..68d6593f9 100644 --- a/src/modules/wl_drm/e_mod_main.c +++ b/src/modules/wl_drm/e_mod_main.c @@ -780,7 +780,7 @@ _drm_device_del(void *data EINA_UNUSED, const Efl_Event *event) } EFL_CALLBACKS_ARRAY_DEFINE(_drm_device_del_cb, - { EFL_CANVAS_EVENT_DEVICE_REMOVED, _drm_device_del }); + { EFL_CANVAS_SCENE_EVENT_DEVICE_REMOVED, _drm_device_del }); E_API void * e_modapi_init(E_Module *m) --
[EGIT] [core/enlightenment] enlightenment-0.22 19/30: move config/ to data/config/
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5cb6e1e8fafca16f27a3311c36a917cf88b4032d commit 5cb6e1e8fafca16f27a3311c36a917cf88b4032d Author: Mike Blumenkrantz Date: Tue May 15 15:30:14 2018 +0200 move config/ to data/config/ Summary: this is part of the datadir distribution, it should not be in a different directory than the rest of the datadir distribution the gnu coding standards (https://www.gnu.org/prep/standards/html_node/Directory-Variables.html) define 'datadir' as: The directory for installing idiosyncratic read-only architecture-independent data files for this program. This is usually the same place as ‘datarootdir’, but we use the two separate variables so that you can move these program-specific files without altering the location for Info files, man pages, etc. This should normally be /usr/local/share, but write it as $(datarootdir). (If you are using Autoconf, write it as ‘@datadir@’.) The definition of ‘datadir’ is the same for all packages, so you should install your data in a subdirectory thereof. Most packages install their data under $(datadir)/package-name/. while this text has no clear requirement or suggestion for a corresponding repository layout, projects typically employ a certain consistency in their repository layout both for ease of maintenance and ease of learning for new contributors. this project has both a data/ directory, which contains the datadir distribution, as well as the config/ directory, which also contains the datadir distribution. this complicates matters both for active maintainers/developers who must remember that the repository and build tree layouts have this exception, and for new contributors who will initially be confused by this exception other well-organized open source projects, such as wayland, have chosen to not use a data/ directory. these projects have the datadir distribution in the base directory of the repositor, which is a fine practice as it maintains consistency for the project since all the files for the datadir distribution are in the same directory. by applying this patch, the project will move towards a more easily readable and learnable layout. current and future developers will no longer need to wonder why this directory is outside of the data/ directory, and anyone attempting to reference these files from the source/build trees will be able to do so more easily ref D6013 Reviewers: cedric, raster, bu5hm4n Reviewed By: raster Subscribers: devilhorns Tags: #enlightenment-git Differential Revision: https://phab.enlightenment.org/D6154 --- {config => data/config}/default/e.src | 0 {config => data/config}/default/e_bindings.src | 0 {config => data/config}/default/enlightenment-default.png | Bin {config => data/config}/default/meson.build | 0 {config => data/config}/default/profile.desktop | 0 {config => data/config}/meson.build | 0 {config => data/config}/mobile/e.src| 0 {config => data/config}/mobile/e_bindings.src | 0 {config => data/config}/mobile/enlightenment-mobile.png | Bin {config => data/config}/mobile/meson.build | 0 {config => data/config}/mobile/module.battery.src | 0 {config => data/config}/mobile/module.conf.src | 0 {config => data/config}/mobile/profile.desktop | 0 {config => data/config}/profile.src | 0 {config => data/config}/standard/e.src | 0 {config => data/config}/standard/e_bindings.src | 0 {config => data/config}/standard/enlightenment-standard.png | Bin {config => data/config}/standard/meson.build| 0 {config => data/config}/standard/module.battery.src | 0 {config => data/config}/standard/module.conf.src| 0 {config => data/config}/standard/module.cpufreq.src | 0 {config => data/config}/standard/module.fileman.src | 0 {config => data/config}/standard/module.ibar.src| 0 {config => data/config}/standard/module.ibox.src| 0 {config => data/config}/standard/module.pager.src | 0 {config => data/config}/standard/module.temperature.src | 0 {config => data/config}/standard/profile.desktop| 0 {config => data/config}/tiling/e.src| 0 {config => data/config}/tiling/e_bindings.src | 0 {config => data/config}/tiling/enlightenment-tiling.png | Bin {config => data/config}/tiling/meson.build | 0 {config =>
[EGIT] [core/enlightenment] enlightenment-0.22 09/30: edge flip while dragging with alt - fix to work again
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5e07f6815c989f44da85cc9bbc8a5d3272844a38 commit 5e07f6815c989f44da85cc9bbc8a5d3272844a38 Author: Carsten Haitzler (Rasterman) Date: Sun Apr 1 14:29:38 2018 +0900 edge flip while dragging with alt - fix to work again this fixes when you drag a wqindow to screen edge and it flips if you use alt+drag as opposed to just dragging titlebar around without alt. it fixes it by updating your config to allow "any modifier" for edge flips which is actually correct. @fix --- src/bin/e_config.c | 20 src/bin/e_config.h | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 5b7d9ddb0..1feb31bbc 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -1505,6 +1505,26 @@ e_config_load(void) if (!elm_config_profile_exists(_e_config_profile)) elm_config_profile_save(_e_config_profile); } + CONFIG_VERSION_CHECK(25) +{ + Eina_List *l; + E_Config_Binding_Edge *ebe; + + EINA_LIST_FOREACH(e_bindings->edge_bindings, l, ebe) + { +if ((ebe->context == E_BINDING_CONTEXT_ZONE) && +(ebe->modifiers == 0) && +(ebe->edge >= 1) && (ebe->edge <= 4) && +(!ebe->any_mod) && +(ebe->action) && +(!strcmp(ebe->action, "desk_flip_in_direction"))) + { + ebe->any_mod = 1; + } + } + CONFIG_VERSION_UPDATE_INFO(25); + e_config_save_queue(); +} } elm_config_profile_set(_e_config_profile); if (!e_config->remember_internal_fm_windows) diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 3ed61b004..a4af30c5c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -46,7 +46,7 @@ typedef enum /* increment this whenever a new set of config values are added but the users * config doesn't need to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 24 +#define E_CONFIG_FILE_GENERATION 25 #define E_CONFIG_FILE_VERSION((E_CONFIG_FILE_EPOCH * 100) + E_CONFIG_FILE_GENERATION) #define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS! --
[EGIT] [core/enlightenment] enlightenment-0.22 26/30: e randr - fix crash when no zones found
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=5347935700586f05a0a5558cfbf47c13c4212c6c commit 5347935700586f05a0a5558cfbf47c13c4212c6c Author: Carsten Haitzler (Rasterman) Date: Wed Jul 18 02:19:12 2018 +0900 e randr - fix crash when no zones found --- src/bin/e_randr2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bin/e_randr2.c b/src/bin/e_randr2.c index fc0375a8c..1f1f490a7 100644 --- a/src/bin/e_randr2.c +++ b/src/bin/e_randr2.c @@ -432,7 +432,8 @@ _config_update(E_Randr2 *r, E_Config_Randr2 *cfg, Eina_Bool update_only) { /* find right-most screen */ E_Zone *zone = eina_list_last_data_get(e_comp->zones); - eina_stringshare_replace(>rel_to, zone->randr2_id); + if (zone) + eina_stringshare_replace(>rel_to, zone->randr2_id); } cs->rel_align = 0; } --
[EGIT] [core/enlightenment] enlightenment-0.22 24/30: Battery: fix the battery status when some battery devices are not valid
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=74c372c0ffbaa1f2ba019eae9ada186989002f00 commit 74c372c0ffbaa1f2ba019eae9ada186989002f00 Author: Daniel Zaoui Date: Tue Jun 5 00:19:59 2018 +0300 Battery: fix the battery status when some battery devices are not valid It happens that some devices are considered as batteries, even if they cannot be charged or used as a power supply for the laptop. The ELAN device deals with the touchpad and is a "battery". When looking at the udev info, it appears that there is no technology present as well as the basic battery info (energy levels). P: /devices/pci:00/:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN24CC:00/0018:04F3:24CC.0003/power_supply/hid-0018:04F3:24CC.0003-battery E: DEVPATH=/devices/pci:00/:00:15.0/i2c_designware.0/i2c-0/i2c-ELAN24CC:00/0018:04F3:24CC.0003/power_supply/hid-0018:04F3:24CC.0003-battery E: POWER_SUPPLY_CAPACITY=1 E: POWER_SUPPLY_MODEL_NAME=ELAN24CC:00 04F3:24CC E: POWER_SUPPLY_NAME=hid-0018:04F3:24CC.0003-battery E: POWER_SUPPLY_ONLINE=1 E: POWER_SUPPLY_PRESENT=1 E: POWER_SUPPLY_SCOPE=Device E: POWER_SUPPLY_STATUS=Discharging E: SUBSYSTEM=power_supply The issue with that kind of devices is that it confuses the battery gadget. Since two batteries are present, the total capacity is divided by 2, resulting in the gadget displaying only 50% when the battery is fully charged. To avoid this, we check that the battery technology is known. @fix --- src/modules/battery/e_mod_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c index 24af2d8bc..691889cda 100644 --- a/src/modules/battery/e_mod_main.c +++ b/src/modules/battery/e_mod_main.c @@ -299,7 +299,7 @@ _battery_device_update(void) EINA_LIST_FOREACH(device_batteries, l, bat) { -if (!bat->got_prop) +if ((!bat->got_prop) || (!bat->technology)) continue; have_battery = 1; batnum++; --
[EGIT] [core/enlightenment] enlightenment-0.22 07/30: e mouse bindings - fix wheel conflict check to check only dir 0
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=eb2bdeb4438fb4ea75114d9069e39ff961365c77 commit eb2bdeb4438fb4ea75114d9069e39ff961365c77 Author: Carsten Haitzler (Rasterman) Date: Wed Mar 28 18:23:20 2018 +0900 e mouse bindings - fix wheel conflict check to check only dir 0 allows ylou to bund extra wheels for desktop switching ... much better. no conflicts with signals :) --- src/modules/conf_bindings/e_int_config_mousebindings.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/conf_bindings/e_int_config_mousebindings.c b/src/modules/conf_bindings/e_int_config_mousebindings.c index 804a1def6..1d8ef595b 100644 --- a/src/modules/conf_bindings/e_int_config_mousebindings.c +++ b/src/modules/conf_bindings/e_int_config_mousebindings.c @@ -236,7 +236,9 @@ _basic_apply_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata EINA_LIST_FOREACH_SAFE(cfdata->binding.wheel, l, l2, bw) { -if ((!bw->modifiers) && ((bw->context == E_BINDING_CONTEXT_WINDOW) || (bw->context == E_BINDING_CONTEXT_ANY))) +if ((!bw->modifiers) && +(bw->direction == 0) && +((bw->context == E_BINDING_CONTEXT_WINDOW) || (bw->context == E_BINDING_CONTEXT_ANY))) { const char *msg = _("Unable to set a mouse wheel binding without modifiers" "on a window: conflict with existing edje signal bindings." --
[EGIT] [core/enlightenment] enlightenment-0.22 05/30: AUTHORS: use netstar's real name.
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=04c8ec9c397037541e6d669452258940a37b130b commit 04c8ec9c397037541e6d669452258940a37b130b Author: Al Poole Date: Thu Mar 22 15:38:43 2018 + AUTHORS: use netstar's real name. --- AUTHORS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AUTHORS b/AUTHORS index 6e7a9fe79..479cbb59a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -60,4 +60,4 @@ Luis de Bethencourt (luisbg) bu5hm4n (Marcel Hollerbach) simotek (Simon Lees) Derek Foreman -netstar (Al Poole) +netstar (Alastair Poole) --
[EGIT] [core/enlightenment] enlightenment-0.22 01/30: Remove useless pixels_dirty_set from mirror_pixels_get
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=34c28af7dc59e07fc81918ef994958db1b2019c3 commit 34c28af7dc59e07fc81918ef994958db1b2019c3 Author: Derek Foreman Date: Wed Mar 21 14:14:52 2018 -0500 Remove useless pixels_dirty_set from mirror_pixels_get This is implicit at the end of render. --- src/bin/e_comp_object.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index b141e3ce4..dce688289 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -949,7 +949,6 @@ _e_comp_object_mirror_pixels_get(void *data, Evas_Object *obj) evas_object_image_data_set(obj, e_pixmap_image_data_get(cw->ec->pixmap)); evas_object_image_alpha_set(obj, evas_object_image_alpha_get(cw->obj)); - evas_object_image_pixels_dirty_set(obj, EINA_FALSE); } / --
[EGIT] [core/enlightenment] enlightenment-0.22 21/30: meson - fix dir_sysconf to be under the prefix as it was not
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3cb88fe76aea2e73919d66344a24727a0d722ba0 commit 3cb88fe76aea2e73919d66344a24727a0d722ba0 Author: Carsten Haitzler (Rasterman) Date: Thu May 17 03:11:37 2018 +0900 meson - fix dir_sysconf to be under the prefix as it was not dir_sysconf was set to "etc". not even a /. this meant enlightenment_sys couldnt find/load sysactions.conf as it used a non-relocatable fixed location due to security (setuid root) reasons. --- meson.build | 4 1 file changed, 4 insertions(+) diff --git a/meson.build b/meson.build index a2c134ad6..4ea695a9e 100644 --- a/meson.build +++ b/meson.build @@ -47,6 +47,10 @@ dir_module_e = join_paths(dir_lib, proj, 'modules') dir_util_e= join_paths(dir_lib, proj, 'utils') dir_pc= join_paths(dir_data, 'pkgconfig') +if dir_sysconf == 'etc' + dir_sysconf = join_paths(dir_prefix, dir_sysconf) +endif + suid_exes = [] pkgconfig = import('pkgconfig') --
[EGIT] [core/enlightenment] enlightenment-0.22 04/30: Fix recent typo in mirror object alpha setting
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=768e64bd2f81556300859acc3bfc9c4c9adffb44 commit 768e64bd2f81556300859acc3bfc9c4c9adffb44 Author: Derek Foreman Date: Wed Mar 21 15:54:12 2018 -0500 Fix recent typo in mirror object alpha setting ref 6a04bfb0ffc0d49f64ee0fb26a4cad9cba11fe9f --- 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 b36be7a6a..6bab7d507 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -4067,7 +4067,7 @@ e_comp_object_dirty(Evas_Object *obj) //evas_object_image_border_set(o, bx, by, bxx, byy); //evas_object_image_border_center_fill_set(o, EVAS_BORDER_FILL_SOLID); evas_object_image_pixels_dirty_set(o, dirty); -evas_object_image_alpha_set(obj, alpha); +evas_object_image_alpha_set(o, alpha); if (!dirty) evas_object_image_data_set(o, NULL); evas_object_image_size_set(o, w, h); --
[EGIT] [core/efl] master 01/01: genlist: rework the focus model for performance
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0e462d5f5a2c65a25129683a0ded817c7de39902 commit 0e462d5f5a2c65a25129683a0ded817c7de39902 Author: Marcel Hollerbach Date: Thu Aug 2 09:42:06 2018 -0400 genlist: rework the focus model for performance Summary: the focus model before was more meant for simplicity and not for performance, this now is more made for performance. The performance boost is achived by not using composition anymore, but rather register realized items by hand. This keeps the amount of items bound to the size of the viewport. Additionally item realization that is followed by unrealization immediately is not resulting in focus calls. This solves the performance issue from T6580 in regards of focus. perf results after this: http://www.enlightenment.org/ss/e-5b61b50657f3c3.82619729.png Reviewers: ManMower, zmike Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6720 --- src/lib/elementary/elm_genlist.c| 99 ++--- src/lib/elementary/elm_genlist.eo | 3 +- src/lib/elementary/elm_widget_genlist.h | 1 + 3 files changed, 80 insertions(+), 23 deletions(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index ced92b59f2..9523017b35 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -400,7 +400,8 @@ _item_content_realize(Elm_Gen_Item *it, Evas_Object *target, Eina_List **contents, const char *src, - const char *parts) + const char *parts, + Eina_Bool calc) { Evas_Object *content; char buf[256]; @@ -469,7 +470,8 @@ _item_content_realize(Elm_Gen_Item *it, if (elm_widget_is(content)) { - _elm_widget_full_eval(content); + if (!calc) +_elm_widget_full_eval(content); } } *contents = eina_list_append(*contents, content); @@ -739,8 +741,19 @@ _item_block_unrealize(Item_Block *itb) } if (!dragging) { +Eina_List *n; + itb->realized = EINA_FALSE; itb->want_unrealize = EINA_TRUE; + +efl_ui_focus_manager_calc_unregister(itb->sd->obj, itb->adapter); +efl_del(itb->adapter); +itb->adapter = NULL; + +EINA_LIST_FOREACH(itb->items, n, it) + { +efl_ui_focus_manager_calc_unregister(itb->sd->obj, EO_OBJ(it)); + } } else itb->want_unrealize = EINA_FALSE; @@ -1339,11 +1352,11 @@ _elm_genlist_item_state_update(Elm_Gen_Item *it) } static void -_view_inflate(Evas_Object *view, Elm_Gen_Item *it, Eina_List **sources, Eina_List **contents) +_view_inflate(Evas_Object *view, Elm_Gen_Item *it, Eina_List **sources, Eina_List **contents, Eina_Bool calc) { if (!view) return; if (sources) _item_text_realize(it, view, sources, NULL); - if (contents) _item_content_realize(it, view, contents, "contents", NULL); + if (contents) _item_content_realize(it, view, contents, "contents", NULL, calc); _item_state_realize(it, view, NULL); } @@ -1432,7 +1445,7 @@ _decorate_all_item_realize(Elm_Gen_Item *it, if (it->flipped) edje_object_signal_emit (it->deco_all_view, SIGNAL_FLIP_ENABLED, "elm"); - _view_inflate(it->deco_all_view, it, NULL, &(it->item->deco_all_contents)); + _view_inflate(it->deco_all_view, it, NULL, &(it->item->deco_all_contents), EINA_FALSE); edje_object_part_swallow (it->deco_all_view, "elm.swallow.decorate.content", VIEW(it)); @@ -1898,7 +1911,7 @@ _item_realize(Elm_Gen_Item *it, const int index, Eina_Bool calc) ERR_ABORT("If you see this error, please notify us and we" "will fix it"); -_view_inflate(VIEW(it), it, >texts, >contents); +_view_inflate(VIEW(it), it, >texts, >contents, calc); if (it->has_contents != (!!it->contents)) it->item->mincalcd = EINA_FALSE; it->has_contents = !!it->contents; @@ -1906,7 +1919,7 @@ _item_realize(Elm_Gen_Item *it, const int index, Eina_Bool calc) { edje_object_signal_emit(VIEW(it), SIGNAL_FLIP_ENABLED, "elm"); _item_content_realize(it, VIEW(it), >item->flip_contents, - "flips", NULL); + "flips", NULL, EINA_FALSE); } /* access: unregister item which have no text and content */ @@ -2496,13 +2509,43 @@ _item_block_position(Item_Block *itb, const int blk_idx) evas_event_thaw_eval(evas_object_evas_get((itb->sd)->obj)); } +static inline void +_flush_block_order(Elm_Genlist_Data *sd) +{ +
[EGIT] [core/efl] master 01/01: elementary image: apply lazy calculation and guarantee retained method.
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=868e3308b12c6279a9ea46d3a5670375251c796e commit 868e3308b12c6279a9ea46d3a5670375251c796e Author: Hermet Park Date: Thu Aug 2 09:22:59 2018 -0400 elementary image: apply lazy calculation and guarantee retained method. Summary: Image couldn't gurantee retained concept status. This patch change to setting up image object on the request time, recovering image status, removing unencessary jobs. Reviewers: #committers Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6726 --- src/lib/elementary/efl_ui_image.c| 104 +++ src/lib/elementary/efl_ui_widget_image.h | 2 + 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 9d83ce37f8..ca1dbb0ec5 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -77,6 +77,19 @@ _prev_img_del(Efl_Ui_Image_Data *sd) } static void +_recover_status(Eo *obj, Efl_Ui_Image_Data *sd) +{ + int r, g, b, a; + Evas_Object *pclip = efl_canvas_object_clip_get(obj); + if (pclip) efl_canvas_object_clip_set(sd->img, pclip); + + efl_gfx_color_get(obj, , , , ); + efl_gfx_color_set(sd->img, r, g, b, a); + + efl_gfx_entity_visible_set(sd->img, sd->show); +} + +static void _on_image_preloaded(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, @@ -143,7 +156,6 @@ _img_new(Evas_Object *obj) evas_object_image_scale_hint_set(img, EVAS_IMAGE_SCALE_HINT_STATIC); evas_object_event_callback_add (img, EVAS_CALLBACK_IMAGE_PRELOADED, _on_image_preloaded, sd); - evas_object_smart_member_add(img, obj); elm_widget_sub_object_add(obj, img); @@ -170,7 +182,6 @@ _image_sizing_eval(Efl_Ui_Image_Data *sd, Evas_Object *img) //1. Get the original image size (iw x ih) evas_object_image_size_get(img, , ); - iw = ((double)iw) * sd->scale; ih = ((double)ih) * sd->scale; @@ -275,14 +286,6 @@ done: evas_object_resize(sd->hit_rect, w, h); } -static void -_efl_ui_image_internal_sizing_eval(Evas_Object *obj EINA_UNUSED, Efl_Ui_Image_Data *sd) -{ - if (!sd->img) return; - _image_sizing_eval(sd, sd->img); - if (sd->prev_img) _image_sizing_eval(sd, sd->prev_img); -} - static inline void _async_open_data_free(Async_Open_Data *data) { @@ -472,27 +475,23 @@ _efl_ui_image_edje_file_set(Evas_Object *obj, const Eina_File *f, const char *group) { - Evas_Object *pclip; - EFL_UI_IMAGE_DATA_GET(obj, sd); _prev_img_del(sd); if (!sd->edje) { -pclip = evas_object_clip_get(sd->img); evas_object_del(sd->img); /* Edje object instead */ sd->img = edje_object_add(evas_object_evas_get(obj)); +_recover_status(obj, sd); +sd->edje = EINA_TRUE; evas_object_smart_member_add(sd->img, obj); -if (sd->show) evas_object_show(sd->img); -evas_object_clip_set(sd->img, pclip); } _async_cancel(sd); - sd->edje = EINA_TRUE; if (!sd->async_enable) { if (f) @@ -572,9 +571,6 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv) evas_object_event_callback_add (priv->hit_rect, EVAS_CALLBACK_MOUSE_UP, _on_mouse_up, obj); - /* starts as an Evas image. may switch to an Edje object */ - priv->img = _img_new(obj); - priv->smooth = EINA_TRUE; priv->fill_inside = EINA_TRUE; priv->aspect_fixed = EINA_TRUE; @@ -586,8 +582,6 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv) priv->align_y = 0.5; elm_widget_can_focus_set(obj, EINA_FALSE); - - _efl_ui_image_sizing_eval(obj); } EOLIAN static void @@ -596,6 +590,7 @@ _efl_ui_image_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Data *sd) if (elm_widget_is_legacy(obj)) efl_event_callback_del(obj, EFL_GFX_ENTITY_EVENT_CHANGE_SIZE_HINTS, _on_size_hints_changed, sd); + ecore_job_del(sd->sizing_job); ecore_timer_del(sd->anim_timer); evas_object_del(sd->img); _prev_img_del(sd); @@ -657,7 +652,7 @@ _efl_ui_image_show(Eo *obj, Efl_Ui_Image_Data *sd) efl_gfx_entity_visible_set(efl_super(obj, MY_CLASS), EINA_TRUE); if (sd->preload_status == EFL_UI_IMAGE_PRELOADING) return; - efl_gfx_entity_visible_set(sd->img, EINA_TRUE); + if (sd->img) efl_gfx_entity_visible_set(sd->img, EINA_TRUE); _prev_img_del(sd); } @@ -666,7 +661,7 @@ _efl_ui_image_hide(Eo *obj, Efl_Ui_Image_Data *sd) { sd->show = EINA_FALSE; efl_gfx_entity_visible_set(efl_super(obj, MY_CLASS), EINA_FALSE); - efl_gfx_entity_visible_set(sd->img, EINA_FALSE); + if (sd->img)
[EGIT] [core/efl] master 01/02: Efl.Canvas.Group: use desired function
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9666f288ae606f181f676ad1768864d830d29ee3 commit 9666f288ae606f181f676ad1768864d830d29ee3 Author: Shinwoo Kim Date: Thu Aug 2 09:10:41 2018 -0400 Efl.Canvas.Group: use desired function Summary: If a smart class overrides Evas_Smart_Class.move as below, then original behavior must not be used for the smart class. Evas_Smart_Class sc = EVAS_SMART_CLASS_INIT_NAME_VERSION("MyClass"); evas_object_smart_clipped_smart_set(); sc.move = But current implementation makes original behavior work. So before using the original method, this patch is checking if the original method is changed or not. Reviewers: zmike, devilhorns Reviewed By: zmike Subscribers: woohyun, jypark, cedric, raster, jpeg, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6468 --- src/lib/evas/canvas/evas_object_smart.c | 9 - src/lib/evas/canvas/evas_object_smart_clipped.c | 2 +- src/lib/evas/include/evas_private.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c index 37c8868479..6223792cae 100644 --- a/src/lib/evas/canvas/evas_object_smart.c +++ b/src/lib/evas/canvas/evas_object_smart.c @@ -888,10 +888,17 @@ _efl_canvas_group_efl_gfx_entity_visible_set(Eo *eo_obj, Evas_Smart_Data *o, Ein EOLIAN static void _efl_canvas_group_efl_gfx_entity_position_set(Eo *eo_obj, Evas_Smart_Data *o, Eina_Position2D pos) { + Eina_Bool is_overridden; + Evas_Object_Protected_Data *obj = EVAS_OBJ_GET_OR_RETURN(eo_obj); + if (_evas_object_intercept_call(eo_obj, EVAS_OBJECT_INTERCEPT_CB_MOVE, 0, pos.x, pos.y)) return; - if (o->clipped) + is_overridden = (obj->is_smart && obj->smart.smart && +obj->smart.smart->smart_class->move != +(void *)evas_object_smart_clipped_smart_move); + + if (o->clipped && !is_overridden) _evas_object_smart_clipped_smart_move_internal(eo_obj, pos.x, pos.y); efl_gfx_entity_position_set(efl_super(eo_obj, MY_CLASS), pos); } diff --git a/src/lib/evas/canvas/evas_object_smart_clipped.c b/src/lib/evas/canvas/evas_object_smart_clipped.c index 60cdc78e7d..a904479c01 100644 --- a/src/lib/evas/canvas/evas_object_smart_clipped.c +++ b/src/lib/evas/canvas/evas_object_smart_clipped.c @@ -33,7 +33,7 @@ evas_object_smart_clipped_smart_del(Evas_Object *eo_obj) cso->clipper = NULL; } -static void +void evas_object_smart_clipped_smart_move(Evas_Object *eo_obj, Evas_Coord x, Evas_Coord y) { if (!efl_isa(eo_obj, EFL_CANVAS_GROUP_CLASS)) return; diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index a63194df3f..b149c0b19e 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -1633,6 +1633,7 @@ const Eina_List *evas_object_event_grabber_members_list(const Eo *eo_obj); const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj); void _efl_canvas_group_group_members_all_del(Evas_Object *eo_obj); void _evas_object_smart_clipped_init(Evas_Object *eo_obj); +void evas_object_smart_clipped_smart_move(Evas_Object *eo_obj, Evas_Coord x, Evas_Coord y); void _evas_object_smart_clipped_smart_move_internal(Evas_Object *eo_obj, Evas_Coord x, Evas_Coord y); void evas_call_smarts_calculate(Evas *e); void evas_object_smart_bounding_box_update(Evas_Object_Protected_Data *obj); --
[EGIT] [core/efl] master 02/02: ecore: fix that timers are not called in the order they were registered.
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a92274f81184cd06b398a0930110f2a4bee49e76 commit a92274f81184cd06b398a0930110f2a4bee49e76 Author: Hosang Kim Date: Thu Aug 2 09:14:15 2018 -0400 ecore: fix that timers are not called in the order they were registered. Summary: Timers are not called in the order they were registered. Because when current timer is deleted, getting next timer is called twice. Test Plan: Timer1 expired after 0.001 seconds. Timer3 expired after 0.001 seconds. Timer5 expired after 0.001 seconds. Timer7 expired after 0.001 seconds. Timer2 expired after 0.001 seconds. Timer6 expired after 0.001 seconds. Timer4 expired after 0.001 seconds. Timer8 expired after 0.001 seconds. Timer1 expired after 0.001 seconds. Timer2 expired after 0.001 seconds. Timer3 expired after 0.001 seconds. Timer4 expired after 0.001 seconds. Timer5 expired after 0.001 seconds. Timer6 expired after 0.001 seconds. Timer7 expired after 0.001 seconds. Timer8 expired after 0.001 seconds.| {F3268233} Reviewers: Hermet, Jaehyun_Cho, zmike, SanghyeonLee Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl_tests Differential Revision: https://phab.enlightenment.org/D6700 --- src/lib/ecore/ecore_timer.c| 13 +++-- src/tests/ecore/ecore_test_timer.c | 37 + 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/lib/ecore/ecore_timer.c b/src/lib/ecore/ecore_timer.c index 1ebce1f3df..776848875c 100644 --- a/src/lib/ecore/ecore_timer.c +++ b/src/lib/ecore/ecore_timer.c @@ -461,11 +461,20 @@ _efl_loop_timer_util_delay(Efl_Loop_Timer_Data *timer, double add) EOLIAN static void _efl_loop_timer_efl_object_parent_set(Eo *obj, Efl_Loop_Timer_Data *pd, Efl_Object *parent) { + Eina_Inlist *first; + efl_parent_set(efl_super(obj, EFL_LOOP_TIMER_CLASS), parent); if ((!pd->constructed) || (!pd->finalized)) return; - _efl_loop_timer_util_loop_clear(pd); + // Remove the timer from all possible pending list + first = eina_inlist_first(EINA_INLIST_GET(pd)); + if (first == pd->loop_data->timers) + pd->loop_data->timers = eina_inlist_remove + (pd->loop_data->timers, EINA_INLIST_GET(pd)); + else if (first == pd->loop_data->suspended) + pd->loop_data->suspended = eina_inlist_remove + (pd->loop_data->suspended, EINA_INLIST_GET(pd)); if (efl_invalidated_get(obj)) return; @@ -555,7 +564,7 @@ _efl_loop_timer_next_get(Eo *obj, Efl_Loop_Data *pd) static inline void _efl_loop_timer_reschedule(Efl_Loop_Timer_Data *timer, double when) { - if (timer->frozen) return; + if (timer->frozen || efl_invalidated_get(timer->object)) return; if (timer->loop_data && (EINA_INLIST_GET(timer)->next || EINA_INLIST_GET(timer)->prev)) diff --git a/src/tests/ecore/ecore_test_timer.c b/src/tests/ecore/ecore_test_timer.c index 7b41b8bc1b..222c4151c5 100644 --- a/src/tests/ecore/ecore_test_timer.c +++ b/src/tests/ecore/ecore_test_timer.c @@ -252,10 +252,47 @@ EFL_START_TEST(ecore_test_ecore_main_loop_timer) } EFL_END_TEST +static int count = 0; + +static Eina_Bool +_timer_cb(void *data) +{ + count++; + int num = (intptr_t) data; + fail_if (num != count, "Error timer is called out of order"); + if (count == 8) ecore_main_loop_quit(); + return ECORE_CALLBACK_CANCEL; +} + +EFL_START_TEST(ecore_test_timer_in_order) +{ + Ecore_Timer *timer; + timer = ecore_timer_add(0.001, _timer_cb, (void *) 1); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 2); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 3); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 4); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 5); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 6); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 7); + fail_if(timer == NULL); + timer = ecore_timer_add(0.001, _timer_cb, (void *) 8); + fail_if(timer == NULL); + + ecore_main_loop_begin(); +} +EFL_END_TEST + void ecore_test_timer(TCase *tc) { tcase_add_test(tc, ecore_test_timers); tcase_add_test(tc, ecore_test_timer_inside_call); tcase_add_test(tc, ecore_test_timer_valid_callbackfunc); tcase_add_test(tc, ecore_test_ecore_main_loop_timer); + tcase_add_test(tc, ecore_test_timer_in_order); } --
[EGIT] [core/efl] master 01/01: elementary bg: fix to guarantee compatibility.
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=24f7285c391056b29dbbd506884fd6579fae3768 commit 24f7285c391056b29dbbd506884fd6579fae3768 Author: Hermet Park Date: Thu Aug 2 09:08:43 2018 -0400 elementary bg: fix to guarantee compatibility. Summary: This is additional fix to b9b209f60f040d0afbccc1db0c96c8e36d14e682. Reviewers: #committers, zmike Reviewed By: #committers, zmike Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision: https://phab.enlightenment.org/D6727 --- src/lib/elementary/efl_ui_bg_widget.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_bg_widget.c b/src/lib/elementary/efl_ui_bg_widget.c index 8662516ad2..cd05d060a7 100644 --- a/src/lib/elementary/efl_ui_bg_widget.c +++ b/src/lib/elementary/efl_ui_bg_widget.c @@ -152,14 +152,14 @@ elm_bg_color_set(Evas_Object *obj, int b) { int a = 255; - EFL_UI_BG_WIDGET_CHECK(obj); + EFL_UI_BG_WIDGET_DATA_GET_OR_RETURN(obj, sd); // reset color if ((r == -1) && (g == -1) && (b == -1)) { r = g = b = a = 0; } - efl_gfx_color_set(obj, r, g, b, a); + efl_gfx_color_set(sd->rect, r, g, b, a); } EOLIAN static void --
[EGIT] [core/efl] master 01/01: elm/genlist: remove conditional in _calc_job for verifying show_item code
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1a75537ab8cb56f205632290a89fe2d89f4646d4 commit 1a75537ab8cb56f205632290a89fe2d89f4646d4 Author: Mike Blumenkrantz Date: Wed Jun 27 16:53:55 2018 -0400 elm/genlist: remove conditional in _calc_job for verifying show_item code I think at some point in the past this was necessary to avoid weird show mechanics, but now things have changed and it's best to always attempt to scroll and let the scroller internals figure things out this resolves the case where attempting to scroll to an item during a genlist's calc (ie. the item was not present in a full layout calc) would fail to scroll to the item if the scroll method was TOP and the item was too close to the bottom of the list fix T6368 @fix Differential Revision: https://phab.enlightenment.org/D6466 --- src/lib/elementary/elm_genlist.c | 28 ++-- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index d9525d9449..ced92b59f2 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -764,11 +764,10 @@ _calc_job(void *data) { int in = 0; Item_Block *itb, *chb = NULL; - Evas_Coord pan_w = 0, pan_h = 0; ELM_GENLIST_DATA_GET(data, sd); Eina_Bool minw_change = EINA_FALSE; Eina_Bool did_must_recalc = EINA_FALSE; - Evas_Coord minw = -1, minh = 0, y = 0, ow, dy = 0, vw = 0; + Evas_Coord minw = -1, minh = 0, y = 0, ow = 0, vw = 0; evas_object_geometry_get(sd->pan_obj, NULL, NULL, , >h); if (sd->mode == ELM_LIST_COMPRESS) @@ -880,34 +879,11 @@ _calc_job(void *data) if (!sd->show_item) sd->check_scroll = EINA_FALSE; if (sd->check_scroll) { -elm_obj_pan_content_size_get(sd->pan_obj, _w, _h); if (EINA_INLIST_GET(sd->show_item) == sd->items->last) sd->scroll_to_type = ELM_GENLIST_ITEM_SCROLLTO_IN; -switch (sd->scroll_to_type) - { - case ELM_GENLIST_ITEM_SCROLLTO_TOP: - dy = sd->h; - break; - - case ELM_GENLIST_ITEM_SCROLLTO_MIDDLE: - dy = sd->h / 2; - break; - - case ELM_GENLIST_ITEM_SCROLLTO_IN: - default: - dy = 0; - break; - } if ((sd->show_item) && (sd->show_item->item->block)) - { - if ((pan_w > (sd->show_item->x + sd->show_item->item->block->x)) - && (pan_h > (sd->show_item->y + sd->show_item->item->block->y - + dy))) - { - _item_scroll(sd); - } - } + _item_scroll(sd); } sd->calc_job = NULL; --
[EGIT] [core/efl] master 01/01: evas_events: Fix to set mouse_in state to all pointers in the seat.
jaehyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0b27fd8dfddd5c305d6d186dda8cef0dc6b8c172 commit 0b27fd8dfddd5c305d6d186dda8cef0dc6b8c172 Author: Jaehyun Cho Date: Thu Aug 2 18:16:46 2018 +0900 evas_events: Fix to set mouse_in state to all pointers in the seat. Summary: mouse coordinate is set by seat. Therefore, mouse_in state should be set based on seat. As a result, mouse_in state of all pointers in the seat should be updated at the same time. Reviewers: eagleeye, devilhorns, zmike Reviewed By: eagleeye, devilhorns, zmike Subscribers: devilhorns, Hermet, kimcinoo, cedric, iscaro, zmike, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6699 --- src/lib/evas/canvas/evas_events.c | 45 +++ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index 3a27cf5b65..b670c60e02 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -555,6 +555,23 @@ _evas_event_source_mouse_down_events(Evas_Object *eo_obj, Evas *eo_e, } static void +_evas_event_mouse_in_set(Evas_Pointer_Seat *pseat, + Evas_Object_Protected_Data *obj, Eina_Bool mouse_in) +{ + Evas_Pointer_Data *pdata; + Evas_Object_Pointer_Data *obj_pdata; + + if ((!pseat) || (!obj)) return; + + EINA_INLIST_FOREACH(pseat->pointers, pdata) + { +obj_pdata = _evas_object_pointer_data_get(pdata, obj); +if (obj_pdata) + obj_pdata->mouse_in = mouse_in; + } +} + +static void _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, Efl_Input_Pointer *parent_ev, Evas_Pointer_Data *pdata, @@ -639,7 +656,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, if ((obj_pdata->mouse_grabbed == 0) && (!e->delete_me)) { if (obj_pdata->mouse_in) continue; /* FIXME: dubious logic! */ - obj_pdata->mouse_in = 0; + _evas_event_mouse_in_set(pdata->seat, child, 0); if (e->is_frozen) continue; ev->cur = curpt_real; _evas_event_havemap_adjust_f(eo_child, child, >cur, obj_pdata->mouse_grabbed); @@ -702,7 +719,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, } else if (obj_pdata->mouse_in) { - obj_pdata->mouse_in = 0; + _evas_event_mouse_in_set(pdata->seat, child, 0); if (e->is_frozen) continue; ev->cur = curpt; _evas_event_havemap_adjust_f(eo_child, child, >cur, obj_pdata->mouse_grabbed); @@ -731,7 +748,7 @@ _evas_event_source_mouse_move_events(Evas_Object *eo_obj, Evas *eo_e, { if (!obj_pdata->mouse_in) { -obj_pdata->mouse_in = 1; +_evas_event_mouse_in_set(pdata->seat, child, 1); if (e->is_frozen) continue; ev->cur = curpt; _evas_event_havemap_adjust_f(eo_child, child, >cur, obj_pdata->mouse_grabbed); @@ -1222,7 +1239,7 @@ _evas_event_source_mouse_in_events(Evas_Object *eo_obj, Evas *eo_e, if (!eina_list_data_find(src->proxy->src_event_in, eo_child)) { if (obj_pdata->mouse_in) continue; - obj_pdata->mouse_in = 1; + _evas_event_mouse_in_set(pdata->seat, child, 1); ev->cur = point; _evas_event_havemap_adjust_f(eo_child, child, >cur, obj_pdata->mouse_grabbed); ev->action = EFL_POINTER_ACTION_IN; @@ -1292,7 +1309,7 @@ _evas_event_source_mouse_out_events(Evas_Object *eo_obj, Evas *eo_e, } if (!obj_pdata->mouse_in) continue; -obj_pdata->mouse_in = 0; +_evas_event_mouse_in_set(pdata->seat, child, 0); if (child->delete_me) continue; ev->cur = point; @@ -1620,7 +1637,7 @@ _post_up_handle(Evas_Public_Data *e, Efl_Input_Pointer *parent_ev, continue; } if (!obj_pdata->mouse_in) continue; - obj_pdata->mouse_in = 0; + _evas_event_mouse_in_set(pdata->seat, obj, 0); if (!e->is_frozen) { ev->cur.x = pdata->seat->x; @@ -1658,7 +1675,7 @@ _post_up_handle(Evas_Public_Data *e, Efl_Input_Pointer *parent_ev, continue; } if (obj_pdata->mouse_in) continue; - obj_pdata->mouse_in = 1; + _evas_event_mouse_in_set(pdata->seat, obj_itr, 1); if (e->is_frozen)
[EGIT] [core/efl] master 01/01: edje: add back function prototype for edje_object_color_class_description_get
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=dbc2c880a8bb2c4457ec018ed7184362f5ff6e2e commit dbc2c880a8bb2c4457ec018ed7184362f5ff6e2e Author: Mike Blumenkrantz Date: Mon Jul 30 07:12:31 2018 -0400 edje: add back function prototype for edje_object_color_class_description_get this was removed in D4403 Differential Revision: https://phab.enlightenment.org/D6694 --- src/lib/edje/Edje_Legacy.h | 14 ++ 1 file changed, 14 insertions(+) diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h index 581e2f9eb9..dcf7067563 100644 --- a/src/lib/edje/Edje_Legacy.h +++ b/src/lib/edje/Edje_Legacy.h @@ -3130,6 +3130,20 @@ EAPI const Edje_Perspective *edje_object_perspective_get(const Evas_Object *obj) */ EAPI void edje_object_item_provider_set(Edje_Object *obj, Edje_Item_Provider_Cb func, void *data); + +/** + * @brief Gets the description of an object color class. + * + * This function gets the description of a color class in use by an object. + * + * @param[in] color_class Color class description + * + * @return The description of the target color class or @c null if not found + * + * @ingroup Edje_Object + */ +EAPI const char *edje_object_color_class_description_get(const Edje_Object *obj, const char * color_class); + typedef Efl_Canvas_Layout_Part_Type Edje_Part_Type; #define EDJE_PART_TYPE_NONEEFL_CANVAS_LAYOUT_PART_TYPE_NONE #define EDJE_PART_TYPE_RECTANGLE EFL_CANVAS_LAYOUT_PART_TYPE_RECTANGLE --