[EGIT] [core/efl] master 01/01: efl_ui_calendar: fix wrong define
woohyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=faf3fb50f9a7edccf079ef6cb52362afb1026c01 commit faf3fb50f9a7edccf079ef6cb52362afb1026c01 Author: WooHyun JungDate: Wed Nov 22 16:54:30 2017 +0900 efl_ui_calendar: fix wrong define --- src/lib/elementary/efl_ui_calendar_private.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_calendar_private.h b/src/lib/elementary/efl_ui_calendar_private.h index 4aa00878ea..2ca8f3871d 100644 --- a/src/lib/elementary/efl_ui_calendar_private.h +++ b/src/lib/elementary/efl_ui_calendar_private.h @@ -1,5 +1,5 @@ #ifndef EFL_UI_CALENDAR_PRIVATE_H -#define ELM_WIDGET_CALENDAR_H +#define ELM_UI_CALENDAR_PRIVATE_H #include "Elementary.h" --
[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [remove legacy tarball releases of elm, generic loaders/players.] by Raster
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=32a6f6a477847bd9afca6dde947ab99a4ca25c1b commit 32a6f6a477847bd9afca6dde947ab99a4ca25c1b Author: RasterDate: Tue Nov 21 23:41:59 2017 -0800 Wiki page download-latest changed with summary [remove legacy tarball releases of elm, generic loaders/players.] by Raster --- pages/download-latest.txt | 6 -- 1 file changed, 6 deletions(-) diff --git a/pages/download-latest.txt b/pages/download-latest.txt index ecfd159f..7eacf6e7 100644 --- a/pages/download-latest.txt +++ b/pages/download-latest.txt @@ -1,9 +1,6 @@ efl_v = 1.20.5 python_efl_v = 1.20.0 -elm_v = In efl -emotion_generic_players_v = In efl -evas_generic_loaders_v= In efl enlightenment_v = 0.22.1 terminology_v = 1.1.1 @@ -24,9 +21,6 @@ dlbase= https://download.enlightenment.org/rel/ ^Library^Version^ |[[%%dlbase%%libs/efl/efl-%%efl_vextn%%|EFL]]|%%efl_v%%| |[[%%dlbase%%bindings/python/python-efl-%%python_efl_vextn%%|Python-EFL]]|%%python_efl_v%%| -|Elementary|%%elm_v%%| -|Emotion Generic Players|%%emotion_generic_players_v%%| -|Evas Generic Loaders|%%evas_generic_loaders_v%%| ^Application^Version^ |[[%%dlbase%%apps/enlightenment/enlightenment-%%enlightenment_vextn%%|Enlightenment]]|%%enlightenment_v%%| --
[EGIT] [website/www-content] master 01/01: Wiki page efl-deps-src changed with summary [] by Philippe Jean Guillaumie
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=581ec82af052d9668b5f49a577acf7b69a6c7c25 commit 581ec82af052d9668b5f49a577acf7b69a6c7c25 Author: Philippe Jean GuillaumieDate: Tue Nov 21 21:35:48 2017 -0800 Wiki page efl-deps-src changed with summary [] by Philippe Jean Guillaumie --- pages/incl/efl-deps-src.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/pages/incl/efl-deps-src.txt b/pages/incl/efl-deps-src.txt index 257d3f62..16ede63e 100644 --- a/pages/incl/efl-deps-src.txt +++ b/pages/incl/efl-deps-src.txt @@ -1,7 +1,5 @@ * [[https://gcc.gnu.org/|GCC]] or [[http://clang.llvm.org/|clang]] * [[https://www.gnu.org/software/make/|make]] - * [[http://mesonbuild.com/|meson]] //(for enlightenment)// - * [[https://ninja-build.org/ |ninja-build]] //(for enlightenment)// * check * libpam * [[http://freetype.org/|freetype]] //(2.3 or better)// --
[EGIT] [core/efl] master 01/01: elm_genlist: Add signals to communicate drag start and stop to atspi client.
kimcinoo pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=248cb96c422751cd8ecc6ce4d43d2bba05b2fb08 commit 248cb96c422751cd8ecc6ce4d43d2bba05b2fb08 Author: Prasoon SinghDate: Wed Nov 22 14:17:41 2017 +0900 elm_genlist: Add signals to communicate drag start and stop to atspi client. Summary: Send signal EFL_ACCESS_STATE_ANIMATED when dragging starts and stops to atspi clients and also set EFL_ACCESS_STATE_ANIMATED when reorder mode is enabled. Test Plan: When reorder happens atspi client should receive object:state-changed:animated signal. Reviewers: kimcinoo, shilpasingh Reviewed By: shilpasingh Subscribers: cedric, govi, rajeshps, jpeg Differential Revision: https://phab.enlightenment.org/D5515 --- src/lib/elementary/elm_genlist.c | 11 ++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 99cda24b56..f21da6d66c 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -4050,7 +4050,11 @@ _long_press_cb(void *data) } if (!sd->decorate_all_mode) - edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_ENABLED, "elm"); + { + edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_ENABLED, "elm"); + if (_elm_config->atspi_mode) + efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_ANIMATED, EINA_TRUE); + } } end: @@ -4986,6 +4990,8 @@ _item_mouse_up_cb(void *data, sd->calc_job = ecore_job_add(_calc_job, sd->obj); } edje_object_signal_emit(VIEW(it), SIGNAL_REORDER_DISABLED, "elm"); +if (_elm_config->atspi_mode) + efl_access_state_changed_signal_emit(EO_OBJ(it), EFL_ACCESS_STATE_ANIMATED, EINA_FALSE); sd->reorder_it = sd->reorder_rel = NULL; elm_interface_scrollable_hold_set(sd->obj, EINA_FALSE); elm_interface_scrollable_bounce_allow_set @@ -8636,6 +8642,9 @@ _elm_genlist_efl_access_state_set_get(Eo *obj, Elm_Genlist_Data *sd EINA_UNUSED) if (elm_genlist_multi_select_get(obj)) STATE_TYPE_SET(ret, EFL_ACCESS_STATE_MULTISELECTABLE); + if (elm_genlist_reorder_mode_get(obj)) + STATE_TYPE_SET(ret, EFL_ACCESS_STATE_ANIMATED); + return ret; } --
[EGIT] [core/efl] master 01/01: elm: efl access: fix the warnings.
ami pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3661f719540fca170f3441c31d70aecab1dc655a commit 3661f719540fca170f3441c31d70aecab1dc655a Author: Amitesh SinghDate: Wed Nov 22 13:45:21 2017 +0900 elm: efl access: fix the warnings. There were many warnings while building elm. ---> ./src/lib/elementary/efl_access.eo.h:433:55: warning: duplicate ‘const’ declaration specifier -Wduplicate-decl-specifier] EOAPI void efl_access_attribute_append(Eo *obj, const const char *key, const const char *value); <--- --- src/lib/elementary/efl_access.eo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo index 33b361d0bb..360832b28f 100644 --- a/src/lib/elementary/efl_access.eo +++ b/src/lib/elementary/efl_access.eo @@ -305,8 +305,8 @@ mixin Efl.Access (Efl.Interface, Efl.Object) [[Add key-value pair identifying object extra attributes ]] params { -@in key: const(string); [[The string key to give extra information]] -@in value: const(string); [[The string value to give extra information]] +@in key: string; [[The string key to give extra information]] +@in value: string; [[The string value to give extra information]] } } attributes_clear { --
[EGIT] [website/www-content] master 01/01: Wiki page efl-deps-git changed with summary [] by Raster
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=a8cee0494e15a9e212a1558855240f19223d0ddf commit a8cee0494e15a9e212a1558855240f19223d0ddf Author: RasterDate: Tue Nov 21 20:47:50 2017 -0800 Wiki page efl-deps-git changed with summary [] by Raster --- pages/incl/efl-deps-git.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/incl/efl-deps-git.txt b/pages/incl/efl-deps-git.txt index 657d78ba..c0fd9b2a 100644 --- a/pages/incl/efl-deps-git.txt +++ b/pages/incl/efl-deps-git.txt @@ -4,3 +4,4 @@ * autopoint * libtool * gettext + * meson and ninja (needed for enlightenment, terminology, rage ...) \ No newline at end of file --
[EGIT] [core/efl] master 01/01: efl_access: Add attribute_append, attributes_clear APIs
kimcinoo pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=11292dec353d3967ce568ed7017976277b18b2ed commit 11292dec353d3967ce568ed7017976277b18b2ed Author: Shilpa SinghDate: Wed Nov 22 11:54:44 2017 +0900 efl_access: Add attribute_append, attributes_clear APIs Summary: Add attribute append and attributes clear API, attributes of widget/widget_item helps in adding additional information about the widget/widget item in the form of key-value pair. Test Plan: Query the attributes using atspi_accessible_get_attributes in atspi_client and an hash table consisting of updates attributes should be returned. Signed-Off By: Shilpa Singh Signed-Off By: Lukasz Wlazly Reviewers: kimcinoo, lukasz.stanislawski Subscribers: cedric, govi, rajeshps, jpeg Differential Revision: https://phab.enlightenment.org/D5510 --- src/lib/elementary/efl_access.c | 65 --- src/lib/elementary/efl_access.eo | 17 +++-- src/lib/elementary/elm_widget.c | 47 - src/lib/elementary/elm_widget_item.eo | 1 + 4 files changed, 115 insertions(+), 15 deletions(-) diff --git a/src/lib/elementary/efl_access.c b/src/lib/elementary/efl_access.c index 4586012b77..dc02dbb703 100644 --- a/src/lib/elementary/efl_access.c +++ b/src/lib/elementary/efl_access.c @@ -123,11 +123,12 @@ struct _Efl_Access_Event_Handler struct _Efl_Access_Data { - Efl_Access_Role role; + Efl_Access_Relation_Set relations; + Eina_List *attr_list; const char*name; const char*description; const char*translation_domain; - Efl_Access_Relation_Set relations; + Efl_Access_Role role; Efl_Access_Type type: 2; }; @@ -193,9 +194,63 @@ _efl_access_parent_set(Eo *obj, Efl_Access_Data *pd EINA_UNUSED, Efl_Access *new EOLIAN Eina_List* _efl_access_attributes_get(Eo *obj EINA_UNUSED, Efl_Access_Data *pd EINA_UNUSED) { - WRN("The %s object does not implement the \"accessible_attributes_set\" function.", - efl_class_name_get(efl_class_get(obj))); - return NULL; + Eina_List *attr_list = NULL; + if (pd->attr_list) + { +Eina_List *l = NULL; +Efl_Access_Attribute *t_attr = NULL; +EINA_LIST_FOREACH(pd->attr_list, l, t_attr) + { + Efl_Access_Attribute *attr = calloc(1, sizeof(Efl_Access_Attribute)); + if (!attr) + return attr_list; + + attr->key = eina_stringshare_add(t_attr->key); + attr->value = eina_stringshare_add(t_attr->value); + attr_list = eina_list_append(attr_list, attr); + } + } + return attr_list; +} + +EOLIAN static void +_efl_access_attribute_append(Eo *obj EINA_UNUSED, Efl_Access_Data *pd EINA_UNUSED, const char *key, const char *value) +{ + Eina_List *l; + Efl_Access_Attribute *attr = NULL; + + if (!key || !value) return; + + /* Check existing attributes has this key */ + EINA_LIST_FOREACH(pd->attr_list, l, attr) + { +if (!strcmp((const char *)attr->key, key)) + { + eina_stringshare_replace(>value, value); + return; + } + } + + /* Add new attribute */ + attr = calloc(1, sizeof(Efl_Access_Attribute)); + if (!attr) return; + + attr->key = eina_stringshare_add(key); + attr->value = eina_stringshare_add(value); + pd->attr_list = eina_list_append(pd->attr_list, attr); +} + +EOLIAN static void _efl_access_attributes_clear(Eo *obj EINA_UNUSED, Efl_Access_Data *pd) +{ + if (!pd->attr_list) return; + Efl_Access_Attribute *attr; + EINA_LIST_FREE(pd->attr_list, attr) + { +eina_stringshare_del(attr->key); +eina_stringshare_del(attr->value); +free(attr); + } + pd->attr_list = NULL; } EOLIAN static Efl_Access_Role diff --git a/src/lib/elementary/efl_access.eo b/src/lib/elementary/efl_access.eo index 0ae001a433..33b361d0bb 100644 --- a/src/lib/elementary/efl_access.eo +++ b/src/lib/elementary/efl_access.eo @@ -298,10 +298,23 @@ mixin Efl.Access (Efl.Interface, Efl.Object) get { } values { -/* FIXME: API for attribute free */ -attributes: list @owned; [[List of object attributes]] +attributes: list @owned; [[List of object attributes, Must be freed by the user]] } } + attribute_append { + [[Add key-value pair identifying object extra attributes + ]] + params { +@in key: const(string); [[The string key to give extra information]] +@in value: const(string); [[The string value to give extra information]] + } + } + attributes_clear { + [[Removes all attributes in accessible
[EGIT] [core/enlightenment] annotated tag v0.22.1 created (now 0d5e8b49d)
This is an automated email from the git hooks/post-receive script. simotek pushed a change to annotated tag v0.22.1 in repository core/enlightenment. at 0d5e8b49d (tag) tagging 8729f8b58eea5794c840d29cb4b01b70227e3edd (commit) replaces v0.22.0 tagged by Simon Lees on Wed Nov 22 12:18:11 2017 +1030 - Log - 22.1 Release Andy Williams (1): music-control - Fix build after raster's file rename Carsten Haitzler (4): e sys - frix warning for less noise hits: silence warnings about possible null string for strcmp fix mouse hangs after unblank music-control - install properly with meson build with icon Marcel Hollerbach (2): meson: make those scripts executable meson: this version is enough for the things we use in the moment Massimo Maiurana (1): Adding danish strings to desktop files Mike Blumenkrantz (15): create wl output resource when running in wl nested unset wayland cursor for all pointers when running nested in wl show internal pointer cursor whenever resetting to internal cursor make wl_pointer cursor handling state-based to correctly handle cursor visuals update README with meson instructions check meson module option state before executing subdir improve meson build module disabling add field width limits to all fscanf params in e_intlc. destroy luncher iconify provider on gadget delete do not add iconify provider for luncher when creating a demo gadget requeue client for render if show animation completes and damages exist avoid performing client rescales during shutdown prevent double shutdown of x11 compositor in xwayland mode always emit E_EVENT_COMP_OBJECT_ADD events use last client from E_Exec_Instance list when updating luncher popups --- No new revisions were added by this update. --
[EGIT] [website/www-content] master 01/01: Wiki page start-release changed with summary [] by Simon
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=a51ec984d82a1e67071e142111722825e88b2bde commit a51ec984d82a1e67071e142111722825e88b2bde Author: SimonDate: Tue Nov 21 18:21:18 2017 -0800 Wiki page start-release changed with summary [] by Simon --- pages/incl/start-release.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/incl/start-release.txt b/pages/incl/start-release.txt index 8ac2ed8b..2462d084 100644 --- a/pages/incl/start-release.txt +++ b/pages/incl/start-release.txt @@ -1,3 +1,3 @@ -EFL 1.20.5 and [[https://www.enlightenment.org/news/e22_release|Enlightenment 0.22]] are out - go to our [[/download]] page. +EFL 1.20.5 and [[https://www.enlightenment.org/news/e0.22.1_release|Enlightenment 0.22.1]] are out - go to our [[/download]] page. --
[EGIT] [website/www-content] master 01/01: Wiki page e0.22.1_release changed with summary [created] by Simon
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=64350e9ba68d212ea7bb89b34134557a240f4f20 commit 64350e9ba68d212ea7bb89b34134557a240f4f20 Author: SimonDate: Tue Nov 21 18:19:27 2017 -0800 Wiki page e0.22.1_release changed with summary [created] by Simon --- pages/news/e0.22.1_release.txt | 62 ++ 1 file changed, 62 insertions(+) diff --git a/pages/news/e0.22.1_release.txt b/pages/news/e0.22.1_release.txt new file mode 100644 index ..d06fb4dd --- /dev/null +++ b/pages/news/e0.22.1_release.txt @@ -0,0 +1,62 @@ +=== Enlightenment DR 0.22.1 Release === + * //2017-11-22 by Simon Lees// + +This is a bugfix and stability release for the Enlightenment 22 Release series. + +== Tickets Addressed == +| [[ https://phab.enlightenment.org/T5883|T5883 ]] |screen blank: mouse click broken after waking from screem blank. | +| [[ https://phab.enlightenment.org/T6258|T6258 ]] |E22 freezes on bryce manipulations | +| [[ https://phab.enlightenment.org/T6288|T6288 ]] |Luncher app popup doesn't update from different VD | +| [[ https://phab.enlightenment.org/T6316|T6316 ]] |enlightenment-0.22.0/src/bin/e_intl.c: unbounded file read ? | +| [[ https://phab.enlightenment.org/T6322|T6322 ]] |No input on Logout problems window. | + + +== Changes == +Carsten Haitzler (4): + * e sys - frix warning for less noise + * hits: silence warnings about possible null string for strcmp + * fix mouse hangs after unblank + * music-control - install properly with meson build with icon + +Marcel Hollerbach (2): + * meson: make those scripts executable + * meson: this version is enough for the things we use in the moment + +Massimo Maiurana (1): + * Adding danish strings to desktop files + +Mike Blumenkrantz (15): + * create wl output resource when running in wl nested + * unset wayland cursor for all pointers when running nested in wl + * show internal pointer cursor whenever resetting to internal cursor + * make wl_pointer cursor handling state-based to correctly handle cursor visuals + * update README with meson instructions + * check meson module option state before executing subdir + * improve meson build module disabling + * add field width limits to all fscanf params in e_intlc. + * destroy luncher iconify provider on gadget delete + * do not add iconify provider for luncher when creating a demo gadget + * requeue client for render if show animation completes and damages exist + * avoid performing client rescales during shutdown + * prevent double shutdown of x11 compositor in xwayland mode + * always emit E_EVENT_COMP_OBJECT_ADD events + * use last client from E_Exec_Instance list when updating luncher popups + +== Download == + +^ ** LINK ** ^ ** SHA256 ** ^ +| [[ http://download.enlightenment.org/rel/apps/enlightenment/enlightenment-0.22.1.tar.xz | Enlightenment DR 0.22.1 XZ]] | ''207b6b88dafc4932ab007a835510823c5a1dd8c191876ac037628176ca77a7e0'' | + +//Left behind, somewhere over that rainbow.// + +== Building and Dependencies == + +If you have an existing EFL or Elementary install, you may wish to delete its header files and libraries before compiling and installing to avoid possible conflicts during compilation. Please compile the dependencies in the following order (click for README): + + - [[https://git.enlightenment.org/core/efl.git/tree/README * * *| EFL]] + +**Note:** E22 depends on EFL **v1.20.5** or newer. + +{{:blank.png?nolink&100|}} +~~DISCUSSIONS~~ + --
[EGIT] [website/www-content] master 01/01: Wiki page download-latest changed with summary [] by Simon
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=247507d4a53ad9d04a71937f7b65449e2fabcadb commit 247507d4a53ad9d04a71937f7b65449e2fabcadb Author: SimonDate: Tue Nov 21 18:20:12 2017 -0800 Wiki page download-latest changed with summary [] by Simon --- 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 933370cf..ecfd159f 100644 --- a/pages/download-latest.txt +++ b/pages/download-latest.txt @@ -5,7 +5,7 @@ elm_v = In efl emotion_generic_players_v = In efl evas_generic_loaders_v= In efl -enlightenment_v = 0.22.0 +enlightenment_v = 0.22.1 terminology_v = 1.1.1 rage_v= 0.2.1 econnman_v= 1.1 --
[EGIT] [core/efl] master 02/02: wayland_shm: Fix partial redraws
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2c559a1ee9210b46e4f44346d87ff75e4229740b commit 2c559a1ee9210b46e4f44346d87ff75e4229740b Author: Derek ForemanDate: Tue Nov 21 16:48:30 2017 -0600 wayland_shm: Fix partial redraws I accidentally the age tracking. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 350ec599a8..162240db1b 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -94,6 +94,8 @@ _evas_dmabuf_surface_wait(Dmabuf_Surface *s) Outbuf *ob; ob = s->surface->ob; best = ecore_wl2_buffer_create(ob->ewd, ob->w, ob->h, s->alpha); +/* Start at -1 so it's age is incremented to 0 for first draw */ +best->age = -1; s->buffers = eina_list_append(s->buffers, best); } return best; @@ -110,13 +112,18 @@ _evas_dmabuf_surface_assign(Surface *s) surface->current = _evas_dmabuf_surface_wait(surface); if (!surface->current) { +/* Should be unreachable and will result in graphical + * anomalies - we should probably blow away all the + * existing buffers and start over if we actually + * see this happen... + */ WRN("No free DMAbuf buffers, dropping a frame"); EINA_LIST_FOREACH(surface->buffers, l, b) b->age = 0; return 0; } EINA_LIST_FOREACH(surface->buffers, l, b) - if (b->age) b->age++; + b->age++; return surface->current->age; } --
[EGIT] [core/efl] master 01/02: ecore_wl2: Add dmabuf allocations for vc4
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cf605549c5773d6b90c3e664799845186ef0e603 commit cf605549c5773d6b90c3e664799845186ef0e603 Author: Derek ForemanDate: Tue Nov 21 16:29:55 2017 -0600 ecore_wl2: Add dmabuf allocations for vc4 This should theoretically be better for software rendering on rpi3 since it allows the compositor to use our sw rendered buffers as a texture. --- src/Makefile_Ecore_Wl2.am| 1 + src/lib/ecore_wl2/ecore_wl2_buffer.c | 138 +++- src/static_libs/libdrm/vc4_drm.h | 302 +++ 3 files changed, 440 insertions(+), 1 deletion(-) diff --git a/src/Makefile_Ecore_Wl2.am b/src/Makefile_Ecore_Wl2.am index 3abab865af..1c5971c4be 100644 --- a/src/Makefile_Ecore_Wl2.am +++ b/src/Makefile_Ecore_Wl2.am @@ -24,6 +24,7 @@ static_libs/libdrm/exynos_drm.h \ static_libs/libdrm/exynos_drmif.h \ static_libs/libdrm/i915_drm.h \ static_libs/libdrm/intel_bufmgr.h \ +static_libs/libdrm/vc4_drm.h \ static_libs/libdrm/LICENSE diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c b/src/lib/ecore_wl2/ecore_wl2_buffer.c index 8c4b0ff39e..a8e5bec5cb 100644 --- a/src/lib/ecore_wl2/ecore_wl2_buffer.c +++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c @@ -11,10 +11,11 @@ #include #include #include - +#include #include #include #include +#include #include "linux-dmabuf-unstable-v1-client-protocol.h" @@ -397,6 +398,140 @@ _wl_shm_buffer_manager_setup(int fd EINA_UNUSED) return EINA_TRUE; } +struct internal_vc4_bo +{ + __u32 handle; + int size; + int fd; +}; + +static int +align(int v, int a) +{ + return (v + a - 1) & ~((uint64_t)a - 1); +} + +static Buffer_Handle * +_vc4_alloc(Buffer_Manager *self EINA_UNUSED, const char *name EINA_UNUSED, int w, int h, unsigned long *stride, int32_t *fd) +{ + struct drm_vc4_create_bo bo; + struct internal_vc4_bo *obo; + struct drm_gem_close cl; + size_t size; + int ret; + + obo = malloc(sizeof(struct internal_vc4_bo)); + if (!obo) return NULL; + + *stride = align(w * 4, 16); + size = *stride * h; + memset(, 0, sizeof(bo)); + bo.size = size; + ret = ioctl(drm_fd, DRM_IOCTL_VC4_CREATE_BO, ); + if (ret) return NULL; + obo->handle = bo.handle; + obo->size = size; + /* First try to allocate an mmapable buffer with O_RDWR, +* if that fails retry unmappable - if the compositor is +* using GL it won't need to mmap the buffer and this can +* work - otherwise it'll reject this buffer and we'll +* have to fall back to shm rendering. +*/ + if (sym_drmPrimeHandleToFD(drm_fd, bo.handle, + DRM_CLOEXEC | O_RDWR, fd) != 0) + if (sym_drmPrimeHandleToFD(drm_fd, bo.handle, +DRM_CLOEXEC, fd) != 0) goto err; + + obo->fd = *fd; + return (Buffer_Handle *)obo; + +err: + memset(, 0, sizeof(cl)); + cl.handle = bo.handle; + ioctl(drm_fd, DRM_IOCTL_GEM_CLOSE, ); + return NULL; +} + +static void * +_vc4_map(Ecore_Wl2_Buffer *buf) +{ + struct drm_vc4_mmap_bo map; + struct internal_vc4_bo *bo; + void *ptr; + int ret; + + bo = (struct internal_vc4_bo *)buf->bh; + + memset(, 0, sizeof(map)); + map.handle = bo->handle; + ret = ioctl(drm_fd, DRM_IOCTL_VC4_MMAP_BO, ); + if (ret) return NULL; + + ptr = mmap(NULL, bo->size, PROT_READ | PROT_WRITE, MAP_SHARED, drm_fd, + map.offset); + if (ptr == MAP_FAILED) return NULL; + + return ptr; +} + +static void +_vc4_unmap(Ecore_Wl2_Buffer *buf) +{ + struct internal_vc4_bo *bo; + + bo = (struct internal_vc4_bo *)buf->bh; + munmap(buf->mapping, bo->size); +} + +static void +_vc4_discard(Ecore_Wl2_Buffer *buf) +{ + struct drm_gem_close cl; + struct internal_vc4_bo *bo; + + bo = (struct internal_vc4_bo *)buf->bh; + + memset(, 0, sizeof(cl)); + cl.handle = bo->handle; + ioctl(drm_fd, DRM_IOCTL_GEM_CLOSE, ); +} + +static Eina_Bool +_vc4_buffer_manager_setup(int fd) +{ + struct drm_gem_close cl; + struct drm_vc4_create_bo bo; + Eina_Bool fail = EINA_FALSE; + void *drm_lib; + + memset(, 0, sizeof(bo)); + bo.size = 32; + if (ioctl(fd, DRM_IOCTL_VC4_CREATE_BO, )) return EINA_FALSE; + + memset(, 0, sizeof(cl)); + cl.handle = bo.handle; + ioctl(fd, DRM_IOCTL_GEM_CLOSE, ); + + drm_lib = dlopen("libdrm.so", RTLD_LAZY | RTLD_GLOBAL); + if (!drm_lib) return EINA_FALSE; + + SYM(drm_lib, drmPrimeHandleToFD); + + if (fail) goto err; + + buffer_manager->alloc = _vc4_alloc; + buffer_manager->to_buffer = _evas_dmabuf_wl_buffer_from_dmabuf; + buffer_manager->map = _vc4_map; + buffer_manager->unmap = _vc4_unmap; + buffer_manager->discard = _vc4_discard; + buffer_manager->manager_destroy = NULL; + buffer_manager->dl_handle = drm_lib; + return EINA_TRUE; +err: + dlclose(drm_lib); + return EINA_FALSE; +} + EAPI Eina_Bool ecore_wl2_buffer_init(Ecore_Wl2_Display *ewd,
[EGIT] [core/efl] master 02/12: elm_hoversel: lets use the new event
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=da89778ee03c9322a675d693d567842385790d32 commit da89778ee03c9322a675d693d567842385790d32 Author: Marcel HollerbachDate: Thu Nov 16 23:23:25 2017 +0100 elm_hoversel: lets use the new event --- src/lib/elementary/elc_hoversel.c | 22 ++ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/lib/elementary/elc_hoversel.c b/src/lib/elementary/elc_hoversel.c index c55d0aaa79..01181a53e8 100644 --- a/src/lib/elementary/elc_hoversel.c +++ b/src/lib/elementary/elc_hoversel.c @@ -182,19 +182,18 @@ _on_item_clicked(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) } static void -_item_focused_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) +_item_focus_changed(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) { Elm_Hoversel_Item_Data *it = data; - efl_event_callback_legacy_call(WIDGET(it), ELM_HOVERSEL_EVENT_ITEM_FOCUSED, EO_OBJ(it)); -} - -static void -_item_unfocused_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED) -{ - Elm_Hoversel_Item_Data *it = data; - - efl_event_callback_legacy_call(WIDGET(it), ELM_HOVERSEL_EVENT_ITEM_UNFOCUSED, EO_OBJ(it)); + if (efl_ui_focus_object_focus_get(event->object)) + { +efl_event_callback_legacy_call(WIDGET(it), ELM_HOVERSEL_EVENT_ITEM_FOCUSED, EO_OBJ(it)); + } + else + { +efl_event_callback_legacy_call(WIDGET(it), ELM_HOVERSEL_EVENT_ITEM_UNFOCUSED, EO_OBJ(it)); + } } static void @@ -865,8 +864,7 @@ _elm_hoversel_item_add(Eo *obj, Elm_Hoversel_Data *sd, const char *label, const evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, 0.0); evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); efl_event_callback_add(bt, EFL_UI_EVENT_CLICKED, _on_item_clicked, item); -efl_event_callback_add(bt, EFL_UI_WIDGET_EVENT_FOCUSED, _item_focused_cb, item); -efl_event_callback_add(bt, EFL_UI_WIDGET_EVENT_UNFOCUSED, _item_unfocused_cb, item); +efl_event_callback_add(bt, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_focus_changed, item); sd->items = eina_list_append(sd->items, eo_item); --
[EGIT] [core/efl] master 04/12: elm_spinner: lets use the new event
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e1ff459e1b1ce78fbfe0060debdafe8d932cf76b commit e1ff459e1b1ce78fbfe0060debdafe8d932cf76b Author: Marcel HollerbachDate: Thu Nov 16 23:30:30 2017 +0100 elm_spinner: lets use the new event --- src/lib/elementary/elm_spinner.c | 22 +++--- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/elementary/elm_spinner.c b/src/lib/elementary/elm_spinner.c index d269a3e53e..96fc4eb4f9 100644 --- a/src/lib/elementary/elm_spinner.c +++ b/src/lib/elementary/elm_spinner.c @@ -55,9 +55,7 @@ _inc_dec_button_unpressed_cb(void *data, const Efl_Event *event); static void _inc_dec_button_mouse_move_cb(void *data, const Efl_Event *event); static void -_text_button_focused_cb(void *data, const Efl_Event *event); -static void -_entry_unfocused_cb(void *data, const Efl_Event *event); +_entry_focus_change(void *data, const Efl_Event *event); static void _entry_activated_cb(void *data, const Efl_Event *event); @@ -409,7 +407,7 @@ _entry_value_apply(Evas_Object *obj) if (!sd->entry_visible) return; efl_event_callback_del -(sd->ent, EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj); +(sd->ent, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _entry_focus_change, obj); _entry_hide(obj); str = elm_object_text_get(sd->ent); if (!str) return; @@ -648,7 +646,7 @@ _toggle_entry(Evas_Object *obj) } efl_event_callback_add - (sd->ent, EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_unfocused_cb, obj); + (sd->ent, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _entry_focus_change, obj); sd->entry_visible = EINA_TRUE; elm_layout_signal_emit(obj, "elm,state,entry,active", "elm"); evas_object_show(sd->ent); @@ -876,9 +874,10 @@ _inc_dec_button_unpressed_cb(void *data, const Efl_Event *event EINA_UNUSED) } static void -_text_button_focused_cb(void *data, const Efl_Event *event EINA_UNUSED) +_text_button_focus_change(void *data, const Efl_Event *event) { - _toggle_entry(data); + if (efl_ui_focus_object_focus_get(event->object)) + _toggle_entry(data); } static void @@ -887,11 +886,11 @@ _entry_activated_cb(void *data, const Efl_Event *event EINA_UNUSED) _toggle_entry(data); } - static void -_entry_unfocused_cb(void *data, const Efl_Event *event EINA_UNUSED) +_entry_focus_change(void *data, const Efl_Event *event) { - _toggle_entry(data); + if (!efl_ui_focus_object_focus_get(event->object)) + _toggle_entry(data); } static void @@ -1214,8 +1213,9 @@ _elm_spinner_efl_canvas_group_group_add(Eo *obj, Elm_Spinner_Data *priv) efl_event_callback_add (priv->text_button, EFL_UI_EVENT_CLICKED, _text_button_clicked_cb, obj); + efl_event_callback_add - (priv->text_button, EFL_UI_WIDGET_EVENT_FOCUSED, _text_button_focused_cb, obj); + (priv->text_button, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _text_button_focus_change, obj); elm_layout_content_set(obj, "elm.swallow.text_button", priv->text_button); elm_widget_sub_object_add(obj, priv->text_button); --
[EGIT] [core/efl] master 09/12: elm_fileselector: forward focus changed from entry to fileselector
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1ef8092ad00cb9871fd9d7b881ebbf467008f0b8 commit 1ef8092ad00cb9871fd9d7b881ebbf467008f0b8 Author: Marcel HollerbachDate: Mon Nov 20 22:25:46 2017 +0100 elm_fileselector: forward focus changed from entry to fileselector the old event is then emitted from elm_widget.c --- src/lib/elementary/elc_fileselector_entry.c | 6 ++ 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c index 048be2923c..9557871d99 100644 --- a/src/lib/elementary/elc_fileselector_entry.c +++ b/src/lib/elementary/elc_fileselector_entry.c @@ -59,8 +59,6 @@ SIG_FWD(PRESS, ELM_FILESELECTOR_ENTRY_EVENT_PRESS) SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED) SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED) SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE) -SIG_FWD(FOCUSED, EFL_UI_WIDGET_EVENT_FOCUSED) -SIG_FWD(UNFOCUSED, EFL_UI_WIDGET_EVENT_UNFOCUSED) SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE) SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY) SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT) @@ -300,13 +298,13 @@ _elm_fileselector_entry_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Ent SIG_FWD(LONGPRESSED, EFL_UI_EVENT_LONGPRESSED); SIG_FWD(CLICKED, EFL_UI_EVENT_CLICKED); SIG_FWD(CLICKED_DOUBLE, EFL_UI_EVENT_CLICKED_DOUBLE); - SIG_FWD(FOCUSED, EFL_UI_WIDGET_EVENT_FOCUSED); - SIG_FWD(UNFOCUSED, EFL_UI_WIDGET_EVENT_UNFOCUSED); SIG_FWD(SELECTION_PASTE, EFL_UI_EVENT_SELECTION_PASTE); SIG_FWD(SELECTION_COPY, EFL_UI_EVENT_SELECTION_COPY); SIG_FWD(SELECTION_CUT, EFL_UI_EVENT_SELECTION_CUT); #undef SIG_FWD + efl_event_callback_forwarder_add(priv->entry, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, obj); + if (!elm_layout_theme_set (obj, "fileselector_entry", "base", elm_widget_style_get(obj))) CRI("Failed to set layout!"); --
[EGIT] [core/efl] master 11/12: prefs elm_entry: change to the new event
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a8fb3f30d9b917945f3d41f89733af8e0a65a1f6 commit a8fb3f30d9b917945f3d41f89733af8e0a65a1f6 Author: Marcel HollerbachDate: Mon Nov 20 22:54:49 2017 +0100 prefs elm_entry: change to the new event --- src/modules/elementary/prefs/elm_entry.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/elementary/prefs/elm_entry.c b/src/modules/elementary/prefs/elm_entry.c index 02030b7ab6..b34102aa15 100644 --- a/src/modules/elementary/prefs/elm_entry.c +++ b/src/modules/elementary/prefs/elm_entry.c @@ -101,7 +101,8 @@ _item_changed_cb(void *data, const Efl_Event *event) { Elm_Prefs_Item_Changed_Cb prefs_it_changed_cb = data; - prefs_it_changed_cb(event->object); + if (efl_ui_focus_object_focus_get(event->object)) + prefs_it_changed_cb(event->object); } static void @@ -160,7 +161,7 @@ elm_prefs_entry_add(const Elm_Prefs_Item_Iface *iface EINA_UNUSED, efl_event_callback_add (obj, ELM_ENTRY_EVENT_ACTIVATED, _item_changed_cb, cb); efl_event_callback_add - (obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, _item_changed_cb, cb); + (obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_changed_cb, cb); if (spec.s.accept) { int ret; --
[EGIT] [core/efl] master 07/12: efl_ui_multibuttonentry: migrate to efl_ui_focus_object events
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d9c584eec1bb76c4d7a8f665684fa28b814df8ad commit d9c584eec1bb76c4d7a8f665684fa28b814df8ad Author: Marcel HollerbachDate: Mon Nov 20 21:34:33 2017 +0100 efl_ui_multibuttonentry: migrate to efl_ui_focus_object events this merges the two two events callbacks into one --- src/lib/elementary/efl_ui_multibuttonentry.c | 39 ++-- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c index 3a7cd3964a..2a1fe92823 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.c +++ b/src/lib/elementary/efl_ui_multibuttonentry.c @@ -54,14 +54,12 @@ static Eina_Bool _efl_ui_multibuttonentry_smart_focus_next_enable = EINA_FALSE; static Eina_Bool _efl_ui_multibuttonentry_smart_focus_direction_enable = EINA_TRUE; static void _entry_changed_cb(void *data, const Efl_Event *event); -static void _entry_focus_in_cb(void *data, const Efl_Event *event); -static void _entry_focus_out_cb(void *data, const Efl_Event *event); +static void _entry_focus_changed_cb(void *data, const Efl_Event *event); static void _entry_clicked_cb(void *data, const Efl_Event *event); EFL_CALLBACKS_ARRAY_DEFINE(_multi_buttonentry_cb, { ELM_ENTRY_EVENT_CHANGED, _entry_changed_cb }, - { EFL_UI_WIDGET_EVENT_FOCUSED, _entry_focus_in_cb }, - { EFL_UI_WIDGET_EVENT_UNFOCUSED, _entry_focus_out_cb }, + { EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED , _entry_focus_changed_cb }, { EFL_UI_EVENT_CLICKED, _entry_clicked_cb } ); @@ -1048,28 +1046,29 @@ _entry_changed_cb(void *data, const Efl_Event *event EINA_UNUSED) } static void -_entry_focus_in_cb(void *data, const Efl_Event *event EINA_UNUSED) +_entry_focus_changed_cb(void *data, const Efl_Event *event) { - Elm_Multibuttonentry_Item_Data *item = NULL; EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(data, sd); - if (sd->selected_it) + if (efl_ui_focus_object_focus_get(event->object)) { -item = sd->selected_it; -elm_object_focus_set(sd->entry, EINA_FALSE); -elm_object_focus_set(VIEW(item), EINA_TRUE); - } -} +Elm_Multibuttonentry_Item_Data *item = NULL; -static void -_entry_focus_out_cb(void *data, const Efl_Event *event EINA_UNUSED) -{ - EFL_UI_MULTIBUTTONENTRY_DATA_GET_OR_RETURN(data, sd); - const char *str; +if (sd->selected_it) + { + item = sd->selected_it; + elm_object_focus_set(sd->entry, EINA_FALSE); + elm_object_focus_set(VIEW(item), EINA_TRUE); + } + } + else + { +const char *str; - str = efl_text_get(sd->entry); - if (str && str[0]) - _item_new(sd, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL); +str = efl_text_get(sd->entry); +if (str && str[0]) + _item_new(sd, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL); + } } static void --
[EGIT] [core/efl] master 10/12: efl_ui_text: remove the event emits here
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=149d03d8f4832628b71d4460f7dd8abec4ee46dd commit 149d03d8f4832628b71d4460f7dd8abec4ee46dd Author: Marcel HollerbachDate: Mon Nov 20 22:38:08 2017 +0100 efl_ui_text: remove the event emits here with the previous commit we emit the legacy events for each interface event, and thus this event is not needed. However, in elm_entry this means that changing editable will _not_ reemit the focus event (where i am not that sure if that is correct or not). --- src/lib/elementary/efl_ui_text.c | 2 -- src/lib/elementary/elm_entry.c | 8 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/efl_ui_text.c b/src/lib/elementary/efl_ui_text.c index c1b9bd7287..05619dccc9 100644 --- a/src/lib/elementary/efl_ui_text.c +++ b/src/lib/elementary/efl_ui_text.c @@ -1211,7 +1211,6 @@ _efl_ui_text_elm_widget_on_focus_update(Eo *obj, Efl_Ui_Text_Data *sd, Elm_Objec if (top && top_is_win && sd->input_panel_enable && !sd->input_panel_show_on_demand) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); if (_elm_config->atspi_mode) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_TRUE); _return_key_enabled_check(obj); @@ -1228,7 +1227,6 @@ _efl_ui_text_elm_widget_on_focus_update(Eo *obj, Efl_Ui_Text_Data *sd, Elm_Objec if (top && top_is_win && sd->input_panel_enable) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); if (_elm_config->atspi_mode) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_FALSE); diff --git a/src/lib/elementary/elm_entry.c b/src/lib/elementary/elm_entry.c index 948fa053cf..6adff14742 100644 --- a/src/lib/elementary/elm_entry.c +++ b/src/lib/elementary/elm_entry.c @@ -1266,7 +1266,6 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd) if (top && top_is_win && sd->input_panel_enable && !sd->input_panel_show_on_demand && !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text")) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); if (_elm_config->atspi_mode) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_TRUE); _return_key_enabled_check(obj); @@ -1281,7 +1280,6 @@ _elm_entry_focus_update(Eo *obj, Elm_Entry_Data *sd) if (top && top_is_win && sd->input_panel_enable && !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text")) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); if (_elm_config->atspi_mode) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_FALSE); @@ -4255,6 +4253,12 @@ _elm_entry_editable_set(Eo *obj, Elm_Entry_Data *sd, Eina_Bool editable) efl_ui_widget_theme_apply(obj); _elm_entry_focus_update(obj, sd); + //legacy focus event emission + if (efl_ui_focus_object_focus_get(obj)) + evas_object_smart_callback_call(obj, "focused", NULL); + else + evas_object_smart_callback_call(obj, "unfocused", NULL); + elm_drop_target_del(obj, sd->drop_format, _dnd_enter_cb, NULL, _dnd_leave_cb, NULL, --
[EGIT] [core/efl] master 12/12: elm_widget: remove focused unfocused events
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=78664198bd3509a8eb36cb26f2b9655d4d89d840 commit 78664198bd3509a8eb36cb26f2b9655d4d89d840 Author: Marcel HollerbachDate: Mon Nov 20 22:56:43 2017 +0100 elm_widget: remove focused unfocused events the ones form efl.ui.focus.object are now taken. --- src/lib/elementary/efl_ui_multibuttonentry.c | 4 ++-- src/lib/elementary/elm_widget.c | 4 ++-- src/lib/elementary/elm_widget.eo | 2 -- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c index 2a1fe92823..e15b4de90c 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.c +++ b/src/lib/elementary/efl_ui_multibuttonentry.c @@ -1691,12 +1691,12 @@ _legacy_focused(void *data, const Efl_Event *ev) if (meaningful_focus_in && !meaningful_focus_out) { -efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); +evas_object_smart_callback_call(data, "focused", NULL); } if (!meaningful_focus_in && meaningful_focus_out) { -efl_event_callback_legacy_call(data, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); +evas_object_smart_callback_call(data, "unfocused", NULL); } } diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 8d36ee3535..8ef0713bfc 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -5034,9 +5034,9 @@ static void _focus_event_changed(void *data EINA_UNUSED, const Efl_Event *event) { if (efl_ui_focus_object_focus_get(event->object)) - efl_event_callback_legacy_call(event->object, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); + evas_object_smart_callback_call(event->object, "focused", NULL); else - efl_event_callback_legacy_call(event->object, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); + evas_object_smart_callback_call(event->object, "unfocused", NULL); } EOLIAN static Eo * diff --git a/src/lib/elementary/elm_widget.eo b/src/lib/elementary/elm_widget.eo index e9f16dc800..6a03f4be8c 100644 --- a/src/lib/elementary/elm_widget.eo +++ b/src/lib/elementary/elm_widget.eo @@ -648,8 +648,6 @@ abstract Elm.Widget (Efl.Canvas.Group, Efl.Access, } events { moved; [[Called when widget moved]] - focused; [[Called when widget was focused]] - unfocused; [[Called when widget was unfocused]] language,changed; [[Called when widget language changed]] access,changed; [[Called when accessibility changed]] } --
[EGIT] [core/efl] master 01/12: elm_fileselector: lets use the new event
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7fddb1ea1aa03292e2ecf2436ccc9c91c27ef465 commit 7fddb1ea1aa03292e2ecf2436ccc9c91c27ef465 Author: Marcel HollerbachDate: Thu Nov 16 23:13:42 2017 +0100 elm_fileselector: lets use the new event --- src/lib/elementary/elc_fileselector.c | 24 +++- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c index 3e762d04aa..327168b4ff 100644 --- a/src/lib/elementary/elc_fileselector.c +++ b/src/lib/elementary/elc_fileselector.c @@ -1518,19 +1518,19 @@ _anchors_undo(void *data) } static void -_on_text_focused(void *data, const Efl_Event *event EINA_UNUSED) +_on_text_focus_changed(void *data, const Efl_Event *event) { ELM_FILESELECTOR_DATA_GET(data, sd); - if (!sd->path_entry_idler) - sd->path_entry_idler = ecore_idler_add(_anchors_undo, data); -} - -static void -_on_text_unfocused(void *data, const Efl_Event *event EINA_UNUSED) -{ - ELM_FILESELECTOR_DATA_GET(data, sd); - _anchors_do(data, sd->path); + if (efl_ui_focus_object_focus_get(event->object)) + { +if (!sd->path_entry_idler) + sd->path_entry_idler = ecore_idler_add(_anchors_undo, data); + } + else + { +_anchors_do(data, sd->path); + } } static void @@ -1971,9 +1971,7 @@ _elm_fileselector_efl_canvas_group_group_add(Eo *obj, Elm_Fileselector_Data *pri efl_event_callback_add (en, ELM_ENTRY_EVENT_ANCHOR_CLICKED, _anchor_clicked, obj); efl_event_callback_add - (en, EFL_UI_WIDGET_EVENT_FOCUSED, _on_text_focused, obj); - efl_event_callback_add - (en, EFL_UI_WIDGET_EVENT_UNFOCUSED, _on_text_unfocused, obj); + (en, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _on_text_focus_changed, obj); efl_event_callback_add (en, ELM_ENTRY_EVENT_ACTIVATED, _on_text_activated, obj); --
[EGIT] [core/efl] master 08/12: elm_widget: move event emission to a callback
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6b85f7dbdf206c71c7c5a13027a6abf5d61e8364 commit 6b85f7dbdf206c71c7c5a13027a6abf5d61e8364 Author: Marcel HollerbachDate: Mon Nov 20 22:22:02 2017 +0100 elm_widget: move event emission to a callback the callback gets triggered if the new event got triggered. --- src/lib/elementary/elm_widget.c | 14 +++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index 5186fea304..8d36ee3535 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -5030,6 +5030,15 @@ elm_widget_tree_dot_dump(const Evas_Object *top, #endif } +static void +_focus_event_changed(void *data EINA_UNUSED, const Efl_Event *event) +{ + if (efl_ui_focus_object_focus_get(event->object)) + efl_event_callback_legacy_call(event->object, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); + else + efl_event_callback_legacy_call(event->object, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); +} + EOLIAN static Eo * _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSED) { @@ -5048,6 +5057,8 @@ _elm_widget_efl_object_constructor(Eo *obj, Elm_Widget_Smart_Data *sd EINA_UNUSE efl_access_role_set(obj, EFL_ACCESS_ROLE_UNKNOWN); + efl_event_callback_add(obj, EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _focus_event_changed, NULL); + return obj; } @@ -5108,17 +5119,14 @@ EOLIAN static Eina_Bool _elm_widget_on_focus_update(Eo *obj, Elm_Widget_Smart_Data *sd, Elm_Object_Item *item EINA_UNUSED) { Eina_Bool focused; - const Efl_Event_Description *desc; if (!elm_widget_can_focus_get(obj)) return EINA_FALSE; focused = elm_widget_focus_get(obj); - desc = focused ? EFL_UI_WIDGET_EVENT_FOCUSED : EFL_UI_WIDGET_EVENT_UNFOCUSED; if (!sd->resize_obj) evas_object_focus_set(obj, focused); - efl_event_callback_legacy_call(obj, desc, NULL); if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj)) efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, focused); --
[EGIT] [core/efl] master 03/12: elm_popup: lets use the new event
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a2eda0665e3a59619e41abf6e0bb77b9dcb2d69c commit a2eda0665e3a59619e41abf6e0bb77b9dcb2d69c Author: Marcel HollerbachDate: Thu Nov 16 23:24:15 2017 +0100 elm_popup: lets use the new event --- src/lib/elementary/elc_popup.c | 23 ++- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/lib/elementary/elc_popup.c b/src/lib/elementary/elc_popup.c index b2de973bbd..5889f4e728 100644 --- a/src/lib/elementary/elc_popup.c +++ b/src/lib/elementary/elc_popup.c @@ -894,19 +894,18 @@ _elm_popup_item_elm_widget_item_signal_emit(Eo *eo_it EINA_UNUSED, Elm_Popup_Ite } static void -_item_focused_cb(void *data, const Efl_Event *event EINA_UNUSED) +_item_focus_change(void *data, const Efl_Event *event EINA_UNUSED) { Elm_Popup_Item_Data *it = data; - efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_FOCUSED, EO_OBJ(it)); -} - -static void -_item_unfocused_cb(void *data, const Efl_Event *event EINA_UNUSED) -{ - Elm_Popup_Item_Data *it = data; - - efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_UNFOCUSED, EO_OBJ(it)); + if (efl_ui_focus_object_focus_get(event->object)) + { +efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_FOCUSED, EO_OBJ(it)); + } + else + { +efl_event_callback_legacy_call(WIDGET(it), ELM_POPUP_EVENT_ITEM_UNFOCUSED, EO_OBJ(it)); + } } EOLIAN static Eo * @@ -937,9 +936,7 @@ _item_new(Elm_Popup_Item_Data *it) _item_select_cb, it); evas_object_size_hint_align_set(VIEW(it), EVAS_HINT_FILL, EVAS_HINT_FILL); efl_event_callback_add - (VIEW(it), EFL_UI_WIDGET_EVENT_FOCUSED, _item_focused_cb, it); -efl_event_callback_add - (VIEW(it), EFL_UI_WIDGET_EVENT_UNFOCUSED, _item_unfocused_cb, it); + (VIEW(it), EFL_UI_FOCUS_OBJECT_EVENT_FOCUS_CHANGED, _item_focus_change, it); evas_object_show(VIEW(it)); } } --
[EGIT] [core/efl] master 05/12: elm_multibuttonentry: on_focus_update is not needed anymore
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1639a9e6bf30269eb5a8b684d5d5dc586be8e7b7 commit 1639a9e6bf30269eb5a8b684d5d5dc586be8e7b7 Author: Marcel HollerbachDate: Mon Nov 20 21:07:35 2017 +0100 elm_multibuttonentry: on_focus_update is not needed anymore the widget itself never gets focus, the elements of the button are getting them. MBE is basically just a box. The text input for the entry is setted by elm_entry itself when it gets focus. The legacy "focused" event is emitted somewhere seperatly. --- src/lib/elementary/efl_ui_multibuttonentry.c | 45 --- src/lib/elementary/efl_ui_multibuttonentry.eo | 1 - 2 files changed, 46 deletions(-) diff --git a/src/lib/elementary/efl_ui_multibuttonentry.c b/src/lib/elementary/efl_ui_multibuttonentry.c index 51ea55123e..3a7cd3964a 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.c +++ b/src/lib/elementary/efl_ui_multibuttonentry.c @@ -351,51 +351,6 @@ _view_update(Efl_Ui_Multibuttonentry_Data *sd) _visual_guide_text_set(obj); } -EOLIAN static Eina_Bool -_efl_ui_multibuttonentry_elm_widget_on_focus_update(Eo *obj, Efl_Ui_Multibuttonentry_Data *sd, Elm_Object_Item *item EINA_UNUSED) -{ - if (elm_widget_focus_get(obj)) - { -// ACCESS -if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) goto end; - -if (sd->editable) - { - if ((sd->selected_it)) - { - elm_layout_signal_emit(VIEW(sd->selected_it), "elm,state,focused", "elm"); - elm_object_focus_set(VIEW(sd->selected_it), EINA_TRUE); - efl_ui_text_input_panel_show(sd->entry); - } - else if (((!sd->selected_it) || (!eina_list_count(sd->items - { - _view_update(sd); - efl_ui_text_input_panel_show(sd->entry); - } - } - -efl_event_callback_legacy_call - (obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); - } - else - { -if (sd->editable) - { - _view_update(sd); - efl_ui_text_input_panel_hide(sd->entry); - } - -if (sd->selected_it) - elm_layout_signal_emit(VIEW(sd->selected_it), "elm,state,unfocused", "elm"); - -efl_event_callback_legacy_call - (obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); - } - -end: - return EINA_TRUE; -} - static void _item_del(Elm_Multibuttonentry_Item_Data *item) { diff --git a/src/lib/elementary/efl_ui_multibuttonentry.eo b/src/lib/elementary/efl_ui_multibuttonentry.eo index fb60d2ebcc..a4c2bb0a83 100644 --- a/src/lib/elementary/efl_ui_multibuttonentry.eo +++ b/src/lib/elementary/efl_ui_multibuttonentry.eo @@ -164,7 +164,6 @@ class Efl.Ui.Multibuttonentry (Efl.Ui.Layout, Efl.Ui.Clickable, Efl.Ui.Format) Efl.Object.constructor; Elm.Widget.theme_apply; Elm.Widget.on_access_update; - Elm.Widget.on_focus_update; Efl.Ui.Translatable.translation_update; Elm.Widget.widget_event; Efl.Access.children { get; } --
[EGIT] [core/efl] master 06/12: elm_layout: call the super for calling the events and methods
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fce2e7fdb0e99a074adc5d82882c9439fb928bce commit fce2e7fdb0e99a074adc5d82882c9439fb928bce Author: Marcel HollerbachDate: Mon Nov 20 21:12:34 2017 +0100 elm_layout: call the super for calling the events and methods this simplifies the code --- src/lib/elementary/efl_ui_layout.c | 9 +++-- 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/lib/elementary/efl_ui_layout.c b/src/lib/elementary/efl_ui_layout.c index e82ef5f19c..be0e5c9642 100644 --- a/src/lib/elementary/efl_ui_layout.c +++ b/src/lib/elementary/efl_ui_layout.c @@ -397,18 +397,15 @@ _efl_ui_layout_elm_widget_on_focus_update(Eo *obj, Efl_Ui_Layout_Data *_pd EINA_ { elm_layout_signal_emit(obj, "elm,action,focus", "elm"); evas_object_focus_set(wd->resize_obj, EINA_TRUE); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_FOCUSED, NULL); -if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj)) - efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_TRUE); } else { elm_layout_signal_emit(obj, "elm,action,unfocus", "elm"); evas_object_focus_set(wd->resize_obj, EINA_FALSE); -efl_event_callback_legacy_call(obj, EFL_UI_WIDGET_EVENT_UNFOCUSED, NULL); -if (_elm_config->atspi_mode && !elm_widget_child_can_focus_get(obj)) - efl_access_state_changed_signal_emit(obj, EFL_ACCESS_STATE_FOCUSED, EINA_FALSE); } + + efl_ui_widget_on_focus_update(efl_super(obj, MY_CLASS), item); + if (efl_isa(wd->resize_obj, EDJE_OBJECT_CLASS)) edje_object_message_signal_process(wd->resize_obj); --
[EGIT] [tools/examples] master 03/03: core: Add mising summary
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=95490864329c0bc884e6e91fed76f99df1f71cde commit 95490864329c0bc884e6e91fed76f99df1f71cde Author: Andy WilliamsDate: Tue Nov 21 19:10:05 2017 + core: Add mising summary --- reference/c/core/src/core_loop.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reference/c/core/src/core_loop.c b/reference/c/core/src/core_loop.c index 09414a4..bff4711 100644 --- a/reference/c/core/src/core_loop.c +++ b/reference/c/core/src/core_loop.c @@ -11,7 +11,11 @@ /* * Efl Core Loop examples. * - * TODO + * A collection of loop examples. First we print out loop information and + * show how loops are inherited. + * + * Then we move on to the Efl.Loop.Fd and show how you could use a loop to + * read or write to an FD without blocking. */ static int _count = 0; --
[EGIT] [tools/examples] master 01/03: core: Add first efl_core reference, loop
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=981d59e32d5a243fdef3cba3775374f7ab67d53b commit 981d59e32d5a243fdef3cba3775374f7ab67d53b Author: Andy WilliamsDate: Tue Nov 21 18:45:33 2017 + core: Add first efl_core reference, loop --- reference/c/core/meson.build | 12 reference/c/core/src/core_loop.c | 147 +++ reference/c/core/src/meson.build | 22 ++ 3 files changed, 181 insertions(+) diff --git a/reference/c/core/meson.build b/reference/c/core/meson.build new file mode 100644 index 000..453b9a3 --- /dev/null +++ b/reference/c/core/meson.build @@ -0,0 +1,12 @@ +project( + 'efl-reference-core', 'c', + version : '0.0.1', + default_options: [ 'c_std=gnu99', 'warning_level=2' ], + meson_version : '>= 0.38.0') + +eina = dependency('eina', version : '>=1.20.99') +efl = dependency('efl-core', version : '>=1.20.99') + +inc = include_directories('.') +subdir('src') + diff --git a/reference/c/core/src/core_loop.c b/reference/c/core/src/core_loop.c new file mode 100644 index 000..09414a4 --- /dev/null +++ b/reference/c/core/src/core_loop.c @@ -0,0 +1,147 @@ +#define EFL_EO_API_SUPPORT 1 +#define EFL_BETA_API_SUPPORT 1 + +#include + +#include +#include + +#define FILENAME "/tmp/core_loop_test.txt" + +/* + * Efl Core Loop examples. + * + * TODO + */ + +static int _count = 0; +static void _loop_fd_read(); + +static void +_print_loop(Efl_Loop *loop, const char *label) +{ + printf("%s loop found at %p \"%s\"\n", label, loop, efl_name_get(loop)); +} + +static void +_loop_current(Efl_Loop *current) +{ + Efl_Loop *loop; + + loop = current; + _print_loop(loop, "Current"); + loop = efl_loop_main_get(current); + _print_loop(loop, "Application Main"); + + loop = efl_add(EFL_LOOP_USER_CLASS, NULL, + efl_name_set(efl_added, "User Loop")); + _print_loop(loop, "Child"); + efl_del(loop); +} + +static void +_loop_fd_read_cb(void *data EINA_UNUSED, const Efl_Event *event) +{ + Efl_Loop_Fd *fd; + char buf[7]; + int len; + + fd = event->object; + + len = read(efl_loop_fd_file_get(fd), , sizeof(buf)); + + // here we are exiting + if (len <= 0) + { +efl_del(fd); +unlink(FILENAME); + +efl_exit(0); +return; + } + + buf[len] = 0; + printf("READ %s", buf); +} + +static void +_loop_fd_write_cb(void *data EINA_UNUSED, const Efl_Event *event) +{ + Efl_Loop_Fd *fd; + + fd = event->object; + + // we have outputted all we want to, remove the write handler + // start checking for read availability instead + if (_count >= 5) + { +efl_del(fd); + +_loop_fd_read(); +return; + } + + _count++; + printf("WRITING %d\n", _count); + write(efl_loop_fd_file_get(fd), eina_slstr_printf("TEST %d\n", _count), 7); +} + +static void +_loop_fd_write() +{ + Efl_Loop_Fd *loop_fd; + FILE *file; + int fd; + + loop_fd = efl_add(EFL_LOOP_FD_CLASS, NULL, + efl_name_set(efl_added, "Write Loop")); + + efl_event_callback_add(loop_fd, EFL_LOOP_FD_EVENT_WRITE, _loop_fd_write_cb, NULL); + + file = fopen(FILENAME, "w+"); + fd = fileno(file); + + printf("Opened file with fd %d\n", fd); + efl_loop_fd_file_set(loop_fd, fd); + +} + +static void +_loop_fd_read() +{ + Efl_Loop_Fd *loop_fd; + FILE *file; + int fd; + + loop_fd = efl_add(EFL_LOOP_FD_CLASS, NULL, + efl_name_set(efl_added, "Read Loop")); + + efl_event_callback_add(loop_fd, EFL_LOOP_FD_EVENT_READ, _loop_fd_read_cb, NULL); + + file = fopen("/tmp/core_loop_test.txt", "r"); + fd = fileno(file); + + printf("Opened file with fd %d\n", fd); + efl_loop_fd_file_set(loop_fd, fd); +} + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev) +{ + const Efl_Version *version; + + version = efl_loop_efl_version_get(ev->object); + printf("Running on EFL version %d.%d.%d [%s]\n", version->major, version->minor, +version->micro, version->build_id); + printf("\n"); + + _loop_current(ev->object); + printf("\n"); + + _loop_fd_write(); + // we will call _loop_fd_read() once write is complete! + + // we will exit from the end of the read loop +} +EFL_MAIN() + diff --git a/reference/c/core/src/meson.build b/reference/c/core/src/meson.build new file mode 100644 index 000..dd362e1 --- /dev/null +++ b/reference/c/core/src/meson.build @@ -0,0 +1,22 @@ +deps = [eina, efl] + +executable('efl_reference_core_loop', + files(['core_loop.c']), + dependencies : deps, + include_directories : inc, + install : true +) + +executable('efl_reference_core_exe', + files(['core_exe.c']), + dependencies : deps, + include_directories : inc, + install : true +) + +executable('efl_reference_core_thread', + files(['core_thread.c']), + dependencies : deps, + include_directories : inc, + install :
[EGIT] [tools/examples] master 02/03: core: Add an io example (copier)
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=b6c382900c5d0579b6cc6323c37069a056061524 commit b6c382900c5d0579b6cc6323c37069a056061524 Author: Andy WilliamsDate: Tue Nov 21 19:07:45 2017 + core: Add an io example (copier) --- reference/c/core/src/core_io.c | 93 reference/c/core/src/meson.build | 10 + 2 files changed, 95 insertions(+), 8 deletions(-) diff --git a/reference/c/core/src/core_io.c b/reference/c/core/src/core_io.c new file mode 100644 index 000..64add9c --- /dev/null +++ b/reference/c/core/src/core_io.c @@ -0,0 +1,93 @@ +#define EFL_EO_API_SUPPORT 1 +#define EFL_BETA_API_SUPPORT 1 + +#include + +#include +#include + +/* + * Efl.IO examples. + * + * This IO example simply copies data from a source (stdin) to a + * destination (stdout) using an Efl.Io.Copier. + */ + +Eo *_copier = NULL; + +static void +_copier_done(void *data EINA_UNUSED, const Efl_Event *event) +{ + fprintf(stderr, "INFO: %s done\n", efl_name_get(event->object)); + + efl_exit(EXIT_SUCCESS); +} + +static void +_copier_error(void *data EINA_UNUSED, const Efl_Event *event) +{ + const Eina_Error *perr = event->info; + + fprintf(stderr, "INFO: %s error: #%d '%s'\n", + efl_name_get(event->object), *perr, eina_error_msg_get(*perr)); + + efl_exit(EXIT_FAILURE); +} + +EFL_CALLBACKS_ARRAY_DEFINE(copier_cbs, + { EFL_IO_COPIER_EVENT_DONE, _copier_done }, + { EFL_IO_COPIER_EVENT_ERROR, _copier_error }); + +EAPI void +efl_pause(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ +} + +EAPI void +efl_resume(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ +} + +EAPI void +efl_terminate(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ + if (!_copier) + return; + + efl_del(efl_io_copier_source_get(_copier)); + efl_del(efl_io_copier_destination_get(_copier)); + efl_del(_copier); +} + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev) +{ + Eo *input, *output, *loop; + + /* +* some objects such as the Efl.Io.Copier depend on main loop, +* thus their parent must be a loop provider. We use the loop itself. +*/ + loop = ev->object; + + // set up our objects to copy, use stdin and stdout + input = efl_add(EFL_IO_STDIN_CLASS, loop); + output = efl_add(EFL_IO_STDOUT_CLASS, loop); + + // copier: set up a copied from input to output + _copier = efl_add(EFL_IO_COPIER_CLASS, loop, + efl_name_set(efl_added, "Copier"), + efl_io_copier_source_set(efl_added, input), + efl_io_copier_destination_set(efl_added, output), + efl_event_callback_array_add(efl_added, copier_cbs(), NULL)); + if (!_copier) + { +fprintf(stderr, "ERROR: could not create Efl_Io_Copier\n"); +efl_exit(EXIT_FAILURE); + } + + printf("Type something here and press enter, it will be copied to stdout...\n"); + printf(" (press Ctrl-D to exit)\n"); +} +EFL_MAIN_EX() + diff --git a/reference/c/core/src/meson.build b/reference/c/core/src/meson.build index dd362e1..fae0d69 100644 --- a/reference/c/core/src/meson.build +++ b/reference/c/core/src/meson.build @@ -7,16 +7,10 @@ executable('efl_reference_core_loop', install : true ) -executable('efl_reference_core_exe', - files(['core_exe.c']), +executable('efl_reference_core_io', + files(['core_io.c']), dependencies : deps, include_directories : inc, install : true ) -executable('efl_reference_core_thread', - files(['core_thread.c']), - dependencies : deps, - include_directories : inc, - install : true -) --
[EGIT] [core/efl] master 01/01: gl_drm: Use the same gbm_device for multiple instances
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cbbac076f47e6cd0782abe0ec3957f867059800c commit cbbac076f47e6cd0782abe0ec3957f867059800c Author: Derek ForemanDate: Tue Nov 21 12:26:17 2017 -0600 gl_drm: Use the same gbm_device for multiple instances If we want to share a gl context (we do) between multiple instances of gl_drm, we need to make sure they all use the same gbm_device. This resolves a blocker for multi-output on the gl_drm backend. --- src/modules/evas/engines/gl_drm/evas_engine.c | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c index fd219bbd9b..39f5442218 100644 --- a/src/modules/evas/engines/gl_drm/evas_engine.c +++ b/src/modules/evas/engines/gl_drm/evas_engine.c @@ -34,6 +34,8 @@ int _extn_have_buffer_age = 1; static Eina_Bool initted = EINA_FALSE; static Eina_Bool dmabuf_present = EINA_FALSE; static int gl_wins = 0; +static struct gbm_device *gbm_dev = NULL; +static int gbm_dev_refs = 0; /* local function prototype types */ typedef void (*glsym_func_void)(); @@ -125,6 +127,13 @@ eng_gbm_init(Evas_Engine_Info_GL_Drm *info) int fd; if (!info) return EINA_FALSE; + if (gbm_dev) + { +info->info.gbm = gbm_dev; +gbm_dev_refs++; +return EINA_TRUE; + } + fd = ecore_drm2_device_fd_get(info->info.dev); if (!(info->info.gbm = gbm_create_device(fd))) { @@ -132,6 +141,8 @@ eng_gbm_init(Evas_Engine_Info_GL_Drm *info) return EINA_FALSE; } + gbm_dev = info->info.gbm; + gbm_dev_refs = 1; return EINA_TRUE; } @@ -142,8 +153,13 @@ eng_gbm_shutdown(Evas_Engine_Info_GL_Drm *info) if (info->info.gbm) { -gbm_device_destroy(info->info.gbm); +gbm_dev_refs--; info->info.gbm = NULL; +if (!gbm_dev_refs) + { + gbm_device_destroy(gbm_dev); + gbm_dev = NULL; + } } return EINA_TRUE; --
[EGIT] [core/efl] feature/ecore_exe_formatting 01/01: ecore: reformat ecore_exe_posix.c
discomfitor pushed a commit to branch feature/ecore_exe_formatting. http://git.enlightenment.org/core/efl.git/commit/?id=a0a9468f4c1624b5e73e42f5012f01e921d6f80f commit a0a9468f4c1624b5e73e42f5012f01e921d6f80f Author: Mike BlumenkrantzDate: Tue Nov 21 12:24:51 2017 -0500 ecore: reformat ecore_exe_posix.c --- src/lib/ecore/ecore_exe_posix.c | 1413 --- 1 file changed, 708 insertions(+), 705 deletions(-) diff --git a/src/lib/ecore/ecore_exe_posix.c b/src/lib/ecore/ecore_exe_posix.c index 3cbba20f44..bebfce26a1 100644 --- a/src/lib/ecore/ecore_exe_posix.c +++ b/src/lib/ecore/ecore_exe_posix.c @@ -49,52 +49,54 @@ struct _ecore_exe_dead_exe char *cmd; }; -static inline void _ecore_exe_exec_it(const char *exe_cmd, +static inline void _ecore_exe_exec_it(const char *exe_cmd, Ecore_Exe_Flags flags); -static Eina_Bool _ecore_exe_data_generic_handler(void *data, +static Eina_Bool _ecore_exe_data_generic_handler(void *data, Ecore_Fd_Handler *fd_handler, - Ecore_Exe_Flags flags); -static Eina_Bool_ecore_exe_data_error_handler(void *data, - Ecore_Fd_Handler *fd_handler); -static Eina_Bool_ecore_exe_data_read_handler(void *data, - Ecore_Fd_Handler *fd_handler); -static Eina_Bool_ecore_exe_data_write_handler(void *data, - Ecore_Fd_Handler *fd_handler); -static void _ecore_exe_flush(Ecore_Exe *obj); -static Ecore_Exe *_ecore_exe_is_it_alive(pid_t pid); -static Eina_Bool_ecore_exe_make_sure_its_dead(void *data); -static Eina_Bool_ecore_exe_make_sure_its_really_dead(void *data); -static void _ecore_exe_dead_attach(Ecore_Exe *obj); + Ecore_Exe_Flags flags); +static Eina_Bool _ecore_exe_data_error_handler(void *data, + Ecore_Fd_Handler *fd_handler); +static Eina_Bool _ecore_exe_data_read_handler(void *data, +Ecore_Fd_Handler *fd_handler); +static Eina_Bool _ecore_exe_data_write_handler(void *data, + Ecore_Fd_Handler *fd_handler); +static void_ecore_exe_flush(Ecore_Exe *obj); +static Ecore_Exe *_ecore_exe_is_it_alive(pid_t pid); +static Eina_Bool _ecore_exe_make_sure_its_dead(void *data); +static Eina_Bool _ecore_exe_make_sure_its_really_dead(void *data); +static void_ecore_exe_dead_attach(Ecore_Exe *obj); static const char *shell = NULL; /* FIXME: This errno checking stuff should be put elsewhere for everybody to use. * For now it lives here though, just to make testing easier. */ -static int _ecore_exe_check_errno(int result, - const char *file, - int line); +static int _ecore_exe_check_errno(int result, + const char *file, + int line); -#define E_IF_NO_ERRNO(result, foo, ok) \ - while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) == -1) sleep(1); \ - if (ok) +#define E_IF_NO_ERRNO(result, foo, ok) \ + while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) == -1) \ +sleep(1); \ + if (ok) -#define E_NO_ERRNO(result, foo, ok) \ - while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) == -1) sleep(1) +#define E_NO_ERRNO(result, foo, ok) \ + while (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__)) == -1) \ +sleep(1) #define E_IF_NO_ERRNO_NOLOOP(result, foo, ok) \ if (((ok) = _ecore_exe_check_errno((result) = (foo), __FILE__, __LINE__))) static int -_ecore_exe_check_errno(int result, +_ecore_exe_check_errno(int result, const char *file EINA_UNUSED, - int line EINA_UNUSED) + int line EINA_UNUSED) { int saved_errno = errno; if (result == -1) - { - perror("*** errno reports "); + { +perror("*** errno reports "); /* What is currently supported - * * pipe @@ -150,63 +152,63 @@ _ecore_exe_check_errno(int result, *// Something failed, cleanup. * } */ - switch (saved_errno) - { -
[EGIT] [core/efl] master 01/01: ecore_wl2: Fix buffer manager refcounting
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9f3edead9d959ab86265f8d8ca1750a8ddf7ae4e commit 9f3edead9d959ab86265f8d8ca1750a8ddf7ae4e Author: Derek ForemanDate: Tue Nov 21 10:09:15 2017 -0600 ecore_wl2: Fix buffer manager refcounting commit 0cf806005e32827f174f42cba27192c47ed9c4a7 correctly fixed a leaked buffer. However, other code was already accounting for the leaked reference to the buffer manager, so an extra deref happened and broke the universe - but only on hardware that no developer has access to for testing. --- src/lib/ecore_wl2/ecore_wl2_buffer.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/ecore_wl2/ecore_wl2_buffer.c b/src/lib/ecore_wl2/ecore_wl2_buffer.c index 3aabe46858..8c4b0ff39e 100644 --- a/src/lib/ecore_wl2/ecore_wl2_buffer.c +++ b/src/lib/ecore_wl2/ecore_wl2_buffer.c @@ -583,7 +583,6 @@ _create_failed(void *data, struct zwp_linux_buffer_params_v1 *params) Ecore_Wl2_Display *ewd = data; zwp_linux_buffer_params_v1_destroy(params); - _buffer_manager_deref(); _buffer_manager_destroy(); ewd->wl.dmabuf = NULL; } --
[EGIT] [core/efl] master 01/04: elm_widget: dont use the inner var for searching the top widget
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8c68c85706e37ede02917970371dabde05403e0b commit 8c68c85706e37ede02917970371dabde05403e0b Author: Marcel HollerbachDate: Tue Nov 21 16:12:12 2017 +0100 elm_widget: dont use the inner var for searching the top widget you think there is only one elm_parent behind the elementary property parent? Oh no! Elm_Notify and Elm_Popup have theire own parent fields, and those fields are not returned when calleing elm_widget_parent_get, they are also not given to the elm_widget implementation of elm_widget_top_get, so a call to elm_widget_top_get stalls at elm.notify or elm.popup. fix T6389 --- src/lib/elementary/elm_widget.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/elm_widget.c b/src/lib/elementary/elm_widget.c index d735823d80..5186fea304 100644 --- a/src/lib/elementary/elm_widget.c +++ b/src/lib/elementary/elm_widget.c @@ -1927,10 +1927,11 @@ elm_widget_highlight_get(const Eo *obj) EOLIAN static Evas_Object* _elm_widget_widget_top_get(Eo *obj, Elm_Widget_Smart_Data *sd) { - if (sd->parent_obj) + Elm_Widget *parent = elm_widget_parent_get(obj); + if (parent) { -if (!efl_isa(sd->parent_obj, ELM_WIDGET_CLASS)) return NULL; -return efl_ui_widget_top_get(sd->parent_obj); +if (!efl_isa(parent, ELM_WIDGET_CLASS)) return NULL; +return efl_ui_widget_top_get(parent); } return obj; } --
[EGIT] [core/efl] master 04/04: efl_ui_focus_manager_calc: keep focus history arround
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e8cfdb5dcd921aa9793c5cc42d966b2af1ac3ef3 commit e8cfdb5dcd921aa9793c5cc42d966b2af1ac3ef3 Author: Marcel HollerbachDate: Tue Nov 21 16:15:46 2017 +0100 efl_ui_focus_manager_calc: keep focus history arround this now keeps items arround even if a explicit other widget was focused. This is usefull if we have a few logical items on the focus stack and you remove them. --- src/lib/elementary/efl_ui_focus_manager_calc.c | 9 ++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index c5e1d496f0..4e61fa1472 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -1344,8 +1344,8 @@ _request_subchild(Node *node) EOLIAN static void _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Efl_Ui_Focus_Object *focus) { - Node *node; - Efl_Ui_Focus_Object *last_focusable; + Node *node, *last; + Efl_Ui_Focus_Object *last_focusable = NULL; Efl_Ui_Focus_Manager *redirect_manager; Eo *focusable; Node_Type type; @@ -1409,7 +1409,9 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_ type = node->type; focusable = node->focusable; - last_focusable = _focus_stack_unfocus_last(pd); + last = eina_list_last_data_get(pd->focus_stack); + if (last) + last_focusable = last->focusable; //remove the object from the list and add it again pd->focus_stack = eina_list_remove(pd->focus_stack, node); @@ -1422,6 +1424,7 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_focus_set(Eo *obj, Efl_Ui_Focus_ if (node->type == NODE_TYPE_NORMAL) { //populate the new change +efl_ui_focus_object_focus_set(last_focusable, EINA_FALSE); efl_ui_focus_object_focus_set(node->focusable, EINA_TRUE); efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_FOCUSED, last_focusable); } --
[EGIT] [core/efl] master 02/04: efl_ui_focus_layer: rely on _manager_in_chain_set
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a58cc75e55cb18d9ab4c36310a23d2d90d9a9cd0 commit a58cc75e55cb18d9ab4c36310a23d2d90d9a9cd0 Author: Marcel HollerbachDate: Tue Nov 21 16:14:18 2017 +0100 efl_ui_focus_layer: rely on _manager_in_chain_set so we dont have to set the direct by hand anymore --- src/lib/elementary/efl_ui_focus_layer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_focus_layer.c b/src/lib/elementary/efl_ui_focus_layer.c index eee240523a..f46b7351d4 100644 --- a/src/lib/elementary/efl_ui_focus_layer.c +++ b/src/lib/elementary/efl_ui_focus_layer.c @@ -88,13 +88,15 @@ _efl_ui_focus_layer_enable_set(Eo *obj, Efl_Ui_Focus_Layer_Data *pd, Eina_Bool v { pd->registered_manager = elm_widget_top_get(obj); -efl_ui_focus_manager_redirect_set(pd->registered_manager, obj); +efl_ui_focus_manager_calc_register_logical(pd->registered_manager, obj, efl_ui_focus_manager_root_get(pd->registered_manager), obj); efl_ui_focus_manager_focus_set(pd->manager, obj); } else { if (efl_ui_focus_manager_redirect_get(pd->registered_manager) == obj) efl_ui_focus_manager_redirect_set(pd->registered_manager, NULL); + +efl_ui_focus_manager_calc_unregister(pd->registered_manager, obj); pd->registered_manager = NULL; } } --
[EGIT] [core/efl] master 03/04: efl_ui_focus_manager_calc: remove a logical item that caused a redirect
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=688e7001c158af51bb92e586f701a8833cc98b46 commit 688e7001c158af51bb92e586f701a8833cc98b46 Author: Marcel HollerbachDate: Tue Nov 21 16:15:02 2017 +0100 efl_ui_focus_manager_calc: remove a logical item that caused a redirect so we dont try to focus a logical item. --- src/lib/elementary/efl_ui_focus_manager_calc.c | 16 +++- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index d6f7bfac82..c5e1d496f0 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -895,15 +895,21 @@ _efl_ui_focus_manager_calc_efl_ui_focus_manager_redirect_set(Eo *obj, Efl_Ui_Foc efl_ui_focus_manager_reset_history(old_manager); + //we might have saved a logical element at the top, remove that if there is one + { + Node *n = NULL; + + n = eina_list_last_data_get(pd->focus_stack); + + if (n && n->type == NODE_TYPE_ONLY_LOGICAL && n->redirect_manager == old_manager) +pd->focus_stack = eina_list_remove(pd->focus_stack, n); + } + //adjust focus property of the most upper element { Node *n = NULL; - Eina_List *last; - /* focus the upper most element */ - last = eina_list_last(pd->focus_stack); - if (last) -n = eina_list_data_get(last); + n = eina_list_last_data_get(pd->focus_stack); if (n) { --
[EGIT] [website/www-content] master 01/01: Wiki page eo-inherit.md changed with summary [] by Nate Drake
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=c1b10a65081c542981a62ea2fd68c633d247ff8e commit c1b10a65081c542981a62ea2fd68c633d247ff8e Author: Nate DrakeDate: Tue Nov 21 07:09:02 2017 -0800 Wiki page eo-inherit.md changed with summary [] by Nate Drake --- pages/develop/tutorial/c/eo-inherit.md.txt | 57 +++--- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/pages/develop/tutorial/c/eo-inherit.md.txt b/pages/develop/tutorial/c/eo-inherit.md.txt index df83932e..987cb49b 100644 --- a/pages/develop/tutorial/c/eo-inherit.md.txt +++ b/pages/develop/tutorial/c/eo-inherit.md.txt @@ -12,11 +12,11 @@ This tutorial shows how to inherit from a class in Eolian. It also describes how ## Prerequisites ## * This tutorial builds on top of the ``Example.Rectangle`` class developed in [Creating New Classes with Eolian](eo-classes.md). -* The [Hello World](hello-world.md) tutorial explains how to write an application using the EFL. +* The [Hello World](hello-world.md) tutorial explains how to write an application using EFL. ## Step One: Creating a Derived Class ## -Copy all the ``example_rectangle.*`` files you created in the [Creating New Classes with Eolian](eo-classes.md) tutorial. There should be 4 of them: The Eolian file (``.eo``), the implementation file (``.c``) and two autogenerated files (``.eo.h`` and ``.eo.c``). Also copy the main file (``eo_classes_main.c``) and rename it to ``eo_inherit_main.c``, for consistency with the name of this tutorial. +Copy all the ``example_rectangle.*`` files you created in the [Creating New Classes with Eolian](eo-classes.md) tutorial. There should be 4 of them: The Eolian file (``.eo``), the implementation file (``.c``) and two autogenerated files (``.eo.h`` and ``.eo.c``). Make sure to copy the main file (``eo_classes_main.c``) and rename it to ``eo_inherit_main.c`` for consistency with the name of this tutorial. Now you will create a new class, named ``Example.Square`` which will inherit from ``Example.rectangle``. The theory states that squares are a particular kind of rectangles in which the width and the height are equal. Therefore, the ``Example.Square`` class will *override* ``Example.Rectangle``'s ``width`` and ``height`` setters to ensure that those two variables have always the same value. @@ -31,11 +31,11 @@ class Example.Square (Example.Rectangle) { } ``` -As you can see, it is derived from ``Example.Rectangle``. Regular classes must derive from the ``Efl.Object``, but in this case, you get that automatically, since ``Example.Rectangle`` already derives from ``Efl.Object``. +As you can see this is derived from ``Example.Rectangle``. Regular classes must be derived from ``Efl.Object`` but in this case you get that automatically, since ``Example.Rectangle`` already is already derived from ``Efl.Object``. -You can also notice that this class does not provide any new method or property (there is no ``methods`` block). It only implements two properties, which currently belong to its parent class (``Example.Rectangle.width`` and ``Example.Rectangle.height``). Furthermore, only the setters for these properties are implemented: Reads of these properties will be routed to the getter in the parent class. +You can also notice that this class does not provide any new method or property (there is no ``methods`` block). It only implements two properties, which currently belong to its parent class (``Example.Rectangle.width`` and ``Example.Rectangle.height``). Furthermore only the setters for these properties are implemented: Reads of these properties will be routed to the getter in the parent class. -Next, turn the Eolian description into C files with the ``eolian_gen`` command (as seen in the previous tutorial). Be careful, though, there is a new parameter in use in this example: +Next turn the Eolian description into C files with the ``eolian_gen`` command (as seen in the previous tutorial). Be careful, as there's a new parameter in use in this example: ```bash eolian_gen -gchi example_square.eo -I . @@ -43,13 +43,13 @@ eolian_gen -gchi example_square.eo -I . The ``-I`` parameter tells ``eolian_gen`` where to look for other Eolian files, in case it needs the description of a class it does not know about. In this tutorial, ``Example.Square`` needs the description of ``Example.Rectangle`` which resides in the ``example_rectangle.eo`` file. This file is in the same folder as ``example_square.eo``, the current folder, therefore, the final command requires a ``-I .`` (The dot indicates the current folder). -This will create the boilerplate files (``.eo.h`` and ``.eo.c``) and the implementation file which you will fill in the next step. +This will create the boilerplate files (``.eo.h`` and ``.eo.c``) and the implementation file, which you will complete in the
[EGIT] [website/www-content] master 01/01: Wiki page git-guide.md changed with summary [] by Mike Blumenkrantz
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=03a1f6cd9c488bec31b33be5e2c5db11d15a5286 commit 03a1f6cd9c488bec31b33be5e2c5db11d15a5286 Author: Mike BlumenkrantzDate: Tue Nov 21 07:09:06 2017 -0800 Wiki page git-guide.md changed with summary [] by Mike Blumenkrantz --- pages/contrib/devs/git-guide.md.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/contrib/devs/git-guide.md.txt b/pages/contrib/devs/git-guide.md.txt index 612ae211..98bfaa39 100644 --- a/pages/contrib/devs/git-guide.md.txt +++ b/pages/contrib/devs/git-guide.md.txt @@ -143,7 +143,7 @@ $ git push origin --delete devs/{devname}/{branch} ### Feature Branches ### -Anyone with full commit access can create, manage, or delete a feature branch for a repository. The naming must be ``feature/{name}`` where ``{name}`` is the name of the feature. Feature branches can be pushed to by anyone with any form of commit access, but they cannot be rewritten (ie. no ``rebase -i``). +Anyone with full commit access can create, manage, or delete a feature branch for a repository. The naming must be ``feature/{name}`` where ``{name}`` is the name of the feature. Feature branches can be pushed to by anyone with any form of commit access (including probies), but they cannot be rewritten (ie. no ``rebase -i``). The purpose of a feature branch is to continue the collaborative development of a feature which has already reached the state of being functional during initial development in a developer branch; feature branches should be considered the "alpha release" state for any significant feature prior to merging it to master. --
[EGIT] [core/efl] master 02/02: edje_cc: Not reset inherit_script during group inherit
conr2d pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=eeb2809d9e0d6fd9ea30d1555946d4ff384791dc commit eeb2809d9e0d6fd9ea30d1555946d4ff384791dc Author: Jeeyong UmDate: Tue Nov 21 23:51:21 2017 +0900 edje_cc: Not reset inherit_script during group inherit If group inherits after setting "inherit_script: 1;", inherit_script is overwritten by the value of parent group. However, inherit_script indicates user wants to inherit script in this context, it should not be initialized as false. --- src/bin/edje/edje_cc_handlers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 74e5ad9c0d..c32609b1df 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -5034,7 +5034,8 @@ st_collections_group_inherit(void) pcp = (Edje_Part_Collection_Parser *)pc; pcp2 = (Edje_Part_Collection_Parser *)pc2; pcp->default_mouse_events = pcp2->default_mouse_events; - pcp->inherit_script = pcp2->inherit_script; + if (pcp2->inherit_script) + pcp->inherit_script = pcp2->inherit_script; /* as of 7 April 2014, target groups cannot be modified and are not freed. * this code will break if that ever changes. --
[EGIT] [core/efl] master 01/02: edje_cc: Fix successive script inheritance
conr2d pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cf24e714ea8cdffc084969b67d0c1c48b53a4bac commit cf24e714ea8cdffc084969b67d0c1c48b53a4bac Author: Jeeyong UmDate: Tue Nov 21 23:48:28 2017 +0900 edje_cc: Fix successive script inheritance --- src/bin/edje/edje_cc_script.c | 29 +++-- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/src/bin/edje/edje_cc_script.c b/src/bin/edje/edje_cc_script.c index 840945ed73..dca9fef953 100644 --- a/src/bin/edje/edje_cc_script.c +++ b/src/bin/edje/edje_cc_script.c @@ -46,16 +46,13 @@ code_parse(Code *code) Eina_List *l; int id; - if (code->is_lua) return; + if (code->is_lua || code->parsed) return; id = eina_list_data_idx(codes, code); pcp = eina_list_nth(edje_collections, id); EINA_LIST_FOREACH(pcp->base_codes, l, base) - { -if (!base->parsed) - code_parse(base); - } + code_parse(base); if (code->shared) code_parse_internal(code); @@ -393,21 +390,6 @@ script_rewrite(Code *code) } if (count) eina_strbuf_append(buf, ";\n"); - -count = 0; -EINA_LIST_FOREACH(vars, l, sym) - { - if (sym->is_public) continue; - - if (count++) - eina_strbuf_append(buf, ", "); - - if (sym->tag) - eina_strbuf_append_printf(buf, "%s:", sym->tag); - eina_strbuf_append(buf, sym->name); - } -if (count) - eina_strbuf_append(buf, ";\n"); } if (func) @@ -460,6 +442,9 @@ script_rewrite(Code *code) code->original = strdup(code->shared); eina_strbuf_free(buf); - eina_list_free(vars); - eina_list_free(func); + eina_list_free(code->vars); + eina_list_free(code->func); + + code->vars = vars; + code->func = func; } --
[EGIT] [website/www-content] master 02/03: Merge branch 'master' of git+ssh://git.enlightenment.org/website/www-content
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=5a7a719feb4883f8bd840b0582ed9b81734226f7 commit 5a7a719feb4883f8bd840b0582ed9b81734226f7 Merge: e06f7309 bdc31297 Author: www.enlightenment.orgDate: Tue Nov 21 04:18:50 2017 -0800 Merge branch 'master' of git+ssh://git.enlightenment.org/website/www-content --
[EGIT] [website/www-content] master 03/03: Wiki page eo-inherit.md changed with summary [] by Nate Drake
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=0db38ecdd4c4aa8385a8be9e095d73416b5c6e4f commit 0db38ecdd4c4aa8385a8be9e095d73416b5c6e4f Author: Nate DrakeDate: Tue Nov 21 06:24:32 2017 -0800 Wiki page eo-inherit.md changed with summary [] by Nate Drake --- pages/develop/tutorial/c/eo-inherit.md.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pages/develop/tutorial/c/eo-inherit.md.txt b/pages/develop/tutorial/c/eo-inherit.md.txt index 27b61c20..df83932e 100644 --- a/pages/develop/tutorial/c/eo-inherit.md.txt +++ b/pages/develop/tutorial/c/eo-inherit.md.txt @@ -1,10 +1,11 @@ --- ~~Title: Class Inheritance with Eolian~~ +~~NOCACHE~~ --- # Class Inheritance with Eolian # -The [Creating New Classes](eo-classes.md) tutorial explained how to define new classes using Eolian. New classes, though, don't need to start from scratch. In fact, it is common practice in *Object Oriented Programming* to (OOP) extend the functionality of an existing class by *inheriting* from it and creating a new one. +The [Creating New Classes](eo-classes.md) tutorial explained how to define new classes using Eolian. New classes don't need to start from scratch however. In fact, it is common practice in *Object Oriented Programming (OOP)* to extend the functionality of an existing class by *inheriting* from it and creating a new one. This tutorial shows how to inherit from a class in Eolian. It also describes how derived classes can access their parent's public and private data. --
[EGIT] [website/www-content] master 01/03: re-add file that somehow got deleted by mistake
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=e06f73093b359c5ed5248df29e65dc0bbbebf479 commit e06f73093b359c5ed5248df29e65dc0bbbebf479 Author: rootDate: Tue Nov 21 04:17:06 2017 -0800 re-add file that somehow got deleted by mistake --- pages/develop/tutorial/c/eo-classes.md.txt | 372 + 1 file changed, 372 insertions(+) diff --git a/pages/develop/tutorial/c/eo-classes.md.txt b/pages/develop/tutorial/c/eo-classes.md.txt new file mode 100644 index ..c21280c6 --- /dev/null +++ b/pages/develop/tutorial/c/eo-classes.md.txt @@ -0,0 +1,372 @@ +--- +~~Title: Creating New Classes with Eolian~~ +--- + +# Creating New Classes with Eolian # + +The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how to create new classes so new kinds of objects can be instantiated. + +You'll learn how to describe classes using the Eolian language and then further customize them with class-specific code. You will also master the basics of class inheritance with Eolian. + +## Prerequisites ## + +* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo object creation and reference counting. +* The [Hello World](hello-world.md) tutorial details how to write a simple application using EFL. + +## Eolian Files and eolian_gen ## + +Each class in EFL is described in an *Eolian file*, with the same name as the class and extension *.eo*. Eolian files are plain text files that contain, among other things, the name of the described class and the list of its properties and methods, along with their parameters and return values. + +Most importantly, this class description is independent of any programming language and can be used to generate automatic bindings and boiler plate code for other programming languages. With this automatically generated code you only need to write the details of your implementation in the language of your choice. + +The code generator for the C language is ``eolian_gen``, which is included in your EFL installation. So far, it is the only language available but there are plans to support more in the near future. + +You can invoke ``eolian_gen`` like so: + +```bash +eolian_gen -gchi my_new_class.eo +``` + +This generates three files: + +* ``my_new_class.eo.h``: **Header file** including all the method signatures related to your class. In particular, it contains the class symbol you need to pass to ``efl_add()``, so always include this file if you want to use your class. +* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry about. It is automatically included from the implementation file (next one). +* ``my_new_class.c``: The **implementation file**. It initially contains the empty bodies for all the methods you need to implement in your class. This is the only file you need to modify and include in your builds, as you will see in this tutorial. + +The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the Header file and the Implementation file. + +In summary, for each new class you create you must: + +1. Describe the class with an ``.eo`` file and call ``eolian_gen``. +2. Add your code to the implementation file (``my_new_class.c``). +3. Add the implementation file to your build. +4. Include the header file (``my_new_class.eo.h``) from your application to use the new class. + +The rest of the tutorial shows a practical example which will illustrate this procedure. + +## Step One: Creating a Simple Class Description ## + +You will now create an Eolian file for a class named ``Example.Rectangle``. The file **must** be called ``examples_rectangle.eo``. + +This class will represent a rectangle shape, so it will have two properties, the ``width`` and ``height`` of the rectangle, which can be read and written. + +Start with the class name and the list of its parent classes in parentheses: + +``` +class Example.Rectangle (Efl.Object) { +} +``` + +The only parent class is ``Efl.Object``, which is mandatory for regular classes (exceptions like *Interfaces* will be dealt with later). + +Next add a method declaration block, wherein you'll list the methods and properties of your class: + +``` +class Example.Rectangle (Efl.Object) { + methods { + } +} +``` + +Now add a property named ``width`` inside the ``methods`` block, which you can ``set``, ``get`` and whose only value is an ``int``: + +``` + @property width { + set { + } + get { + } + values { +width: int; + } + } +``` + +Next do the same for the ``height`` property, right after the ``width`` block: + +``` + @property height { + set { + } + get { + } + values { +height: int; + } + } +``` +
[EGIT] [website/www-content] master 01/01: re-add file that somehow got deleted by mistake
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=bdc31297aff5cae8e6a1241d9a9b209be0fabfaa commit bdc31297aff5cae8e6a1241d9a9b209be0fabfaa Author: Andy WilliamsDate: Tue Nov 21 12:18:06 2017 + re-add file that somehow got deleted by mistake --- pages/develop/tutorial/c/eo-classes.md.txt | 372 + 1 file changed, 372 insertions(+) diff --git a/pages/develop/tutorial/c/eo-classes.md.txt b/pages/develop/tutorial/c/eo-classes.md.txt new file mode 100644 index ..c21280c6 --- /dev/null +++ b/pages/develop/tutorial/c/eo-classes.md.txt @@ -0,0 +1,372 @@ +--- +~~Title: Creating New Classes with Eolian~~ +--- + +# Creating New Classes with Eolian # + +The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how to create new classes so new kinds of objects can be instantiated. + +You'll learn how to describe classes using the Eolian language and then further customize them with class-specific code. You will also master the basics of class inheritance with Eolian. + +## Prerequisites ## + +* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo object creation and reference counting. +* The [Hello World](hello-world.md) tutorial details how to write a simple application using EFL. + +## Eolian Files and eolian_gen ## + +Each class in EFL is described in an *Eolian file*, with the same name as the class and extension *.eo*. Eolian files are plain text files that contain, among other things, the name of the described class and the list of its properties and methods, along with their parameters and return values. + +Most importantly, this class description is independent of any programming language and can be used to generate automatic bindings and boiler plate code for other programming languages. With this automatically generated code you only need to write the details of your implementation in the language of your choice. + +The code generator for the C language is ``eolian_gen``, which is included in your EFL installation. So far, it is the only language available but there are plans to support more in the near future. + +You can invoke ``eolian_gen`` like so: + +```bash +eolian_gen -gchi my_new_class.eo +``` + +This generates three files: + +* ``my_new_class.eo.h``: **Header file** including all the method signatures related to your class. In particular, it contains the class symbol you need to pass to ``efl_add()``, so always include this file if you want to use your class. +* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry about. It is automatically included from the implementation file (next one). +* ``my_new_class.c``: The **implementation file**. It initially contains the empty bodies for all the methods you need to implement in your class. This is the only file you need to modify and include in your builds, as you will see in this tutorial. + +The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the Header file and the Implementation file. + +In summary, for each new class you create you must: + +1. Describe the class with an ``.eo`` file and call ``eolian_gen``. +2. Add your code to the implementation file (``my_new_class.c``). +3. Add the implementation file to your build. +4. Include the header file (``my_new_class.eo.h``) from your application to use the new class. + +The rest of the tutorial shows a practical example which will illustrate this procedure. + +## Step One: Creating a Simple Class Description ## + +You will now create an Eolian file for a class named ``Example.Rectangle``. The file **must** be called ``examples_rectangle.eo``. + +This class will represent a rectangle shape, so it will have two properties, the ``width`` and ``height`` of the rectangle, which can be read and written. + +Start with the class name and the list of its parent classes in parentheses: + +``` +class Example.Rectangle (Efl.Object) { +} +``` + +The only parent class is ``Efl.Object``, which is mandatory for regular classes (exceptions like *Interfaces* will be dealt with later). + +Next add a method declaration block, wherein you'll list the methods and properties of your class: + +``` +class Example.Rectangle (Efl.Object) { + methods { + } +} +``` + +Now add a property named ``width`` inside the ``methods`` block, which you can ``set``, ``get`` and whose only value is an ``int``: + +``` + @property width { + set { + } + get { + } + values { +width: int; + } + } +``` + +Next do the same for the ``height`` property, right after the ``width`` block: + +``` + @property height { + set { + } + get { + } + values { +height: int; + } + } +``` + +Finally add a method
[EGIT] [website/www-content] master 01/01: Wiki media playground:02-hello-world:image03.png uploaded by Paul
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=c8b8600ffc061b77708584de2bf39a07f773ca68 commit c8b8600ffc061b77708584de2bf39a07f773ca68 Author: PaulDate: Tue Nov 21 03:46:19 2017 -0800 Wiki media playground:02-hello-world:image03.png uploaded by Paul --- media/playground/02-hello-world/image03.png | Bin 0 -> 28040 bytes pages/develop/tutorial/c/eo-classes.md.txt | 372 2 files changed, 372 deletions(-) diff --git a/media/playground/02-hello-world/image03.png b/media/playground/02-hello-world/image03.png new file mode 100644 index ..3c5e3d6f Binary files /dev/null and b/media/playground/02-hello-world/image03.png differ diff --git a/pages/develop/tutorial/c/eo-classes.md.txt b/pages/develop/tutorial/c/eo-classes.md.txt deleted file mode 100644 index c21280c6.. --- a/pages/develop/tutorial/c/eo-classes.md.txt +++ /dev/null @@ -1,372 +0,0 @@ -~~Title: Creating New Classes with Eolian~~ - -# Creating New Classes with Eolian # - -The [Introduction to Eo](eo-intro.md) tutorial showed you how to instantiate Eo objects of a given class using ``efl_add()``. This tutorial demonstrates how to create new classes so new kinds of objects can be instantiated. - -You'll learn how to describe classes using the Eolian language and then further customize them with class-specific code. You will also master the basics of class inheritance with Eolian. - -## Prerequisites ## - -* The [Introduction to Eo](eo-intro.md) tutorial explains the basis of Eo object creation and reference counting. -* The [Hello World](hello-world.md) tutorial details how to write a simple application using EFL. - -## Eolian Files and eolian_gen ## - -Each class in EFL is described in an *Eolian file*, with the same name as the class and extension *.eo*. Eolian files are plain text files that contain, among other things, the name of the described class and the list of its properties and methods, along with their parameters and return values. - -Most importantly, this class description is independent of any programming language and can be used to generate automatic bindings and boiler plate code for other programming languages. With this automatically generated code you only need to write the details of your implementation in the language of your choice. - -The code generator for the C language is ``eolian_gen``, which is included in your EFL installation. So far, it is the only language available but there are plans to support more in the near future. - -You can invoke ``eolian_gen`` like so: - -```bash -eolian_gen -gchi my_new_class.eo -``` - -This generates three files: - -* ``my_new_class.eo.h``: **Header file** including all the method signatures related to your class. In particular, it contains the class symbol you need to pass to ``efl_add()``, so always include this file if you want to use your class. -* ``my_new_class.eo.c``: Boilerplate code you don't usually need to worry about. It is automatically included from the implementation file (next one). -* ``my_new_class.c``: The **implementation file**. It initially contains the empty bodies for all the methods you need to implement in your class. This is the only file you need to modify and include in your builds, as you will see in this tutorial. - -The ``-gchi`` parameter tells ``eolian_gen`` to generate the Source file, the Header file and the Implementation file. - -In summary, for each new class you create you must: - -1. Describe the class with an ``.eo`` file and call ``eolian_gen``. -2. Add your code to the implementation file (``my_new_class.c``). -3. Add the implementation file to your build. -4. Include the header file (``my_new_class.eo.h``) from your application to use the new class. - -The rest of the tutorial shows a practical example which will illustrate this procedure. - -## Step One: Creating a Simple Class Description ## - -You will now create an Eolian file for a class named ``Example.Rectangle``. The file **must** be called ``examples_rectangle.eo``. - -This class will represent a rectangle shape, so it will have two properties, the ``width`` and ``height`` of the rectangle, which can be read and written. - -Start with the class name and the list of its parent classes in parentheses: - -``` -class Example.Rectangle (Efl.Object) { -} -``` - -The only parent class is ``Efl.Object``, which is mandatory for regular classes (exceptions like *Interfaces* will be dealt with later). - -Next add a method declaration block, wherein you'll list the methods and properties of your class: - -``` -class Example.Rectangle (Efl.Object) { - methods { - } -} -``` - -Now add a property named ``width`` inside the ``methods`` block, which you can ``set``, ``get`` and whose only value is an ``int``: - -``` - @property width { - set { - } - get { - } -
[EGIT] [website/www-content] master 01/01: Wiki page debian-start changed with summary [] by Pierre Couderc
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=3b428d67547d5d057b0c37f624576f3e2ba1ac6a commit 3b428d67547d5d057b0c37f624576f3e2ba1ac6a Author: Pierre CoudercDate: Tue Nov 21 00:14:45 2017 -0800 Wiki page debian-start changed with summary [] by Pierre Couderc --- pages/docs/distros/debian-start.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/docs/distros/debian-start.txt b/pages/docs/distros/debian-start.txt index a602d430..7da9f409 100644 --- a/pages/docs/distros/debian-start.txt +++ b/pages/docs/distros/debian-start.txt @@ -155,4 +155,4 @@ startx These run-time requirements may be provided - or not - by a display manger. In this case, you can reboot and choose Enlightenment as a window manager. == Test == -This procedure has been tested in February 2017 on jessie 8.7.1 and on stretch (potential problems on stretch). +This procedure has been tested in February 2017 on jessie 8.7.1 and on stretch. --