[EGIT] [core/efl] master 01/01: eldbus: fix to dbus_name_to_c method
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=34e4e110a23cb7edf01bf696cd0f3fa88704a621 commit 34e4e110a23cb7edf01bf696cd0f3fa88704a621 Author: Marcel Hollerbach Date: Wed Jul 14 15:20:42 2021 +0200 eldbus: fix to dbus_name_to_c method "-" in names should be converted to _ --- src/bin/eldbus/utils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/eldbus/utils.c b/src/bin/eldbus/utils.c index edfd06e598..53a7bd0f31 100644 --- a/src/bin/eldbus/utils.c +++ b/src/bin/eldbus/utils.c @@ -89,6 +89,7 @@ dbus_name_to_c(const char *dbus) eina_strbuf_append_char(buffer, tolower(ret[i])); } free(ret); + eina_strbuf_replace_all(buffer, "-", "_"); ret = eina_strbuf_string_steal(buffer); end: free(str_cpy); --
[EGIT] [core/efl] master 01/01: Revert "eldbus: do not generate method names with - in name"
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bad5440b2b8fe0cab7939b946dbdfe9171fcd520 commit bad5440b2b8fe0cab7939b946dbdfe9171fcd520 Author: Marcel Hollerbach Date: Wed Jul 14 15:12:11 2021 +0200 Revert "eldbus: do not generate method names with - in name" This reverts commit 364cc9dcba7e1a03403bb52ebc2609fa5fb7f7e8. Not for master yet --- src/bin/eldbus/source_client.c | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/bin/eldbus/source_client.c b/src/bin/eldbus/source_client.c index c7ba1b3795..8860f0665b 100644 --- a/src/bin/eldbus/source_client.c +++ b/src/bin/eldbus/source_client.c @@ -428,23 +428,11 @@ prop_cb_get(const DBus_Property *prop) } } -static char* -_escape(const char *name) { - Eina_Strbuf *buf = eina_strbuf_new(); - - eina_strbuf_append(buf, name); - eina_strbuf_replace_all(buf, "-", "_"); - - return eina_strbuf_release(buf); -} - - static void source_client_property_generate_get(const DBus_Property *prop, Eina_Strbuf *c_code, Eina_Strbuf *h) { - char *cb_name_escaped = _escape(prop->cb_name); //callback - eina_strbuf_append_printf(c_code, "\nstatic void\n%s(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)\n{\n", cb_name_escaped); + eina_strbuf_append_printf(c_code, "\nstatic void\n%s(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)\n{\n", prop->cb_name); eina_strbuf_append_printf(c_code, " void *user_data = eldbus_pending_data_del(pending, \"__user_data\");\n"); eina_strbuf_append_printf(c_code, " const char *error, *error_msg;\n"); eina_strbuf_append_printf(c_code, " %s cb = data;\n", prop_cb_get(prop)); @@ -500,8 +488,6 @@ source_client_property_generate_get(const DBus_Property *prop, Eina_Strbuf *c_co eina_strbuf_append_printf(c_code, " eldbus_pending_data_set(p, \"__user_proxy\", proxy);\n"); eina_strbuf_append_printf(c_code, " return p;\n"); eina_strbuf_append_printf(c_code, "}\n"); - - free(cb_name_escaped); } static void --
[EGIT] [core/efl] master 01/01: eldbus: do not generate method names with - in name
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=364cc9dcba7e1a03403bb52ebc2609fa5fb7f7e8 commit 364cc9dcba7e1a03403bb52ebc2609fa5fb7f7e8 Author: Marcel Hollerbach Date: Wed Jul 14 15:02:51 2021 +0200 eldbus: do not generate method names with - in name --- src/bin/eldbus/source_client.c | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/bin/eldbus/source_client.c b/src/bin/eldbus/source_client.c index 8860f0665b..c7ba1b3795 100644 --- a/src/bin/eldbus/source_client.c +++ b/src/bin/eldbus/source_client.c @@ -428,11 +428,23 @@ prop_cb_get(const DBus_Property *prop) } } +static char* +_escape(const char *name) { + Eina_Strbuf *buf = eina_strbuf_new(); + + eina_strbuf_append(buf, name); + eina_strbuf_replace_all(buf, "-", "_"); + + return eina_strbuf_release(buf); +} + + static void source_client_property_generate_get(const DBus_Property *prop, Eina_Strbuf *c_code, Eina_Strbuf *h) { + char *cb_name_escaped = _escape(prop->cb_name); //callback - eina_strbuf_append_printf(c_code, "\nstatic void\n%s(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)\n{\n", prop->cb_name); + eina_strbuf_append_printf(c_code, "\nstatic void\n%s(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending)\n{\n", cb_name_escaped); eina_strbuf_append_printf(c_code, " void *user_data = eldbus_pending_data_del(pending, \"__user_data\");\n"); eina_strbuf_append_printf(c_code, " const char *error, *error_msg;\n"); eina_strbuf_append_printf(c_code, " %s cb = data;\n", prop_cb_get(prop)); @@ -488,6 +500,8 @@ source_client_property_generate_get(const DBus_Property *prop, Eina_Strbuf *c_co eina_strbuf_append_printf(c_code, " eldbus_pending_data_set(p, \"__user_proxy\", proxy);\n"); eina_strbuf_append_printf(c_code, " return p;\n"); eina_strbuf_append_printf(c_code, "}\n"); + + free(cb_name_escaped); } static void --
[EGIT] [core/enlightenment] master 01/01: e_comp_x: do not display this error a million times
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e7781b4b8945e759d42e4bb0875cda284c0a1b1f commit e7781b4b8945e759d42e4bb0875cda284c0a1b1f Author: Marcel Hollerbach Date: Fri Jun 11 17:03:51 2021 +0200 e_comp_x: do not display this error a million times once is enough. --- src/bin/e_comp_x_randr.c | 40 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/bin/e_comp_x_randr.c b/src/bin/e_comp_x_randr.c index f0070fabe..5cbf91245 100644 --- a/src/bin/e_comp_x_randr.c +++ b/src/bin/e_comp_x_randr.c @@ -433,17 +433,41 @@ _mode_screen_find(Ecore_X_Window root, E_Randr2_Screen *s, Ecore_X_Randr_Output return mode; } +static E_Dialog *screen_error_dialog = NULL; + +static void +_screen_error_remove_cb(void *data EINA_UNUSED, E_Dialog *dia EINA_UNUSED) +{ + screen_error_dialog = NULL; + e_object_del(E_OBJECT(dia)); +} + static Eina_Bool _cb_no_outputs_timer(void *data EINA_UNUSED) { - e_util_dialog_show(_("Screen setup Error"), - _("You seem to have no screens configured to" -"be on given the outputs you have. This should" -"be fixed by going to:" -"" -"Settings -> Screen -> Screen Setup" -"" -"And configure at least one screen to be on.")); + if (!screen_error_dialog) + { +screen_error_dialog = e_dialog_new(NULL, "E", "_error_dialog"); + +e_dialog_title_set(screen_error_dialog, _("Screen setup Error")); +e_dialog_text_set(screen_error_dialog, _("You seem to have no screens configured to" + "be on given the outputs you have. This should" + "be fixed by going to:" + "" + "Settings -> Screen -> Screen Setup" + "" + "And configure at least one screen to be on.")); + e_dialog_icon_set(screen_error_dialog, "dialog-error", 64); + e_dialog_button_add(screen_error_dialog, _("OK"), NULL, _screen_error_remove_cb, NULL); + e_dialog_button_focus_num(screen_error_dialog, 0); + elm_win_center(screen_error_dialog->win, 1, 1); + e_dialog_show(screen_error_dialog); + } + else + { + elm_win_raise(screen_error_dialog->win); + } + return EINA_FALSE; } --
[EGIT] [core/efl] master 03/04: efl_io_model: initialize memory
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=65dd51b1a4a7259ba908738d2ada33e65895de3a commit 65dd51b1a4a7259ba908738d2ada33e65895de3a Author: Marcel Hollerbach Date: Sat Apr 10 11:24:42 2021 +0200 efl_io_model: initialize memory or this is causing trouble --- src/lib/eio/efl_io_model.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/eio/efl_io_model.c b/src/lib/eio/efl_io_model.c index 0d5e372eef..099d7c88df 100644 --- a/src/lib/eio/efl_io_model.c +++ b/src/lib/eio/efl_io_model.c @@ -82,7 +82,7 @@ _efl_model_evt_added_ecore_cb(void *data, int type, void *event) Eio_Monitor_Event *ev = event; Efl_Io_Model *obj = data; Efl_Io_Model_Data *pd; - Efl_Model_Children_Event cevt; + Efl_Model_Children_Event cevt = {0}; Efl_Io_Model_Info *mi; Eina_List *l; Eina_Stringshare *spath = NULL; --
[EGIT] [core/efl] master 02/04: efl_io_model: do not self reference, this is dangerous
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1ef48e2f4458d3a52d5f153b9ef11c2dffe96a15 commit 1ef48e2f4458d3a52d5f153b9ef11c2dffe96a15 Author: Marcel Hollerbach Date: Sat Apr 10 11:23:05 2021 +0200 efl_io_model: do not self reference, this is dangerous what happened here is that people passed private data with a reference to the object. Which is kind of a bad idea, as in some unthought of conditions, events are forgot, which results in freeed memory beeing accessed. This way its at least a error. --- src/lib/eio/efl_io_model.c | 44 ++ src/lib/eio/efl_io_model_private.h | 2 -- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/lib/eio/efl_io_model.c b/src/lib/eio/efl_io_model.c index 88c32b19b8..0d5e372eef 100644 --- a/src/lib/eio/efl_io_model.c +++ b/src/lib/eio/efl_io_model.c @@ -21,7 +21,7 @@ #define MY_CLASS_NAME "Efl_Io_Model" static void _efl_io_model_info_free(Efl_Io_Model_Info *info, Eina_Bool model); -static void _efl_io_model_efl_model_monitor_add(Efl_Io_Model_Data *priv); +static void _efl_io_model_efl_model_monitor_add(const Eo *obj, Efl_Io_Model_Data *priv); EINA_VALUE_STRUCT_DESC_DEFINE(_eina_file_direct_info_desc, NULL, @@ -80,14 +80,17 @@ static Eina_Bool _efl_model_evt_added_ecore_cb(void *data, int type, void *event) { Eio_Monitor_Event *ev = event; - Efl_Io_Model *obj; - Efl_Io_Model_Data *pd = data; + Efl_Io_Model *obj = data; + Efl_Io_Model_Data *pd; Efl_Model_Children_Event cevt; Efl_Io_Model_Info *mi; Eina_List *l; Eina_Stringshare *spath = NULL; char *path = NULL; + pd = efl_data_scope_get(obj, EFL_IO_MODEL_CLASS); + EINA_SAFETY_ON_NULL_RETURN_VAL(pd, EINA_TRUE); + if (type != EIO_MONITOR_DIRECTORY_CREATED && type != EIO_MONITOR_FILE_CREATED) return EINA_TRUE; @@ -96,8 +99,6 @@ _efl_model_evt_added_ecore_cb(void *data, int type, void *event) if (_already_added(pd, ev->filename)) return EINA_TRUE; - obj = pd->self; - path = ecore_file_dir_get(ev->filename); if (!eina_streq(pd->path, path)) goto end; @@ -155,11 +156,10 @@ _efl_model_evt_added_ecore_cb(void *data, int type, void *event) } static void -_model_child_remove(Efl_Io_Model_Data *pd, Eina_Stringshare *path) +_model_child_remove(Efl_Io_Model *obj, Efl_Io_Model_Data *pd, Eina_Stringshare *path) { Efl_Io_Model_Info *mi; Eina_List *l; - Efl_Io_Model *obj = pd->self; Efl_Model_Children_Event cevt = { 0 }; unsigned int i = 0; @@ -191,16 +191,20 @@ static Eina_Bool _efl_model_evt_deleted_ecore_cb(void *data, int type, void *event) { Eio_Monitor_Event *ev = event; - Efl_Io_Model_Data *pd = data; + Efl_Io_Model *obj = data; + Efl_Io_Model_Data *pd; Eina_Stringshare *spath = NULL; + pd = efl_data_scope_get(obj, EFL_IO_MODEL_CLASS); + EINA_SAFETY_ON_FALSE_RETURN_VAL(pd, EINA_TRUE); + if (type != EIO_MONITOR_DIRECTORY_DELETED && type != EIO_MONITOR_FILE_DELETED) return EINA_TRUE; if (ev->monitor != pd->monitor) return EINA_TRUE; spath = eina_stringshare_add(ev->filename); - _model_child_remove(pd, spath); + _model_child_remove(obj, pd, spath); eina_stringshare_del(spath); return EINA_TRUE; @@ -222,13 +226,17 @@ _eio_del_cleanup(Efl_Io_Model *obj) static void _eio_done_unlink_cb(void *data, Eio_File *handler EINA_UNUSED) { - Efl_Io_Model *child = data; + Efl_Io_Model *child = data, *parent; Efl_Io_Model_Data *child_pd, *pd; + parent = efl_parent_get(child); + EINA_SAFETY_ON_NULL_RETURN(parent); child_pd = efl_data_scope_get(child, MY_CLASS); - pd = efl_data_scope_get(efl_parent_get(child), MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(child_pd); + pd = efl_data_scope_get(parent, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(parent); - _model_child_remove(pd, child_pd->path); + _model_child_remove(parent, pd, child_pd->path); _eio_del_cleanup(child); } @@ -342,7 +350,7 @@ _eio_build_st_done(void *data, Eio_File *handler EINA_UNUSED, const Eina_Stat *s if (eio_file_is_dir(pd->st)) { // Now that we know we are a directory, we should whatch it -_efl_io_model_efl_model_monitor_add(pd); +_efl_io_model_efl_model_monitor_add(model, pd); // And start listing its child efl_model_children_count_get(model); @@ -861,7 +869,7 @@ _efl_io_model_efl_model_children_count_get(const Eo *obj, Efl_Io_Model_Data *pd) //start monitoring before listing is done //we will filter later on if we already published a file or not -_efl_io_model_efl_model_monitor_add(pd); +_efl_io_model_efl_model_monitor_add(obj, pd); pd->request.listing = efl_future_then(obj, f,
[EGIT] [core/efl] master 01/04: elm_genlist: ensure item is not deleted while beeing processed
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0dc949709f23ac9835c3fac67239f8c265e0d041 commit 0dc949709f23ac9835c3fac67239f8c265e0d041 Author: Marcel Hollerbach Date: Sat Apr 10 10:44:54 2021 +0200 elm_genlist: ensure item is not deleted while beeing processed the downside of doing things like genlist is doing, is that a object can be deleted, due to the fact that the processing call does not have a eo call in its stack trace, the object is not reffed at all. Hence it simply gets deleted in the middle of beeing proceded. With this, this is at least here not happening. --- src/lib/elementary/elm_genlist.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 342d26e0d3..78b3134138 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -4435,6 +4435,7 @@ _item_mouse_down_cb(void *data, // NOTE: keep this code at the bottom, as the user can change the // list at this point (clear, delete, etc...) _item_highlight(it); + efl_ref(EO_OBJ(it)); if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) { evas_object_smart_callback_call @@ -4443,7 +,8 @@ _item_mouse_down_cb(void *data, (WIDGET(it), ELM_GENLIST_EVENT_ACTIVATED, eo_it); } evas_object_smart_callback_call - (WIDGET(it), "pressed", eo_it); +(WIDGET(it), "pressed", eo_it); + efl_unref(EO_OBJ(it)); } static Item_Block * --
[EGIT] [core/efl] master 04/04: eina_promise: do not self feedback when canceling
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=be9e83e0db354dad2b4810e1ebf20bad37538d56 commit be9e83e0db354dad2b4810e1ebf20bad37538d56 Author: Marcel Hollerbach Date: Sat Apr 10 12:15:47 2021 +0200 eina_promise: do not self feedback when canceling when canceling a all_promise it will cancel all futures. When that happens, and one future is containing a promise, the value is unrolled, and delivered as "Operation canceled" if this is happening to the last future in all or any in race, the promise will then free its base ctx which is already happening due to canceling. With this this is not happening anymore. --- src/lib/eina/eina_promise.c | 17 ++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/lib/eina/eina_promise.c b/src/lib/eina/eina_promise.c index 4fe51206e4..873d3cb13d 100644 --- a/src/lib/eina/eina_promise.c +++ b/src/lib/eina/eina_promise.c @@ -1148,6 +1148,7 @@ typedef struct _Base_Ctx { Eina_Promise *promise; Eina_Future **futures; unsigned int futures_len; + Eina_Bool cancelled : 1; } Base_Ctx; typedef struct _All_Promise_Ctx { @@ -1173,6 +1174,7 @@ _base_ctx_clean(Base_Ctx *ctx) static void _all_promise_ctx_free(All_Promise_Ctx *ctx) { + DBG("Cleaning base_ctx for %p", ctx); _base_ctx_clean(&ctx->base); eina_value_flush(&ctx->values); free(ctx); @@ -1181,12 +1183,16 @@ _all_promise_ctx_free(All_Promise_Ctx *ctx) static void _all_promise_cancel(void *data, const Eina_Promise *dead EINA_UNUSED) { - _all_promise_ctx_free(data); + All_Promise_Ctx *ctx = data; + + ctx->base.cancelled = 1; + _all_promise_ctx_free(ctx); } static void _race_promise_ctx_free(Race_Promise_Ctx *ctx) { + DBG("Cleaning base_ctx for %p", ctx); _base_ctx_clean(&ctx->base); free(ctx); } @@ -1194,6 +1200,9 @@ _race_promise_ctx_free(Race_Promise_Ctx *ctx) static void _race_promise_cancel(void *data, const Eina_Promise *dead EINA_UNUSED) { + Race_Promise_Ctx *ctx = data; + + ctx->base.cancelled = 1; _race_promise_ctx_free(data); } @@ -1233,7 +1242,8 @@ _race_then_cb(void *data, const Eina_Value v, ctx->dispatching = EINA_TRUE; //By freeing the race_ctx all the other futures will be cancelled. - _race_promise_ctx_free(ctx); + if (!ctx->base.cancelled) + _race_promise_ctx_free(ctx); r = eina_value_struct_setup(&result, &RACE_STRUCT_DESC); EINA_SAFETY_ON_FALSE_GOTO(r, err_setup); @@ -1275,7 +1285,8 @@ _all_then_cb(void *data, const Eina_Value v, //We're in a safe context (from mainloop), so we can avoid scheduling a new dispatch _eina_promise_clean_dispatch(ctx->base.promise, ctx->values); ctx->values = EINA_VALUE_EMPTY; /* flushed in _eina_promise_clean_dispatch() */ -_all_promise_ctx_free(ctx); +if (!ctx->base.cancelled) + _all_promise_ctx_free(ctx); } return v; } --
[EGIT] [core/enlightenment] master 02/02: swipe: add a help screen that tells where to find debug output
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2bab67bdef041e8729c93e129b4e6fa23d3bf79a commit 2bab67bdef041e8729c93e129b4e6fa23d3bf79a Author: Marcel Hollerbach Date: Mon Apr 5 21:14:15 2021 +0200 swipe: add a help screen that tells where to find debug output --- .../conf_bindings/e_int_config_swipebindings.c | 22 +- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/modules/conf_bindings/e_int_config_swipebindings.c b/src/modules/conf_bindings/e_int_config_swipebindings.c index bc56fc99c..085d5dec9 100644 --- a/src/modules/conf_bindings/e_int_config_swipebindings.c +++ b/src/modules/conf_bindings/e_int_config_swipebindings.c @@ -891,6 +891,24 @@ _restore_swipe_binding_defaults_cb(void *data, void *data2 EINA_UNUSED) e_widget_disabled_set(cfdata->gui.o_params, 1); } +static void +_close_help_dialog(void *data EINA_UNUSED, E_Dialog *dia) +{ + e_object_del(E_OBJECT(dia)); +} + +static void +_help_swipe_bindings_cb(void *data EINA_UNUSED, void *data2 EINA_UNUSED) +{ + E_Config_Dialog_Data *cfdata = data; + + E_Dialog *help = e_dialog_new(cfdata->cfd->dia->win, "E", "_swipe_recognition"); + e_dialog_title_set(help, _("Swipe Bindings Help")); + e_dialog_text_set(help, _("Enlightenment is using libinput to detect swipe gesture. In case there are problems: 1. Test gestures while executing \"libinput debug-events\" in terminal. The console output will tell the precision of your hardware.2. Watch for error in console, some libinput devices are returning wrong results. 3. If your session is running inside Xorg, ensure that your user is part of the libinput group.")); + e_dialog_button_add(help, _("Close"), NULL, _close_help_dialog, help); + e_dialog_show(help); +} + static Evas_Object * _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { @@ -922,7 +940,9 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf e_widget_disabled_set(ob, 1); e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 0, 1, 0); ob = e_widget_button_add(evas, _("Restore Default Bindings"), "enlightenment", _restore_swipe_binding_defaults_cb, cfdata, NULL); - e_widget_frametable_object_append(of, ob, 0, 3, 2, 1, 1, 0, 1, 0); + e_widget_frametable_object_append(of, ob, 0, 3, 1, 1, 1, 0, 1, 0); + ob = e_widget_button_add(evas, _("Help"), "help", _help_swipe_bindings_cb, cfdata, NULL); + e_widget_frametable_object_append(of, ob, 1, 3, 1, 1, 1, 0, 1, 0); e_widget_list_object_append(ol, of, 1, 1, 0.5); ot = e_widget_table_add(e_win_evas_win_get(evas), 0); --
[EGIT] [core/enlightenment] master 01/02: move gesture recognition to e itself
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=424a6a1930192ba6e41195cc1f99b2ff060a1b43 commit 424a6a1930192ba6e41195cc1f99b2ff060a1b43 Author: Marcel Hollerbach Date: Mon Apr 5 20:32:22 2021 +0200 move gesture recognition to e itself --- meson.build| 1 + src/bin/e_bindings.c | 36 src/bin/e_bindings.h | 7 --- .../e_mod_main.c => bin/e_gesture.c} | 47 - src/bin/e_gesture.h| 13 ++ src/bin/e_includes.h | 1 + src/bin/e_main.c | 5 +++ src/bin/meson.build| 5 ++- .../e-module-gesture_recognition.edj | Bin 30531 -> 0 bytes src/modules/gesture_recognition/meson.build| 4 -- src/modules/gesture_recognition/module.desktop | 10 - src/modules/meson.build| 1 - 12 files changed, 51 insertions(+), 79 deletions(-) diff --git a/meson.build b/meson.build index 8fc094014..f081e5b1a 100644 --- a/meson.build +++ b/meson.build @@ -298,6 +298,7 @@ dep_eo = dependency('eo' , required: true) dep_eldbus = dependency('eldbus' , required: true) dep_emotion = dependency('emotion' , required: true) dep_elementary = dependency('elementary' , required: true) +dep_elput= dependency('elput' , required: true) dep_wayland = [] if get_option('wl') == true diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index 9c53e1121..f6a494069 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -21,10 +21,6 @@ static Eina_List *acpi_bindings = NULL; static Eina_List *swipe_bindings = NULL; static unsigned int bindings_disabled = 0; -static int gesture_capable_devices = 0; - -static E_Bindings_Swipe_Live_Update live_update; -static E_Bindings_Swipe_Live_Update live_update_data; EINTERN E_Action *(*e_binding_key_list_cb)(E_Binding_Context, Ecore_Event_Key*, E_Binding_Modifier, E_Binding_Key **); @@ -1614,19 +1610,6 @@ _e_bindings_edge_cb_timer(void *data) return ECORE_CALLBACK_CANCEL; } - -E_API void -e_bindings_gesture_capable_devices_set(int number) -{ - gesture_capable_devices = number; -} - -E_API int -e_bindings_gesture_capable_devices_get(void) -{ - return gesture_capable_devices; -} - E_API void e_bindings_swipe_add(E_Binding_Context ctxt, double direction, double length, unsigned int fingers, double error, const char *action, const char *params) { @@ -1727,22 +1710,3 @@ e_bindings_swipe_find_candidates(E_Binding_Context ctxt, double direction, doubl return ret; } - -E_API void -e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data) -{ - live_update = update; - live_update_data = data; -} - -E_API E_Bindings_Swipe_Live_Update -e_bindings_swipe_live_update_hook_get(void) -{ - return live_update; -} - -E_API void* -e_bindings_swipe_live_update_hook_data_get(void) -{ - return live_update_data; -} diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h index 40a048050..f00970722 100644 --- a/src/bin/e_bindings.h +++ b/src/bin/e_bindings.h @@ -212,8 +212,6 @@ typedef struct { double acceptance; //0 to 1 } E_Binding_Swipe_Candidate; -typedef void (*E_Bindings_Swipe_Live_Update)(void *data, Eina_Bool end, double direction, double length, double error, unsigned int fingers); - /** * Direction is in radiens, 0 is pointing to the right. Going clockwise. (Only positive range) */ @@ -222,11 +220,6 @@ E_API void e_bindings_swipe_add(E_Binding_Context ctxt, double directio E_API void e_bindings_swipe_del(E_Binding_Context ctxt, double direction, double length, unsigned int fingers, double error, const char *action, const char *params); E_API E_Action* e_bindings_swipe_handle(E_Binding_Context ctxt, E_Object *obj, double direction, double length, unsigned int fingers); E_API Eina_Inarray/**/* e_bindings_swipe_find_candidates(E_Binding_Context ctxt, double direction, double lenght, unsigned int fingers); -E_API void e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data); -E_API E_Bindings_Swipe_Live_Update e_bindings_swipe_live_update_hook_get(void); -E_API void e_bindings_gesture_capable_devices_set(int number); -E_API inte_bindings_gesture_capable_devices_get(void); -E_API void* e_bindings_swipe_live_update_hook_data_get(void); E_API int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers); E_API int e_bindings_modifiers_to_ecore_convert(E_Binding_Modifier modifiers); diff --git a/src/modules/gesture_recognition/e_mod_main.c b/src/bin/e_gesture.
[EGIT] [core/enlightenment] master 01/01: swipe_config: only warn on x not on wl
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=59ae22f8ec894fdf6a2ecf3dc202c4dd1c49ab7b commit 59ae22f8ec894fdf6a2ecf3dc202c4dd1c49ab7b Author: Marcel Hollerbach Date: Mon Apr 5 18:29:34 2021 +0200 swipe_config: only warn on x not on wl --- src/modules/conf_bindings/e_int_config_swipebindings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/conf_bindings/e_int_config_swipebindings.c b/src/modules/conf_bindings/e_int_config_swipebindings.c index a982e58d3..bc56fc99c 100644 --- a/src/modules/conf_bindings/e_int_config_swipebindings.c +++ b/src/modules/conf_bindings/e_int_config_swipebindings.c @@ -998,7 +998,7 @@ e_int_config_swipebindings(Evas_Object *parent EINA_UNUSED, const char *params) v->basic.create_widgets = _basic_create_widgets; v->override_auto_apply = 1; - if (!_user_part_of_input()) + if (e_comp->comp_type == E_PIXMAP_TYPE_X && !_user_part_of_input()) { e_module_dialog_show(NULL, "Gesture Recognition", "Your user is not part of the input group, libinput cannot be used."); } --
[EGIT] [core/efl] master 01/01: build: enable elput per default
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0c2cf7e1bf7ca547655d25aaea30d081101b42be commit 0c2cf7e1bf7ca547655d25aaea30d081101b42be Author: Marcel Hollerbach Date: Sat Apr 3 17:43:25 2021 +0200 build: enable elput per default this is now needed by enlightenment in order to support gesture recognition, even in xorg, hence enabling it per default. --- meson.build | 2 +- meson_options.txt | 6 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index a803a197a2..25677fcc3f 100644 --- a/meson.build +++ b/meson.build @@ -330,7 +330,7 @@ subprojects = [ ['ecore_ipc',[], false, true, false, false, false, false, true, ['eina'], []], ['ecore_buffer' ,['buffer'], true, true, true, false, false, false, true, ['eina'], []], ['ector',[], false, true, false, false, true, false, true, ['eina', 'efl'], ['draw', 'triangulator', 'freetype']], - ['elput',['drm'] , false, true, false, false, true, false, true, ['eina', 'eldbus'], []], + ['elput',['input'] , false, true, false, false, true, false, true, ['eina', 'eldbus'], []], ['ecore_drm2' ,['drm'] , false, true, false, false, false, false, true, ['ecore'], ['libdrm']], ['ecore_cocoa' ,['cocoa'] , false, true, false, false, false, false, true, ['eina'], []], ['evas' ,[], true, true, false, false, true, true, true, ['eina', 'efl', 'eo'], ['vg_common', 'libunibreak']], diff --git a/meson_options.txt b/meson_options.txt index b224179366..8c21e69436 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -46,6 +46,12 @@ option('drm', description : 'DRM/KMS advanced framebuffer/console support in efl' ) +option('input', + type : 'boolean', + value : true, + description : 'libinput abstraction in efl' +) + option('cocoa', type : 'boolean', value : false, --
[EGIT] [core/efl] master 01/01: theme: only emit press once
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8900c8048cfdf0afa1851c39ed9492b6401c30de commit 8900c8048cfdf0afa1851c39ed9492b6401c30de Author: Marcel Hollerbach Date: Thu Apr 1 16:59:15 2021 +0200 theme: only emit press once otherwise things go haywire. --- data/elementary/themes/edc/efl/check.edc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/data/elementary/themes/edc/efl/check.edc b/data/elementary/themes/edc/efl/check.edc index be87511e07..e2a82d698d 100644 --- a/data/elementary/themes/edc/efl/check.edc +++ b/data/elementary/themes/edc/efl/check.edc @@ -224,7 +224,7 @@ group { name: "efl/check"; } } programs { - EFL_UI_CLICKABLE_PART_BIND("event") + EFL_UI_CLICKABLE_PART_BIND(event) program { signal: "mouse,down,1"; source: "event"; script { new buf[32]; new Float:val; @@ -248,7 +248,6 @@ group { name: "efl/check"; action: PLAY_SAMPLE "wood-tap2" 1.0 INPUT; } program { signal: "mouse,down,1"; source: "event"; - action: SIGNAL_EMIT "efl,action,press" "efl"; after: "button_click_anim"; } program { signal: "mouse,down,1"; source: "event"; --
[EGIT] [core/efl] master 01/01: tests: fix efl_ui_suite
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=665d62485ba2d7f1cb1ca78c18d25e19a515f674 commit 665d62485ba2d7f1cb1ca78c18d25e19a515f674 Author: Marcel Hollerbach Date: Thu Apr 1 15:22:57 2021 +0200 tests: fix efl_ui_suite --- src/tests/elementary/efl_ui_test_list_collection.c | 84 +++--- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/tests/elementary/efl_ui_test_list_collection.c b/src/tests/elementary/efl_ui_test_list_collection.c index 94bafbd010..cdaca085f4 100644 --- a/src/tests/elementary/efl_ui_test_list_collection.c +++ b/src/tests/elementary/efl_ui_test_list_collection.c @@ -64,9 +64,9 @@ EFL_START_TEST(placement_test_only_items) { Eina_Rect r = efl_gfx_entity_geometry_get(item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 1+(i+2)*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, (i+2)*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -76,9 +76,9 @@ EFL_START_TEST(placement_test_only_items) { Eina_Rect r = efl_gfx_entity_geometry_get(item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 1+i*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, i*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -127,9 +127,9 @@ EFL_START_TEST(placement_test_group) { r = efl_gfx_entity_geometry_get(core_item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 1+(i+1)*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, 0+(i+1)*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -140,9 +140,9 @@ EFL_START_TEST(placement_test_group) { r = efl_gfx_entity_geometry_get(core_item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 1+i*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, i*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -151,18 +151,18 @@ EFL_START_TEST(placement_test_group) r = efl_gfx_entity_geometry_get(core_item[0]); - ck_assert_int_eq(r.x, 1); - ck_assert_int_eq(r.y, 1); - ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. + ck_assert_int_eq(r.x, 0); + ck_assert_int_eq(r.y, 0); + ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); for (int i = 1; i < 4; ++i) { r = efl_gfx_entity_geometry_get(core_item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 22+(i - 1)*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, 20+(i - 1)*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -171,18 +171,18 @@ EFL_START_TEST(placement_test_group) r = efl_gfx_entity_geometry_get(core_item[0]); - ck_assert_int_eq(r.x, 1); - ck_assert_int_eq(r.y, 1); - ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. + ck_assert_int_eq(r.x, 0); + ck_assert_int_eq(r.y, 0); + ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); for (int i = 2; i < 4; ++i) { r = efl_gfx_entity_geometry_get(core_item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 2+(i-2)*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, (i-2)*40); +ck_assert_int_eq(r.w, 200); // 200 - 2px border - X for the width of the scrollbar. ck_assert_int_eq(r.h, 40); } @@ -237,9 +237,9 @@ EFL_START_TEST(placement_test_group_crazy) { r = efl_gfx_entity_geometry_get(core_item[i]); -ck_assert_int_eq(r.x, 1); -ck_assert_int_eq(r.y, 1+(i+1)*40); -ck_assert_int_eq(r.w, 183); // 200 - 2px border - X for the width of the scrollbar. +ck_assert_int_eq(r.x, 0); +ck_assert_int_eq(r.y, (i
[EGIT] [core/efl] master 01/01: elput: introduce gesture passing
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8493a38876e02e5448b7eafe23725f8843d69185 commit 8493a38876e02e5448b7eafe23725f8843d69185 Author: Marcel Hollerbach Date: Wed Mar 24 16:07:27 2021 +0100 elput: introduce gesture passing In order to have that working on Xorg, this requires the libinput group hack if you are not session leader. For now this only has swipe bindings, other gestures can follow. --- src/lib/elput/Elput.h | 104 + src/lib/elput/elput.c | 6 ++ src/lib/elput/elput_gestures.c | 78 ++ src/lib/elput/elput_input.c| 29 src/lib/elput/elput_manager.c | 1 + src/lib/elput/elput_private.h | 10 +++ src/lib/elput/elput_root.c | 146 + src/lib/elput/meson.build | 2 + 8 files changed, 364 insertions(+), 12 deletions(-) diff --git a/src/lib/elput/Elput.h b/src/lib/elput/Elput.h index 7a05f8e795..03f186a8c8 100644 --- a/src/lib/elput/Elput.h +++ b/src/lib/elput/Elput.h @@ -47,6 +47,9 @@ typedef struct _Elput_Pointer Elput_Pointer; /* opaque structure to represent a touch device */ typedef struct _Elput_Touch Elput_Touch; +/* opaque structure to represent swipe data */ +typedef struct _Elput_Swipe_Gesture Elput_Swipe_Gesture; + /* structure to represent event for seat capability changes */ typedef struct _Elput_Event_Seat_Caps { @@ -131,6 +134,7 @@ EAPI extern int ELPUT_EVENT_MODIFIERS_SEND; EAPI extern int ELPUT_EVENT_DEVICE_CHANGE; EAPI extern int ELPUT_EVENT_SESSION_ACTIVE; + /** @since 1.19 */ EAPI extern int ELPUT_EVENT_POINTER_MOTION; @@ -201,6 +205,19 @@ EAPI int elput_shutdown(void); */ EAPI Elput_Manager *elput_manager_connect(const char *seat, unsigned int tty); +/** + * Create an input manager on the specified seat. Only gesture events are emitted. Nothing else. + * + * @param seat + * @param tty + * + * @return A Elput_Manager on success, NULL on failure + * + * @ingroup Elput_Manager_Group + */ +EAPI Elput_Manager *elput_manager_connect_gestures(const char *seat, unsigned int tty); + + /** * Disconnect an input manager * @@ -726,6 +743,93 @@ EAPI Eina_Stringshare *elput_seat_name_get(const Elput_Seat *seat); * @since 1.20 */ EAPI Elput_Manager *elput_seat_manager_get(const Elput_Seat *seat); + + +/** + * @defgroup Elput_Gestures Elput gesture accessors + * + * Functions for accessing details of gesture events. + * The structure pointers can only be accessed within the events that emit them. + */ + +/** + * A swipe gesture has began. + * ELPUT_EVENT_SWIPE_UPDATE and finally a single ELPUT_EVENT_SWIPE_END event will be emitted. + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI extern int ELPUT_EVENT_SWIPE_BEGIN; + +/** + * There is a change to a ongoing swipe gesture. + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI extern int ELPUT_EVENT_SWIPE_UPDATE; + +/** + * A ongoing swipe gesture has ended. + * This ends the lifetime of this gesture. + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI extern int ELPUT_EVENT_SWIPE_END; + +/** + * Get the difference of x position from the last event to this event. + * + * @param gesture The event, if NULL 0 is returned + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI double elput_swipe_dx_get(Elput_Swipe_Gesture *gesture); + +/** + * Get the difference of y position from the last event to this event. + * + * @param gesture The event, if NULL 0 is returned + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI double elput_swipe_dy_get(Elput_Swipe_Gesture *gesture); + +/** + * Get the finger_count for this gesture + * + * @param gesture The event, if NULL 0 is returned + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI int elput_swipe_finger_count_get(Elput_Swipe_Gesture *gesture); + +/** + * Get the window in which this event is emitted. + * + * @param gesture The event, if NULL 0 is returned + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI int elput_swipe_window_get(Elput_Swipe_Gesture *gesture); + +/** + * Get the device from which the gesture event is coming. + * + * This value is the same for the lifetime of a gesture + * + * @param gesture The event, if NULL, NULL is returned + * + * @ingroup Elput_Gestures + * @since 1.26 + */ +EAPI Elput_Device *elput_swipe_device_get(Elput_Swipe_Gesture *gesture); + # endif # undef EAPI diff --git a/src/lib/elput/elput.c b/src/lib/elput/elput.c index 3c51bca1ff..6426e803e4 100644 --- a/src/lib/elput/elput.c +++ b/src/lib/elput/elput.c @@ -14,6 +14,9 @@ EAPI int ELPUT_EVENT_DEVICE_CHANGE = 0; EAPI int ELPUT_EVENT_SESSION_ACTIVE = 0; EAPI int ELPUT_EVENT_POINTER_MOTION = 0; EAPI int ELPUT_EVENT_SWITCH = 0; +EAPI int ELPUT_EVENT_SWIPE_BEGIN = 0; +EAPI int ELPUT_EVENT_SWIPE_UPDATE = 0; +EAPI int ELPUT_EVENT_SWIPE_END = 0; EAPI int elput_init(void) @@ -40,6 +43,9 @@ elput_init(void
[EGIT] [core/enlightenment] master 01/01: gesture_recognition: Rework to use elput
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=ed5dcfbd60c6c37b06c64395df3d4c9b11293f24 commit ed5dcfbd60c6c37b06c64395df3d4c9b11293f24 Author: Marcel Hollerbach Date: Wed Mar 24 16:04:48 2021 +0100 gesture_recognition: Rework to use elput With this: - Support for gestures in X *and* wayland. Wayland does not require the libinput group hack - Hotplugging support thanks to udev support This requires a new rebuild of efl. --- src/bin/e_bindings.c | 14 ++ src/bin/e_bindings.h | 2 + .../conf_bindings/e_int_config_swipebindings.c | 47 +++- src/modules/gesture_recognition/e_mod_main.c | 265 + src/modules/gesture_recognition/meson.build| 2 +- 5 files changed, 170 insertions(+), 160 deletions(-) diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index 08a19c336..9c53e1121 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -21,6 +21,7 @@ static Eina_List *acpi_bindings = NULL; static Eina_List *swipe_bindings = NULL; static unsigned int bindings_disabled = 0; +static int gesture_capable_devices = 0; static E_Bindings_Swipe_Live_Update live_update; static E_Bindings_Swipe_Live_Update live_update_data; @@ -1613,6 +1614,19 @@ _e_bindings_edge_cb_timer(void *data) return ECORE_CALLBACK_CANCEL; } + +E_API void +e_bindings_gesture_capable_devices_set(int number) +{ + gesture_capable_devices = number; +} + +E_API int +e_bindings_gesture_capable_devices_get(void) +{ + return gesture_capable_devices; +} + E_API void e_bindings_swipe_add(E_Binding_Context ctxt, double direction, double length, unsigned int fingers, double error, const char *action, const char *params) { diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h index b65fabe38..40a048050 100644 --- a/src/bin/e_bindings.h +++ b/src/bin/e_bindings.h @@ -224,6 +224,8 @@ E_API E_Action* e_bindings_swipe_handle(E_Binding_Context ctxt, E_Object *ob E_API Eina_Inarray/**/* e_bindings_swipe_find_candidates(E_Binding_Context ctxt, double direction, double lenght, unsigned int fingers); E_API void e_bindings_swipe_live_update_hook_set(E_Bindings_Swipe_Live_Update update, void *data); E_API E_Bindings_Swipe_Live_Update e_bindings_swipe_live_update_hook_get(void); +E_API void e_bindings_gesture_capable_devices_set(int number); +E_API inte_bindings_gesture_capable_devices_get(void); E_API void* e_bindings_swipe_live_update_hook_data_get(void); E_API int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers); diff --git a/src/modules/conf_bindings/e_int_config_swipebindings.c b/src/modules/conf_bindings/e_int_config_swipebindings.c index 90c5ced93..a982e58d3 100644 --- a/src/modules/conf_bindings/e_int_config_swipebindings.c +++ b/src/modules/conf_bindings/e_int_config_swipebindings.c @@ -276,12 +276,12 @@ _action_change_cb(void *data) static int _swipe_binding_sort_cb(E_Config_Binding_Swipe *a, E_Config_Binding_Swipe *b) { - int finger_diff = (a->fingers == b->fingers)*-1; + int finger_diff = a->fingers - b->fingers; if (!finger_diff) { return a->direction - b->direction; } - return finger_diff; + return finger_diff*-1; } static void @@ -950,6 +950,38 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf return o; } +static Eina_Bool +_user_part_of_input(void) +{ + uid_t user = getuid(); + struct passwd *user_pw = getpwuid(user); + gid_t *gids = NULL; + int number_of_groups = 0; + struct group *input_group = getgrnam("input"); + + EINA_SAFETY_ON_NULL_RETURN_VAL(user_pw, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(input_group, EINA_FALSE); + + if (getgrouplist(user_pw->pw_name, getgid(), NULL, &number_of_groups) != -1) + { +ERR("Failed to enumerate groups of user"); +return EINA_FALSE; + } + number_of_groups ++; + gids = alloca((number_of_groups) * sizeof(gid_t)); + if (getgrouplist(user_pw->pw_name, getgid(), gids, &number_of_groups) == -1) + { +ERR("Failed to get groups of user"); +return EINA_FALSE; + } + + for (int i = 0; i < number_of_groups; ++i) + { +if (gids[i] == input_group->gr_gid) + return EINA_TRUE; + } + return EINA_FALSE; +} E_Config_Dialog * e_int_config_swipebindings(Evas_Object *parent EINA_UNUSED, const char *params) @@ -966,13 +998,22 @@ e_int_config_swipebindings(Evas_Object *parent EINA_UNUSED, const char *params) v->basic.create_widgets = _basic_create_widgets; v->override_auto_apply = 1; + if (!_user_part_of_input()) + { +e_module_dialog_show(NULL, "Gesture Recognition", "Your user is not part of the input group, li
[EGIT] [core/efl] master 01/01: eeze_scanner: do not crash
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=046c5cd58e1feb8760a1fbf4a1bb4253ed40f947 commit 046c5cd58e1feb8760a1fbf4a1bb4253ed40f947 Author: Marcel Hollerbach Date: Mon Mar 15 14:01:32 2021 +0100 eeze_scanner: do not crash the free logic here was wrong. The udev_device_get_parent results get automatically unrefed when the original device is deleted. This caused random segfaults when starting e. --- src/lib/eeze/eeze_udev_walk.c | 18 ++ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/lib/eeze/eeze_udev_walk.c b/src/lib/eeze/eeze_udev_walk.c index 4cd661b184..5df34178a8 100644 --- a/src/lib/eeze/eeze_udev_walk.c +++ b/src/lib/eeze/eeze_udev_walk.c @@ -40,7 +40,7 @@ EAPI const char * eeze_udev_walk_get_sysattr(const char *syspath, const char *sysattr) { - _udev_device *device, *child, *parent; + _udev_device *device, *parent; const char *test = NULL; if (!syspath) @@ -49,18 +49,12 @@ eeze_udev_walk_get_sysattr(const char *syspath, if (!(device = _new_device(syspath))) return NULL; - for (parent = device; parent;) + for (parent = device; parent && !test;) { -if ((test = udev_device_get_sysattr_value(parent, sysattr))) - { - test = eina_stringshare_add(test); - udev_device_unref(parent); - return test; - } -child = parent; -parent = udev_device_get_parent(child); -udev_device_unref(child); +test = udev_device_get_sysattr_value(parent, sysattr); +parent = udev_device_get_parent(parent); } - return NULL; + udev_device_unref(device); + return eina_stringshare_add(test); } --
[EGIT] [core/efl] master 01/01: ci: there is no heif
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3cd6191409207813a3801c584996fa1942e0f9d1 commit 3cd6191409207813a3801c584996fa1942e0f9d1 Author: Marcel Hollerbach Date: Sun Mar 14 14:56:08 2021 +0100 ci: there is no heif --- .ci/ci-configure.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.ci/ci-configure.sh b/.ci/ci-configure.sh index 85aeb75202..77c196848b 100755 --- a/.ci/ci-configure.sh +++ b/.ci/ci-configure.sh @@ -17,7 +17,7 @@ if [ "$DISTRO" != "" ] ; then # - Ibus ENABLED_LINUX_COPTS=" -Dfb=true -Dsdl=true -Dbuffer=true -Dbuild-id=travis-build \ -Ddebug-threads=true -Dglib=true -Dg-mainloop=true -Dxpresent=true -Dxinput22=true \ - -Devas-loaders-disabler=json,avif -Decore-imf-loaders-disabler= \ + -Decore-imf-loaders-disabler= \ -Dharfbuzz=true -Dpixman=true -Dhyphen=true -Defl-one=true \ -Dvnc-server=true -Delua=true -Dbindings=lua,cxx,mono -Delogind=false -Dinstall-eo-files=true -Dphysics=true" @@ -26,7 +26,7 @@ if [ "$DISTRO" != "" ] ; then -Dopengl=none -Deina-magic-debug=false -Dbuild-examples=false -Dbuild-tests=false \ -Dcrypto=gnutls -Dglib=false -Dgstreamer=false -Dsystemd=false -Dpulseaudio=false \ -Dnetwork-backend=connman -Dxinput2=false -Dtslib=false \ - -Devas-loaders-disabler=gst,pdf,ps,raw,svg,xcf,bmp,dds,eet,generic,gif,ico,jp2k,json,pmaps,psd,tga,tgv,tiff,wbmp,webp,xpm,avif \ + -Devas-loaders-disabler=gst,pdf,ps,raw,svg,xcf,bmp,dds,eet,generic,gif,ico,jp2k,json,pmaps,psd,tga,tgv,tiff,wbmp,webp,xpm,avif,heif \ -Decore-imf-loaders-disabler=xim,ibus,scim \ -Dfribidi=false -Dfontconfig=false \ -Dedje-sound-and-video=false -Dembedded-lz4=false -Dlibmount=false -Dv4l2=false \ @@ -37,7 +37,7 @@ if [ "$DISTRO" != "" ] ; then MINGW_COPTS="--cross-file .ci/cross_toolchain.txt -Davahi=false -Deeze=false -Dsystemd=false \ -Dpulseaudio=false -Dx11=false -Dopengl=none -Dlibmount=false \ - -Devas-loaders-disabler=json,pdf,ps,raw,svg,rsvg,avif \ + -Devas-loaders-disabler=json,pdf,ps,raw,svg,rsvg,avif,heif \ -Dharfbuzz=true -Dpixman=true -Dembedded-lz4=false " if [ "$1" = "default" ]; then --
[EGIT] [core/efl] master 01/01: efl_ui_collection: disable desktop_entry behaviour when in api call
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5215421570119b721d7b38f4adf4e6049b5dfeaa commit 5215421570119b721d7b38f4adf4e6049b5dfeaa Author: Marcel Hollerbach Date: Sun Mar 14 14:34:14 2021 +0100 efl_ui_collection: disable desktop_entry behaviour when in api call otherwise only the last item would have been selected. --- src/lib/elementary/efl_ui_collection.c | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_collection.c b/src/lib/elementary/efl_ui_collection.c index bd3123a70f..2161181687 100644 --- a/src/lib/elementary/efl_ui_collection.c +++ b/src/lib/elementary/efl_ui_collection.c @@ -147,6 +147,7 @@ typedef struct { Efl_Gfx_Entity *sizer; unsigned int start_id, end_id; Eina_Bool allow_manual_deselection : 1; + Eina_Bool api_selection_change : 1; } Efl_Ui_Collection_Data; static Eina_Bool register_item(Eo *obj, Efl_Ui_Collection_Data *pd, Efl_Ui_Item *item); @@ -579,7 +580,7 @@ _selection_changed(void *data, const Efl_Event *ev) { _single_selection_behaviour(obj, pd, ev->object); } -else if (pd->mode == EFL_UI_SELECT_MODE_MULTI && _elm_config->desktop_entry) +else if (pd->mode == EFL_UI_SELECT_MODE_MULTI && _elm_config->desktop_entry && !pd->api_selection_change) { const Evas_Modifier *mod = evas_key_modifier_get(evas_object_evas_get(ev->object)); if (!(efl_input_clickable_interaction_get(ev->object) @@ -,13 +1112,17 @@ _selectable_range_apply(Eina_List *start, Eina_Bool flag) EOLIAN static void _efl_ui_collection_efl_ui_multi_selectable_all_select(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd) { + pd->api_selection_change = EINA_TRUE; _selectable_range_apply(pd->items, EINA_TRUE); + pd->api_selection_change = EINA_FALSE; } EOLIAN static void _efl_ui_collection_efl_ui_multi_selectable_all_unselect(Eo *obj EINA_UNUSED, Efl_Ui_Collection_Data *pd) { + pd->api_selection_change = EINA_TRUE; _selectable_range_apply(pd->items, EINA_FALSE); + pd->api_selection_change = EINA_FALSE; } static void --
[EGIT] [apps/terminology] master 01/03: controls: always focus new button
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=45308392499df4ec5c5f0a74b6f5413bfa30b584 commit 45308392499df4ec5c5f0a74b6f5413bfa30b584 Author: Marcel Hollerbach Date: Wed Dec 9 10:40:59 2020 +0100 controls: always focus new button if the terminal is unfocused, the layout is not allowed to get focus anymore. This way we ensure that cases where we have multiple ui elements overlapping cause problems. --- src/bin/controls.c | 224 +++-- src/bin/win.c | 6 ++ 2 files changed, 119 insertions(+), 111 deletions(-) diff --git a/src/bin/controls.c b/src/bin/controls.c index 6214118..85d5dd2 100644 --- a/src/bin/controls.c +++ b/src/bin/controls.c @@ -19,6 +19,7 @@ typedef struct _Controls_Ctx { Evas_Object *base; Evas_Object *bg; Evas_Object *term; + Evas_Object *new_btn; void (*donecb) (void *data); void *donedata; } Controls_Ctx; @@ -351,141 +352,142 @@ controls_show(Evas_Object *win, Evas_Object *base, Evas_Object *bg, Evas_Object *ct_boxh, *ct_boxv, *ct_box, *ct_box2; Controls_Ctx *ctx; - if (eina_hash_find(controls, &win) || - elm_layout_content_get(base, "terminology.controls")) + ctx = eina_hash_find(controls, &win); + if (ctx) { donecb(donedata); -return; } + else + { +ctx = malloc(sizeof(*ctx)); +assert(ctx); +ctx->win = win; +ctx->wn = win_evas_object_to_win(win); +ctx->base = base; +ctx->bg = bg; +ctx->term = term; +ctx->donecb = donecb; +ctx->donedata = donedata; + +eina_hash_add(controls, &win, ctx); + +ctx->frame = o = elm_frame_add(win); +evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); +evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); +elm_object_text_set(o, _("Controls")); + +ct_boxv = o = elm_box_add(win); +elm_box_horizontal_set(o, EINA_FALSE); +elm_object_content_set(ctx->frame, o); +evas_object_show(o); - ctx = malloc(sizeof(*ctx)); - assert(ctx); - ctx->win = win; - ctx->wn = win_evas_object_to_win(win); - ctx->base = base; - ctx->bg = bg; - ctx->term = term; - ctx->donecb = donecb; - ctx->donedata = donedata; - - eina_hash_add(controls, &win, ctx); - - ctx->frame = o = elm_frame_add(win); - evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_text_set(o, _("Controls")); - - ct_boxv = o = elm_box_add(win); - elm_box_horizontal_set(o, EINA_FALSE); - elm_object_content_set(ctx->frame, o); - evas_object_show(o); - - ct_boxh = o = elm_box_add(win); - elm_box_pack_end(ct_boxv, o); - elm_box_horizontal_set(o, EINA_TRUE); - evas_object_show(o); +ct_boxh = o = elm_box_add(win); +elm_box_pack_end(ct_boxv, o); +elm_box_horizontal_set(o, EINA_TRUE); +evas_object_show(o); - ct_box = o = elm_box_add(win); - elm_box_pack_end(ct_boxh, o); - evas_object_show(o); +ct_box = o = elm_box_add(win); +elm_box_pack_end(ct_boxh, o); +evas_object_show(o); - o = _button_add(win, _("New"), "window-new", - _cb_ct_new, ctx); - elm_box_pack_end(ct_box, o); - elm_object_focus_set(o, EINA_TRUE); +o = _button_add(win, _("New"), "window-new", +_cb_ct_new, ctx); +elm_box_pack_end(ct_box, o); +ctx->new_btn=o; - o = _sep_add_h(win); - elm_box_pack_end(ct_box, o); +o = _sep_add_h(win); +elm_box_pack_end(ct_box, o); - o = _button_add(win, _("Split V"), "split-v", - _cb_ct_split_v, ctx); - elm_box_pack_end(ct_box, o); +o = _button_add(win, _("Split V"), "split-v", +_cb_ct_split_v, ctx); +elm_box_pack_end(ct_box, o); - o = _button_add(win, _("Split H"), "split-h", - _cb_ct_split_h, ctx); - elm_box_pack_end(ct_box, o); +o = _button_add(win, _("Split H"), "split-h", +_cb_ct_split_h, ctx); +elm_box_pack_end(ct_box, o); - o = _sep_add_h(win); - elm_box_pack_end(ct_box, o); +o = _sep_add_h(win); +elm_box_pack_end(ct_box, o); - o = _button_add(win, _("Miniview"), "view-restore", - _cb_ct_miniview, ctx); - elm_box_pack_end(ct_box, o); +o = _button_add(win, _("Miniview"), "view-restore", +_cb_ct_miniview, ctx); +elm_box_pack_end(ct_box, o); - o
[EGIT] [core/enlightenment] master 01/01: e_shelf: support state changes within the animation
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=88263553734e2b3ae06f7db8792178b03d587980 commit 88263553734e2b3ae06f7db8792178b03d587980 Author: Marcel Hollerbach Date: Sat Oct 10 14:41:01 2020 +0200 e_shelf: support state changes within the animation the animation will get inverted now when you move your cursor within the hide animation into the object again. This should remove some stuttering that might be visible on your screen. --- src/bin/e_shelf.c | 8 1 file changed, 8 insertions(+) diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index 79b652567..4808c66f6 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -530,13 +530,21 @@ e_shelf_toggle(E_Shelf *es, int show) { ecore_timer_del(es->hide_timer); es->hide_timer = NULL; + return; //we should not add a animator here, the shelf cannot have moved yet. } + if (!es->hide_animator) { es->hide_begin = ecore_loop_time_get(); es->hide_animator = ecore_animator_add(_e_shelf_cb_hide_animator, es); } + else + { + double time_elapsed = ecore_loop_time_get() - es->hide_begin; + es->hide_begin = ecore_loop_time_get() - (es->cfg->hide_duration - time_elapsed); + } + } } else if ((!show) && (!es->hidden) && ((!es->gadcon) || (!es->gadcon->editing)) && --
[EGIT] [core/efl] efl-1.25 05/05: build: addition to abf0e9dffe35da8fa6e20055f53786b2adbec271
stefan pushed a commit to branch efl-1.25. http://git.enlightenment.org/core/efl.git/commit/?id=4774e7d6827afef9e5c14b0c6cc07431b424ffc1 commit 4774e7d6827afef9e5c14b0c6cc07431b424ffc1 Author: Marcel Hollerbach Date: Fri Sep 25 14:05:16 2020 +0200 build: addition to abf0e9dffe35da8fa6e20055f53786b2adbec271 the fix is also needed in ecore_imf modules. Thank you Ross! --- src/modules/ecore_imf/scim/meson.build | 2 +- src/modules/ecore_imf/xim/meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/ecore_imf/scim/meson.build b/src/modules/ecore_imf/scim/meson.build index 6f67ebc69d..68d94793e5 100644 --- a/src/modules/ecore_imf/scim/meson.build +++ b/src/modules/ecore_imf/scim/meson.build @@ -9,7 +9,7 @@ if not scim_dep.found() scim_dep = dependency('scim-1.0') endif -mod_deps = [ecore, ecore_imf, ecore_x, ecore_x_deps, ecore_evas, scim_dep, dependency('glib-2.0')] +mod_deps = [ecore, ecore_imf, ecore_x, ecore_x_ext_deps, ecore_evas, scim_dep, dependency('glib-2.0')] shared_module(mod_name, mod_src, diff --git a/src/modules/ecore_imf/xim/meson.build b/src/modules/ecore_imf/xim/meson.build index d5411c77d9..928f396a10 100644 --- a/src/modules/ecore_imf/xim/meson.build +++ b/src/modules/ecore_imf/xim/meson.build @@ -2,7 +2,7 @@ mod_src = files([ 'ecore_imf_xim.c', ]) -mod_deps = [ecore, ecore_imf, ecore_input, ecore_x, ecore_x_deps, ecore_evas] +mod_deps = [ecore, ecore_imf, ecore_input, ecore_x, ecore_x_ext_deps, ecore_evas] shared_module(mod_name, mod_src, --
[EGIT] [core/efl] efl-1.25 02/05: build: fix dependencies of software engine
stefan pushed a commit to branch efl-1.25. http://git.enlightenment.org/core/efl.git/commit/?id=586357a090bc2de32b77c788afb03bf914fd0e37 commit 586357a090bc2de32b77c788afb03bf914fd0e37 Author: Marcel Hollerbach Date: Thu Sep 24 10:28:27 2020 +0200 build: fix dependencies of software engine before the efl-one refactoring ecore_x_deps contained all the dependencies for x11. After that not anymore, however, we should link software_x11 to x11 libs directly, which is again happening after this here. --- src/modules/evas/engines/software_x11/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/evas/engines/software_x11/meson.build b/src/modules/evas/engines/software_x11/meson.build index 6ddaeee37b..ed0a3e4b46 100644 --- a/src/modules/evas/engines/software_x11/meson.build +++ b/src/modules/evas/engines/software_x11/meson.build @@ -26,7 +26,7 @@ config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1') #ecore_x_deps carries all the extensions etc. so we dont have to search them twice #it looks weird but is right, gl_deps is needed for evas_x_egl.c -engine_deps += [x11, ecore_x, ecore_x_deps, gl_deps] +engine_deps += [x11, ecore_x, ecore_x_ext_deps, gl_deps] shared_module(mod_full_name, engine_src, include_directories : config_dir + [engine_include_dir], --
[EGIT] [core/efl] master 01/01: build: addition to abf0e9dffe35da8fa6e20055f53786b2adbec271
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4700af9c7ddb50270e1bd12303d31d6da176aa87 commit 4700af9c7ddb50270e1bd12303d31d6da176aa87 Author: Marcel Hollerbach Date: Fri Sep 25 14:05:16 2020 +0200 build: addition to abf0e9dffe35da8fa6e20055f53786b2adbec271 the fix is also needed in ecore_imf modules. Thank you Ross! --- src/modules/ecore_imf/scim/meson.build | 2 +- src/modules/ecore_imf/xim/meson.build | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/ecore_imf/scim/meson.build b/src/modules/ecore_imf/scim/meson.build index 6f67ebc69d..68d94793e5 100644 --- a/src/modules/ecore_imf/scim/meson.build +++ b/src/modules/ecore_imf/scim/meson.build @@ -9,7 +9,7 @@ if not scim_dep.found() scim_dep = dependency('scim-1.0') endif -mod_deps = [ecore, ecore_imf, ecore_x, ecore_x_deps, ecore_evas, scim_dep, dependency('glib-2.0')] +mod_deps = [ecore, ecore_imf, ecore_x, ecore_x_ext_deps, ecore_evas, scim_dep, dependency('glib-2.0')] shared_module(mod_name, mod_src, diff --git a/src/modules/ecore_imf/xim/meson.build b/src/modules/ecore_imf/xim/meson.build index d5411c77d9..928f396a10 100644 --- a/src/modules/ecore_imf/xim/meson.build +++ b/src/modules/ecore_imf/xim/meson.build @@ -2,7 +2,7 @@ mod_src = files([ 'ecore_imf_xim.c', ]) -mod_deps = [ecore, ecore_imf, ecore_input, ecore_x, ecore_x_deps, ecore_evas] +mod_deps = [ecore, ecore_imf, ecore_input, ecore_x, ecore_x_ext_deps, ecore_evas] shared_module(mod_name, mod_src, --
[EGIT] [core/efl] master 01/01: build: fix dependencies of software engine
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=abf0e9dffe35da8fa6e20055f53786b2adbec271 commit abf0e9dffe35da8fa6e20055f53786b2adbec271 Author: Marcel Hollerbach Date: Thu Sep 24 10:28:27 2020 +0200 build: fix dependencies of software engine before the efl-one refactoring ecore_x_deps contained all the dependencies for x11. After that not anymore, however, we should link software_x11 to x11 libs directly, which is again happening after this here. --- src/modules/evas/engines/software_x11/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/evas/engines/software_x11/meson.build b/src/modules/evas/engines/software_x11/meson.build index 6ddaeee37b..ed0a3e4b46 100644 --- a/src/modules/evas/engines/software_x11/meson.build +++ b/src/modules/evas/engines/software_x11/meson.build @@ -26,7 +26,7 @@ config_h.set('BUILD_ENGINE_SOFTWARE_XLIB', '1') #ecore_x_deps carries all the extensions etc. so we dont have to search them twice #it looks weird but is right, gl_deps is needed for evas_x_egl.c -engine_deps += [x11, ecore_x, ecore_x_deps, gl_deps] +engine_deps += [x11, ecore_x, ecore_x_ext_deps, gl_deps] shared_module(mod_full_name, engine_src, include_directories : config_dir + [engine_include_dir], --
[EGIT] [apps/terminology] master 04/09: Translated using Weblate (German)
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=9e15ea50fb9a2c60ff5d10840b9fd5e1cca4bbbf commit 9e15ea50fb9a2c60ff5d10840b9fd5e1cca4bbbf Author: Marcel Hollerbach Date: Tue Sep 15 07:23:13 2020 + Translated using Weblate (German) Currently translated at 100.0% (245 of 245 strings) Translation: Terminology/Terminology Translate-URL: https://hosted.weblate.org/projects/terminology/terminology/de/ --- po/de.po | 15 --- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/po/de.po b/po/de.po index b6868ff..bbe0517 100644 --- a/po/de.po +++ b/po/de.po @@ -10,16 +10,17 @@ msgstr "" "Project-Id-Version: terminology\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-04-12 00:15+0200\n" -"PO-Revision-Date: 2020-05-08 22:25+0200\n" -"Last-Translator: Milo Ivir \n" -"Language-Team: German \n" +"PO-Revision-Date: 2020-09-15 19:51+\n" +"Last-Translator: Marcel Hollerbach \n" +"Language-Team: German <https://hosted.weblate.org/projects/terminology/"; +"terminology/de/>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3-dev\n" "X-Launchpad-Export-Date: 2014-10-05 12:16+\n" -"X-Generator: Poedit 2.3\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/bin/options_helpers.c:193 src/bin/options.c:227 msgid "Helpers" @@ -637,7 +638,7 @@ msgstr "Unsichtbar" #: src/bin/options_colors.c:22 msgid "Inverse" -msgstr "Inverse" +msgstr "Invers" #: src/bin/options_colors.c:23 msgid "Inverse Background" @@ -901,7 +902,7 @@ msgstr "Das Anzeigen von Medien wird nicht unterstützt" #: src/bin/termpty.c:99 src/bin/termpty.c:141 src/bin/termpty.c:188 #, c-format msgid "memerr: %s" -msgstr "memerr: %s" +msgstr "Speicherfehler: %s" #: src/bin/termpty.c:224 #, c-format --
[EGIT] [core/efl] master 01/01: elm_cnp: adjust image type to real format
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f8ef50eaaab4da110b23570c03e06267869fa2b3 commit f8ef50eaaab4da110b23570c03e06267869fa2b3 Author: Marcel Hollerbach Date: Sat Sep 5 09:07:12 2020 +0200 elm_cnp: adjust image type to real format we should never say that we have image/png etc. if we do not have the respective format. Otherwise we are just confusing the other client. With this you can copy things from elm to thunderbird / libreoffice writer / firefox / telegram / chromium. Please note if you test this: Start *a new xorg session* it was discovered that xorg clients tent to be totally confused if there was a protocol error before, or some wrong mime type was delivered before, thunderbird even likes to crash if this is not done. This should at some point be extended to more image types. --- src/lib/elementary/elm_cnp.c | 52 +++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_cnp.c b/src/lib/elementary/elm_cnp.c index 60b9c75385..005e3a4595 100644 --- a/src/lib/elementary/elm_cnp.c +++ b/src/lib/elementary/elm_cnp.c @@ -51,6 +51,47 @@ _elm_sel_format_to_mime_type(Elm_Sel_Format format) return ret; } +typedef struct { + const unsigned char image_sequence[16]; + size_t image_sequence_len; + const char *mimetype; +} Mimetype_Content_Matcher; + +Mimetype_Content_Matcher matchers[] = { + {{0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A}, 8, "image/png"}, + {{0xFF, 0xD8}, 2, "image/jpeg"}, + {{0x42, 0x4D}, 2, "image/x-ms-bmp"}, + {{0x47, 0x49, 0x46, 0x38, 0x37, 0x61}, 6, "image/gif"}, + {{0x47, 0x49, 0x46, 0x38, 0x39, 0x61}, 6, "image/gif"}, + {{0x49, 0x49, 0x2A, 00}, 4, "image/tiff"}, + {{0x49, 0x4D, 0x00, 0x2A}, 4, "image/tiff"}, + {{0},0, NULL} +}; + +static inline Eina_Array* +_elm_sel_from_content_to_mime_type(const void *buf, size_t buflen) +{ + Eina_Array *ret = eina_array_new(10); + + for (int i = 0; matchers[i].mimetype && eina_array_count(ret) == 0; ++i) + { +if (matchers[i].image_sequence_len >= buflen) continue; +for (size_t j = 0; j < matchers[i].image_sequence_len; ++j) + { + if (((const unsigned char*)buf)[j] == matchers[i].image_sequence[j]) + { + eina_array_push(ret, matchers[i].mimetype); + break; + } + } + } + + if (eina_array_count(ret) != 1) + ERR("Specified mime type is not available"); + + return ret; +} + static inline Elm_Sel_Format _mime_type_to_elm_sel_format(const char *mime_type) { @@ -100,7 +141,16 @@ elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj)); - tmp = _elm_sel_format_to_mime_type(format); + if (format == ELM_SEL_FORMAT_IMAGE) + { +tmp = _elm_sel_from_content_to_mime_type(buf, buflen); + } + else + { +tmp = _elm_sel_format_to_mime_type(format); + } + + if (eina_array_count(tmp) != 1) { ERR("You cannot specify more than one format when setting selection"); --
[EGIT] [core/efl] master 01/01: ecore_evas_x: reply in *any* way with XdndStatus
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6e85742b42431d097e07b4b8bcdb891d0aa4123a commit 6e85742b42431d097e07b4b8bcdb891d0aa4123a Author: Marcel Hollerbach Date: Fri Sep 4 18:22:49 2020 +0200 ecore_evas_x: reply in *any* way with XdndStatus otherwise Xorg stops sometimes to continue sending callbacks to us. Which results in a broken state maschine. --- src/modules/ecore_evas/engines/x/ecore_evas_x.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index c73e530425..bb5f02c853 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -4196,8 +4196,7 @@ _ecore_evas_x_dnd_position(void *udata EINA_UNUSED, int type EINA_UNUSED, void * EINA_SAFETY_ON_NULL_GOTO(ee, end); ecore_evas_geometry_get(ee, &x, &y, &w, &h); Eina_Bool used = ecore_evas_dnd_position_set(ee, 1, EINA_POSITION2D(pos->position.x - x, pos->position.y - y)); - if (used) - ecore_x_dnd_send_status(EINA_TRUE, EINA_FALSE, (Ecore_X_Rectangle){x,y,w,h}, pos->action); + ecore_x_dnd_send_status(used, EINA_FALSE, (Ecore_X_Rectangle){x,y,w,h}, pos->action); end: return ECORE_CALLBACK_PASS_ON; } --
[EGIT] [core/enlightenment] master 02/04: music-control: do not crash if params is NULL
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=0e0cf36a32777a64e432de1aa63d04e35f43729b commit 0e0cf36a32777a64e432de1aa63d04e35f43729b Author: Marcel Hollerbach Date: Wed Sep 2 15:06:13 2020 +0200 music-control: do not crash if params is NULL should not happen normally, but it might happen due to a buggy config screen. --- src/modules/music-control/e_mod_main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/music-control/e_mod_main.c b/src/modules/music-control/e_mod_main.c index 1edd2d2ed..ba9ea22db 100644 --- a/src/modules/music-control/e_mod_main.c +++ b/src/modules/music-control/e_mod_main.c @@ -60,6 +60,7 @@ _music_control(E_Object *obj EINA_UNUSED, const char *params) { E_Music_Control_Module_Context *ctxt = music_control_mod->data; EINA_SAFETY_ON_NULL_RETURN(music_control_mod->data); + EINA_SAFETY_ON_NULL_RETURN(params); if (!strcmp(params, "play")) media_player2_player_play_pause_call(ctxt->mpris2_player); --
[EGIT] [core/enlightenment] master 03/04: e_acpi: add support for bluetooth remote controls
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=124113ad64bab6b7675b90bf6f48c176091dcaf5 commit 124113ad64bab6b7675b90bf6f48c176091dcaf5 Author: Marcel Hollerbach Date: Wed Sep 2 15:04:06 2020 +0200 e_acpi: add support for bluetooth remote controls bluetooth remote controls are for example bt headsets with play / pause / next / prev interactions. --- src/bin/e_acpi.c | 6 ++ src/bin/e_acpi.h | 6 +- src/modules/conf_bindings/e_int_config_acpibindings.c | 8 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/bin/e_acpi.c b/src/bin/e_acpi.c index 39d2bba0c..221a0592c 100644 --- a/src/bin/e_acpi.c +++ b/src/bin/e_acpi.c @@ -79,6 +79,12 @@ static E_ACPI_Device_Simple _devices_simple[] = {"button/battery", E_ACPI_TYPE_BATTERY_BUTTON}, {"video/tabletmode", E_ACPI_TYPE_TABLET}, + //bluetooth virtual input devices for A/V Remote Control + {"cd/next", E_ACPI_TYPE_CD_NEXT}, + {"cd/prev", E_ACPI_TYPE_CD_PREV}, + {"cd/stop", E_ACPI_TYPE_CD_STOP}, + {"cd/play", E_ACPI_TYPE_CD_PLAY}, + {NULL, E_ACPI_TYPE_UNKNOWN} }; diff --git a/src/bin/e_acpi.h b/src/bin/e_acpi.h index 9dac1e825..780f32420 100644 --- a/src/bin/e_acpi.h +++ b/src/bin/e_acpi.h @@ -34,7 +34,11 @@ typedef enum _E_Acpi_Type E_ACPI_TYPE_ZOOM, // 27 E_ACPI_TYPE_SCREENLOCK, // 28 E_ACPI_TYPE_BATTERY_BUTTON, // 29 - E_ACPI_TYPE_TABLET // 30 + E_ACPI_TYPE_TABLET, // 30 + E_ACPI_TYPE_CD_NEXT, // 31 + E_ACPI_TYPE_CD_PREV, // 32 + E_ACPI_TYPE_CD_PLAY, // 33 + E_ACPI_TYPE_CD_STOP, // 34 } E_Acpi_Type; /* enum for acpi signals */ diff --git a/src/modules/conf_bindings/e_int_config_acpibindings.c b/src/modules/conf_bindings/e_int_config_acpibindings.c index d5fb81bba..57a10852e 100644 --- a/src/modules/conf_bindings/e_int_config_acpibindings.c +++ b/src/modules/conf_bindings/e_int_config_acpibindings.c @@ -417,6 +417,14 @@ _binding_label_get(E_Config_Binding_Acpi *binding) if (binding->status == 1) return _("Tablet Enabled"); return _("Tablet"); } + if (binding->type == E_ACPI_TYPE_CD_NEXT) + return _("Next Media"); + if (binding->type == E_ACPI_TYPE_CD_PREV) + return _("Prev Media"); + if (binding->type == E_ACPI_TYPE_CD_STOP) + return _("Stop Media"); + if (binding->type == E_ACPI_TYPE_CD_PLAY) + return _("Play Media"); return _("Unknown"); } --
[EGIT] [core/enlightenment] master 04/04: music-player: also support constant play and constant pause
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=423e26cb8e3a1de30f603f6c854a988e030bd002 commit 423e26cb8e3a1de30f603f6c854a988e030bd002 Author: Marcel Hollerbach Date: Wed Sep 2 16:08:55 2020 +0200 music-player: also support constant play and constant pause this is usefull if you have the buttons for it. --- src/modules/music-control/e_mod_main.c | 18 +- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modules/music-control/e_mod_main.c b/src/modules/music-control/e_mod_main.c index ba9ea22db..201a31c90 100644 --- a/src/modules/music-control/e_mod_main.c +++ b/src/modules/music-control/e_mod_main.c @@ -62,18 +62,26 @@ _music_control(E_Object *obj EINA_UNUSED, const char *params) EINA_SAFETY_ON_NULL_RETURN(music_control_mod->data); EINA_SAFETY_ON_NULL_RETURN(params); - if (!strcmp(params, "play")) + if (!strcmp(params, "play")) //legacy compatibility - this should probebly be called playpause media_player2_player_play_pause_call(ctxt->mpris2_player); else if (!strcmp(params, "next")) media_player2_player_next_call(ctxt->mpris2_player); else if (!strcmp(params, "previous")) media_player2_player_previous_call(ctxt->mpris2_player); + else if (!strcmp(params, "pause")) + media_player2_player_pause_call(ctxt->mpris2_player); + else if (!strcmp(params, "play_music")) //the name play was already taken by play pause, see above + media_player2_player_play_call(ctxt->mpris2_player); } #define ACTION_NEXT "next_music" #define ACTION_NEXT_NAME "Next Music" #define ACTION_PLAY_PAUSE "playpause_music" #define ACTION_PLAY_PAUSE_NAME "Play/Pause Music" +#define ACTION_PAUSE "pause_music" +#define ACTION_PAUSE_NAME "Pause Music" +#define ACTION_PLAY "play_music" +#define ACTION_PLAY_NAME "Play Music" #define ACTION_PREVIOUS "previous_music" #define ACTION_PREVIOUS_NAME "Previous Music" @@ -91,6 +99,14 @@ _actions_register(E_Music_Control_Module_Context *ctxt) action->func.go = _music_control; e_action_predef_name_set(_e_music_control_Name, ACTION_PLAY_PAUSE_NAME, ACTION_PLAY_PAUSE, "play", NULL, 0); + action = e_action_add(ACTION_PAUSE); + action->func.go = _music_control; + e_action_predef_name_set(_e_music_control_Name, ACTION_PAUSE_NAME, +ACTION_PAUSE, "pause", NULL, 0); + action = e_action_add(ACTION_PLAY); + action->func.go = _music_control; + e_action_predef_name_set(_e_music_control_Name, ACTION_PLAY_NAME, +ACTION_PLAY, "play_music", NULL, 0); action = e_action_add(ACTION_PREVIOUS); action->func.go = _music_control; e_action_predef_name_set(_e_music_control_Name, ACTION_PREVIOUS_NAME, --
[EGIT] [core/enlightenment] master 01/04: acpi-bindings: also set params
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=703f42e0994ea0b6e7818f9778d18d72f7aca37d commit 703f42e0994ea0b6e7818f9778d18d72f7aca37d Author: Marcel Hollerbach Date: Wed Sep 2 15:03:12 2020 +0200 acpi-bindings: also set params this seems to have been forgotten, up to this point, you could not add params to the config. --- src/modules/conf_bindings/e_int_config_acpibindings.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/conf_bindings/e_int_config_acpibindings.c b/src/modules/conf_bindings/e_int_config_acpibindings.c index a13a61c2f..d5fb81bba 100644 --- a/src/modules/conf_bindings/e_int_config_acpibindings.c +++ b/src/modules/conf_bindings/e_int_config_acpibindings.c @@ -476,6 +476,8 @@ _cb_actions_changed(void *data) } eina_stringshare_replace(&binding->action, dsc->act_cmd); + if (dsc->act_params) eina_stringshare_refplace(&binding->params, dsc->act_params); + e_widget_disabled_set(cfdata->o_params, !(dsc->editable)); if ((!dsc->editable) && (dsc->act_params)) --
[EGIT] [core/efl] master 01/01: build: only find env once
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e2a1cdfda76dd0061ef8e0ab25aee4e042304366 commit e2a1cdfda76dd0061ef8e0ab25aee4e042304366 Author: Marcel Hollerbach Date: Wed Sep 2 09:25:51 2020 +0200 build: only find env once this was a bit messy, and we might have caused a bug on the ML with that. --- meson.build| 2 ++ src/bin/edje/meson.build | 2 -- src/bin/elementary/meson.build | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index c7af80917f..ba34a9c311 100644 --- a/meson.build +++ b/meson.build @@ -126,6 +126,8 @@ if sys_sun add_global_arguments('-D_POSIX_PTHREAD_SEMANTICS', language: 'c') endif +env = find_program('env', native: true) + config_h = configuration_data() config_h.set_quoted('MODULE_ARCH', version_name) config_h.set_quoted('PACKAGE', meson.project_name()) diff --git a/src/bin/edje/meson.build b/src/bin/edje/meson.build index 82d51c7a77..e715571852 100644 --- a/src/bin/edje/meson.build +++ b/src/bin/edje/meson.build @@ -45,7 +45,6 @@ else if sys_windows == true edje_cc_exe = [edje_cc.full_path()] else -env = find_program('env', native: true) edje_cc_exe = [env, asan_option, 'EFL_RUN_IN_TREE=1', edje_cc.full_path()] endif edje_depends = [edje_cc, epp, evas_engine_buffer_mod, embryo_cc] @@ -98,7 +97,6 @@ if meson.is_cross_build() edje_codegen_path = _edje_codegen.path() edje_codegen_exe = [_edje_codegen] else - env = find_program('env', native: true) edje_codegen_exe = [env, asan_option, 'EFL_RUN_IN_TREE=1', edje_codegen.full_path()] endif diff --git a/src/bin/elementary/meson.build b/src/bin/elementary/meson.build index f31ed793e3..1d7aa75057 100644 --- a/src/bin/elementary/meson.build +++ b/src/bin/elementary/meson.build @@ -234,7 +234,6 @@ endif if meson.is_cross_build() elementary_codegen_exe = [find_program('elementary_codegen', native: true)] else - env = find_program('env', native: true) elementary_codegen_exe = [env, asan_option, 'EFL_RUN_IN_TREE=1', elementary_codegen.full_path()] endif @@ -260,7 +259,6 @@ if meson.is_cross_build() elm_prefs_cc_path = _elm_prefs_cc.path() elm_prefs_cc_exe = [_elm_prefs_cc] else - env = find_program('env', native: true) elm_prefs_cc_exe = [env, asan_option, 'EFL_RUN_IN_TREE=1', elm_prefs_cc.full_path()] endif --
[EGIT] [core/efl] master 03/07: eldbus_fake_server: fix string format usage
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c40c279308e8202236cae8aad2396f573397bcb3 commit c40c279308e8202236cae8aad2396f573397bcb3 Author: Marcel Hollerbach Date: Tue Sep 1 13:03:46 2020 +0200 eldbus_fake_server: fix string format usage we know that there is no % etc. formatting in this string, however, we can just use the ck abort msg macro from libcheck directly. --- src/tests/eldbus/eldbus_fake_server.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/tests/eldbus/eldbus_fake_server.c b/src/tests/eldbus/eldbus_fake_server.c index c9ef1d95a0..41d4b1f7a4 100644 --- a/src/tests/eldbus/eldbus_fake_server.c +++ b/src/tests/eldbus/eldbus_fake_server.c @@ -179,7 +179,6 @@ _fake_server_name_request_cb(void *data EINA_UNUSED, if (ELDBUS_NAME_REQUEST_REPLY_PRIMARY_OWNER != reply) { const char *errcode = "Unknown reply"; -char errmsg[512]; switch (reply) { case ELDBUS_NAME_REQUEST_REPLY_IN_QUEUE: @@ -194,9 +193,8 @@ _fake_server_name_request_cb(void *data EINA_UNUSED, break; default: break; } -snprintf(errmsg, sizeof(errmsg), "Failed to start fake server: %s (%u)", +ck_abort_msg( "Failed to start fake server: %s (%u)", errcode, reply); -ck_abort_msg(errmsg); } ecore_main_loop_quit(); --
[EGIT] [core/efl] master 02/07: efl: remove unused functions
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0817c49e753d0e6fc24a301bc697a3c669ec2603 commit 0817c49e753d0e6fc24a301bc697a3c669ec2603 Author: Marcel Hollerbach Date: Tue Sep 1 13:09:37 2020 +0200 efl: remove unused functions these are not used, if they are used again in the future, they can be get back via git. --- src/lib/eina/eina_matrix.c | 37 src/lib/elementary/efl_ui_table.c | 22 --- src/lib/elementary/efl_ui_textpath.c| 6 src/lib/evas/canvas/evas_object_textblock.c | 44 - 4 files changed, 109 deletions(-) diff --git a/src/lib/eina/eina_matrix.c b/src/lib/eina/eina_matrix.c index db3779b8d6..b82bca2e1d 100644 --- a/src/lib/eina/eina_matrix.c +++ b/src/lib/eina/eina_matrix.c @@ -62,43 +62,6 @@ /** * Local * **/ -/** @cond internal */ -/* - * In the range [-pi pi] - * (4/pi)*x - ((4/(pi*pi))*x*abs(x)) - * http://www.devmaster.net/forums/showthread.php?t=5784 - */ -#define EXTRA_PRECISION -static inline double - _sin(double x) -{ - const double B = 4/M_PI; - const double C = -4/(M_PI*M_PI); - - double y = (B * x) + (C * x * fabs(x)); - -#ifdef EXTRA_PRECISION - // const float Q = 0.775; - const double P = 0.225; - - y = P * (y * fabs(y) - y) + y; // Q * y + P * y * abs(y) -#endif - return y; -} - -static inline double -_cos(double x) -{ - x += M_PI_2; - - if (x > M_PI) // Original x > pi/2 - { -x -= 2 * M_PI; // Wrap: cos(x) = cos(x - 2 pi) - } - - return _sin(x); -} -/** @endcond */ /** * API * diff --git a/src/lib/elementary/efl_ui_table.c b/src/lib/elementary/efl_ui_table.c index 861b78ab3a..12b8342c1e 100644 --- a/src/lib/elementary/efl_ui_table.c +++ b/src/lib/elementary/efl_ui_table.c @@ -640,28 +640,6 @@ _efl_ui_table_item_iterator_free(Table_Item_Iterator *it) free(it); } -static inline Eina_Iterator * -_efl_ui_table_item_iterator_create(Eo *obj, Eina_Inlist *list) -{ - Table_Item_Iterator *it; - - it = calloc(1, sizeof(*it)); - if (!it) return NULL; - - EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR); - - it->object = obj; - it->cur = list; - - it->iterator.version = EINA_ITERATOR_VERSION; - it->iterator.next = FUNC_ITERATOR_NEXT(_efl_ui_table_item_iterator_next); - it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER( - _efl_ui_table_item_iterator_get_container); - it->iterator.free = FUNC_ITERATOR_FREE(_efl_ui_table_item_iterator_free); - - return &it->iterator; -} - EOLIAN static Eina_Iterator * _efl_ui_table_efl_container_content_iterate(Eo *obj, Efl_Ui_Table_Data *pd) { diff --git a/src/lib/elementary/efl_ui_textpath.c b/src/lib/elementary/efl_ui_textpath.c index 539f996108..321cd20568 100644 --- a/src/lib/elementary/efl_ui_textpath.c +++ b/src/lib/elementary/efl_ui_textpath.c @@ -85,12 +85,6 @@ _rad_to_deg(double rad) return 180 * rad / M_PI; } -static inline double -_deg_to_rad(double angle) -{ - return angle / 180 * M_PI; -} - static void _segment_draw(Efl_Ui_Textpath_Data *pd, int slice_no, double dt, double dist, int w1, int cmp, Evas_Map *map, Eina_Bezier bezier, diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 45fc1a0028..c3c1426ea7 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -8473,50 +8473,6 @@ evas_object_textblock_replace_char_get(const Efl_Canvas_Textblock *obj) return o->repch; } -/** - * @internal - * Advance p_buff to point after the end of the string. It's used with the - * @ref escaped_strings[] variable. - * - * @param p_buff the pointer to the current string. - */ -static inline void -_escaped_advance_after_end_of_string(const char **p_buf) -{ - while (**p_buf != 0) (*p_buf)++; - (*p_buf)++; -} - -/** - * @internal - * Advance p_buff to point after the end of the string. It's used with the - * @ref escaped_strings[] variable. Also chec if matches. - * FIXME: doc. - * - * @param p_buff the pointer to the current string. - */ -static inline int -_escaped_is_eq_and_advance(const char *s, const char *s_end, - const char **p_m, const char *m_end) -{ - Eina_Bool reached_end; - for (;((s < s_end) && (*p_m < m_end)); s++, (*p_m)++) - { -if (*s != **p_m) - { - _escaped_advance_after_end_of_string(p_m); - return 0; - } - } - - reached_end = !**p_m;
[EGIT] [core/efl] master 06/07: eldbus: use the const macros we have
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9fb91f4a9fafcee5390c23440d337e0040466764 commit 9fb91f4a9fafcee5390c23440d337e0040466764 Author: Marcel Hollerbach Date: Tue Sep 1 13:25:06 2020 +0200 eldbus: use the const macros we have clang warns about that, its rather harmless, but nicer. --- src/examples/eldbus/dbusmodel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/examples/eldbus/dbusmodel.c b/src/examples/eldbus/dbusmodel.c index cc09d79ae3..1bca10b972 100644 --- a/src/examples/eldbus/dbusmodel.c +++ b/src/examples/eldbus/dbusmodel.c @@ -234,7 +234,7 @@ main(int argc, char **argv EINA_UNUSED) if (efl_model_children_count_get(root)) eina_future_then(efl_model_children_slice_get(root, 0, efl_model_children_count_get(root)), - _slice, (uintptr_t) 0); + _slice, NULL); ecore_main_loop_begin(); efl_del(root); --
[EGIT] [core/efl] master 07/07: efl_ui_focus_manager_calc: fix CID
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f9ade56cf8de4f040572f368da644f2a83bdee92 commit f9ade56cf8de4f040572f368da644f2a83bdee92 Author: Marcel Hollerbach Date: Tue Sep 1 14:10:21 2020 +0200 efl_ui_focus_manager_calc: fix CID coverity was complaining that the DIRECTION ACCESS macro might access over a negative direction. However, complement of a 2D direction is always a 2D direction. But coverity cannot detect that. --- src/lib/elementary/efl_ui_focus_manager_calc.c | 15 --- 1 file changed, 12 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 7fb80c38c2..5b7589d95f 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -160,20 +160,25 @@ _manager_in_chain_set(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd) efl_class_name_get(pd->root->focusable), root); } + static void border_onedirection_set(Node *node, Efl_Ui_Focus_Direction direction, Eina_List *list) { Node *partner; Eina_List *lnode; Border *border; + Efl_Ui_Focus_Direction complement; EINA_SAFETY_ON_FALSE_RETURN(DIRECTION_IS_2D(direction)); + complement = efl_ui_focus_util_direction_complement(direction); + //this is basically a nop. The complement of 2D will *always* be 2D + EINA_SAFETY_ON_FALSE_RETURN(DIRECTION_IS_2D(complement)); border = &DIRECTION_ACCESS(node, direction); EINA_LIST_FREE(border->one_direction, partner) { -Border *b = &DIRECTION_ACCESS(partner, efl_ui_focus_util_direction_complement(direction)); +Border *b = &DIRECTION_ACCESS(partner, complement); b->cleanup_nodes = eina_list_remove(b->cleanup_nodes, node); } @@ -181,7 +186,7 @@ border_onedirection_set(Node *node, Efl_Ui_Focus_Direction direction, Eina_List EINA_LIST_FOREACH(border->one_direction, lnode, partner) { -Border *comp_border = &DIRECTION_ACCESS(partner,efl_ui_focus_util_direction_complement(direction)); +Border *comp_border = &DIRECTION_ACCESS(partner, complement); comp_border->cleanup_nodes = eina_list_append(comp_border->cleanup_nodes, node); } @@ -192,14 +197,18 @@ border_onedirection_cleanup(Node *node, Efl_Ui_Focus_Direction direction) { Node *partner; Border *border; + Efl_Ui_Focus_Direction complement; EINA_SAFETY_ON_FALSE_RETURN(DIRECTION_IS_2D(direction)); + complement = efl_ui_focus_util_direction_complement(direction); + //this is basically a nop. The complement of 2D will *always* be 2D + EINA_SAFETY_ON_FALSE_RETURN(DIRECTION_IS_2D(complement)); border = &DIRECTION_ACCESS(node, direction); EINA_LIST_FREE(border->cleanup_nodes, partner) { -Border *b = &DIRECTION_ACCESS(partner, efl_ui_focus_util_direction_complement(direction)); +Border *b = &DIRECTION_ACCESS(partner, complement); b->one_direction = eina_list_remove(b->one_direction, node); } } --
[EGIT] [core/efl] master 04/07: benchmarks: specify this outside extern "C"
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9673ed6269c6286ffa4828a86a960143afaa7482 commit 9673ed6269c6286ffa4828a86a960143afaa7482 Author: Marcel Hollerbach Date: Tue Sep 1 13:10:03 2020 +0200 benchmarks: specify this outside extern "C" uint128 is defined as a c++ specific type. --- src/benchmarks/eina/city.h | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/benchmarks/eina/city.h b/src/benchmarks/eina/city.h index 90849a1dc6..3a2b06e26a 100644 --- a/src/benchmarks/eina/city.h +++ b/src/benchmarks/eina/city.h @@ -53,6 +53,13 @@ typedef uint32_t uint32; typedef uint64_t uint64; typedef std::pair uint128; +// Hash function for a byte array. +uint128 CityHash128(const char *s, size_t len); + +// Hash function for a byte array. For convenience, a 128-bit seed is also +// hashed into the result. +uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed); + #ifdef __cplusplus extern "C" { #endif @@ -71,13 +78,6 @@ uint64 CityHash64WithSeed(const char *buf, size_t len, uint64 seed); uint64 CityHash64WithSeeds(const char *buf, size_t len, uint64 seed0, uint64 seed1); -// Hash function for a byte array. -uint128 CityHash128(const char *s, size_t len); - -// Hash function for a byte array. For convenience, a 128-bit seed is also -// hashed into the result. -uint128 CityHash128WithSeed(const char *s, size_t len, uint128 seed); - // Hash 128 input bits down to 64 bits of output. // This is intended to be a reasonably good hash function. inline uint64 Hash128to64(const uint128& x) { --
[EGIT] [core/efl] master 05/07: efl: resolve warnings over misleading code
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=13a76dded08cf1bd55b42b867aaa524553edac6c commit 13a76dded08cf1bd55b42b867aaa524553edac6c Author: Marcel Hollerbach Date: Tue Sep 1 13:23:42 2020 +0200 efl: resolve warnings over misleading code this is meant to be like this, but clang thought of an intention mistake here that went unsighted. --- src/lib/eo/eo.c | 6 +- src/lib/evas/canvas/evas_object_textblock.c | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index c3b6a8b6f7..1b9cdd9c9a 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -1721,7 +1721,9 @@ efl_class_new(const Efl_Class_Description *desc, const Efl_Class *parent_id, ... mro = eina_list_remove(mro, NULL); mro = eina_list_prepend(mro, klass); if ((desc->type == EFL_CLASS_TYPE_MIXIN) && (desc->data_size > 0)) - mixins = eina_list_prepend(mixins, klass); + { +mixins = eina_list_prepend(mixins, klass); + } /* Copy the extensions and free the list */ { @@ -1751,7 +1753,9 @@ efl_class_new(const Efl_Class_Description *desc, const Efl_Class *parent_id, ... size_t extn_data_off = klass->data_offset; if (klass->desc->type != EFL_CLASS_TYPE_MIXIN) + { extn_data_off += EO_ALIGN_SIZE(klass->desc->data_size); + } /* Feed the mixins data offsets and free the mixins list. */ { diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index c3c1426ea7..5d1c476466 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -6647,7 +6647,9 @@ _layout_par(Ctxt *c) it = _ITEM(eina_list_data_get(c->par->logical_items)); if (c->line_no == 0 || c->o->multiline) - _layout_line_new(c, it->format); + { +_layout_line_new(c, it->format); + } /* We walk on our own because we want to be able to add items from * inside the list and then walk them on the next iteration. */ --
[EGIT] [core/efl] master 01/07: efl: remove bool and string pointer mixup
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5f73d130473e285d9d2a4ae4d61e6ba7ae4c41a2 commit 5f73d130473e285d9d2a4ae4d61e6ba7ae4c41a2 Author: Marcel Hollerbach Date: Tue Sep 1 13:02:51 2020 +0200 efl: remove bool and string pointer mixup --- src/lib/elementary/efl_ui_alert_popup.c | 2 +- src/lib/elementary/efl_ui_textbox.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_alert_popup.c b/src/lib/elementary/efl_ui_alert_popup.c index 65dcb4914c..bb3d26b8de 100644 --- a/src/lib/elementary/efl_ui_alert_popup.c +++ b/src/lib/elementary/efl_ui_alert_popup.c @@ -61,7 +61,7 @@ const char * _efl_ui_alert_popup_text_get(Eo *obj EINA_UNUSED, Efl_Ui_Alert_Popup_Data *pd, const char *part) { if (!_elm_layout_part_aliasing_eval(obj, &part, EINA_TRUE)) - return EINA_FALSE; + return NULL; if (eina_streq(part, "efl.text.title")) { if (pd->title_text) diff --git a/src/lib/elementary/efl_ui_textbox.c b/src/lib/elementary/efl_ui_textbox.c index 46451cdcd1..165ef1f0e4 100644 --- a/src/lib/elementary/efl_ui_textbox.c +++ b/src/lib/elementary/efl_ui_textbox.c @@ -3426,7 +3426,7 @@ static const char * _efl_ui_textbox_text_get(Eo *obj EINA_UNUSED, Efl_Ui_Textbox_Data *pd, const char *part) { - if (!part) return EINA_FALSE; + if (!part) return NULL; if (!strcmp("efl.text_guide", part)) { --
[EGIT] [admin/devs] master 01/01: remove unused keys
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/admin/devs.git/commit/?id=6e00c0274c9ac5483bb6316519d9bd3de9d542fc commit 6e00c0274c9ac5483bb6316519d9bd3de9d542fc Author: Marcel Hollerbach Date: Mon Aug 17 13:33:17 2020 +0200 remove unused keys --- developers/bu5hm4n/flups-test.pub| 1 - developers/bu5hm4n/mac.pub | 1 - developers/bu5hm4n/phab-test-key.pub | 1 - developers/bu5hm4n/work.pub | 1 - 4 files changed, 4 deletions(-) diff --git a/developers/bu5hm4n/flups-test.pub b/developers/bu5hm4n/flups-test.pub deleted file mode 100644 index 69989da..000 --- a/developers/bu5hm4n/flups-test.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 C3NzaC1lZDI1NTE5IHF6+TSfhKYRqb256/sj8KXuV6mqj9G9nWubDNTc/Tuo marcel@bu5hm4n-xps-power diff --git a/developers/bu5hm4n/mac.pub b/developers/bu5hm4n/mac.pub deleted file mode 100644 index acaa393..000 --- a/developers/bu5hm4n/mac.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 C3NzaC1lZDI1NTE5IGY2l+KxJCjZeZ9/ecS0dVCln9Lu07fThjjjvmOZlvL9 marcelhollerbach@localhost diff --git a/developers/bu5hm4n/phab-test-key.pub b/developers/bu5hm4n/phab-test-key.pub deleted file mode 100644 index 7a042d8..000 --- a/developers/bu5hm4n/phab-test-key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa B3NzaC1yc2EDAQABAAABAQC+x/JChHzr3Jei8LLg8btEkVVDrCWc+LUzgjVYndTfYiuuOMYyA4eAR2z5YIFh+LcuZYWrXPPJDkg32lD2SDUeGSjSheoDZRiXbgBuaEXXFhKLA8bnrN/9rlkYKXyc/l/FzQulWUsIBdGGS7EX/WhaKkcpbqKju8h/YvFhY/+75PCYEkFtmWOK4n+uGxE5MI8hjCn8LYmkxN0FgplmDALSaQtY+JzuZUENsBOvOApfL45rn+tiWQCH50sS5A10oHBE+KahGBkxduXQOusJJfF+bIgasp6hnthzcXyszh6Nx9u6PRNd5skEfGzZwW434jxvz9dvLYs60+YwLdysBQeN diff --git a/developers/bu5hm4n/work.pub b/developers/bu5hm4n/work.pub deleted file mode 100644 index c9eb8f1..000 --- a/developers/bu5hm4n/work.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 C3NzaC1lZDI1NTE5IHTwkRZIALb3NESoqB2/CxOaPCyuApmUPk006OK7pxde m.hollerbach@nb-763 --
[EGIT] [core/efl] master 01/01: eo: set idx on exit to 1 not to 0
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=812e9f9f09e4789284536ea7fc10634e0c1148b7 commit 812e9f9f09e4789284536ea7fc10634e0c1148b7 Author: Marcel Hollerbach Date: Mon Aug 10 10:43:18 2020 +0200 eo: set idx on exit to 1 not to 0 if this is set to 0 the next iteration in the upper frame event would decrement the 0 again leading to a overflow making the iteration and callback array overflow. Long story short: set ifx to 1 to prevent overflow, test added. fixes T8787 Differential Revision: https://phab.enlightenment.org/D12101 --- src/lib/eo/eo_base_class.c | 4 +++- src/tests/eo/signals/signals_main.c | 31 ++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index bd394910c9..e7445021bd 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -2146,7 +2146,9 @@ restart_back: end: // Handling restarting list walking complete exit. - if (restart_lookup) restart_lookup->idx = 0; + // This must be 1, we copy back the frame idx at the end of the for loop. + // The next iteration then decrements the idx by 1 which results in the effective running idx of that frame beeing 0 + if (restart_lookup) restart_lookup->idx = 1; EVENT_STACK_POP(pd); diff --git a/src/tests/eo/signals/signals_main.c b/src/tests/eo/signals/signals_main.c index c3b1648c17..859e145ecb 100644 --- a/src/tests/eo/signals/signals_main.c +++ b/src/tests/eo/signals/signals_main.c @@ -74,6 +74,22 @@ _restart_3_cb(void *data, const Efl_Event *event) called++; } +static void +_restart_3_no_stop_cb(void *data, const Efl_Event *event) +{ + fprintf(stderr, "restart 3 no stop inside: %i\n", inside); + fprintf(stderr, "restart 3 no stop exit inside: %i (%i)\n", inside, called); + + if (!inside) + { +inside = EINA_TRUE; +efl_event_callback_call(event->object, event->desc, data); +inside = EINA_FALSE; + } + + called++; +} + int main(int argc, char *argv[]) { @@ -219,8 +235,21 @@ main(int argc, char *argv[]) efl_event_callback_legacy_call(obj, EV_RESTART, NULL); fail_if(inside); fail_if(called != 3); - efl_unref(obj); + + pd = NULL; + inside = EINA_FALSE; + called = 0; + + obj = efl_add_ref(SIMPLE_CLASS, NULL); + efl_event_callback_add(obj, EV_RESTART, _restart_3_no_stop_cb, NULL); + efl_event_callback_add(obj, EV_RESTART, _null_cb, NULL); + efl_event_callback_add(obj, EV_RESTART, _restart_3_no_stop_cb, NULL); + efl_event_callback_call(obj, EV_RESTART, NULL); + fail_if(inside); + fail_if(called != 2); + + efl_object_shutdown(); return 0; } --
[EGIT] [core/efl] master 03/03: eo: evalulate special counts earlier
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=67cd017aac4a83a8f83f1ed84f3ea461c1c0b416 commit 67cd017aac4a83a8f83f1ed84f3ea461c1c0b416 Author: Marcel Hollerbach Date: Fri Jul 31 10:50:04 2020 +0200 eo: evalulate special counts earlier we have these special counts which are > 0 when there is a callback subscribed. THey are currently evalulated in _callback_call. However, we can also skip the entire call from inside eo_base_class as we are having the fields there as well. This way we are skipping the obj pointer lookup and vtable lookup. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D12079 --- src/lib/eo/eo_base_class.c | 14 -- 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index 8132bcea58..bd394910c9 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -237,9 +237,9 @@ _efl_invalidate(_Eo_Object *obj) id = _eo_obj_id_get(obj); - efl_event_callback_call(id, EFL_EVENT_INVALIDATE, NULL); - pd = efl_data_scope_get(id, EFL_OBJECT_CLASS); + if (pd->event_cb_EFL_EVENT_INVALIDATE) + efl_event_callback_call(id, EFL_EVENT_INVALIDATE, NULL); efl_invalidate(id); @@ -1575,7 +1575,8 @@ _efl_object_event_callback_priority_add(Eo *obj, Efl_Object_Data *pd, _eo_callbacks_sorted_insert(pd, cb); _special_event_count_inc(obj, pd, &(cb->items.item)); - efl_event_callback_call(obj, EFL_EVENT_CALLBACK_ADD, (void *)arr); + if (pd->event_cb_EFL_EVENT_CALLBACK_ADD) + efl_event_callback_call(obj, EFL_EVENT_CALLBACK_ADD, (void *)arr); return EINA_TRUE; @@ -1601,8 +1602,8 @@ _efl_object_event_callback_clean(Eo *obj, Efl_Object_Data *pd, pd->need_cleaning = EINA_TRUE; else _eo_callback_remove(obj, pd, cb); - - efl_event_callback_call(obj, EFL_EVENT_CALLBACK_DEL, (void *)array); + if (pd->event_cb_EFL_EVENT_CALLBACK_DEL) + efl_event_callback_call(obj, EFL_EVENT_CALLBACK_DEL, (void *)array); } EOLIAN static Eina_Bool @@ -1729,7 +1730,8 @@ _efl_object_event_callback_array_priority_add(Eo *obj, Efl_Object_Data *pd, ev_array[i].priority = 0; ev_array[i].func = NULL; ev_array[i].user_data = NULL; - efl_event_callback_call(obj, EFL_EVENT_CALLBACK_ADD, ev_array); + if (pd->event_cb_EFL_EVENT_CALLBACK_ADD) + efl_event_callback_call(obj, EFL_EVENT_CALLBACK_ADD, ev_array); return EINA_TRUE; --
[EGIT] [core/efl] master 02/03: eo: event callback call optimization
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3d547a0b06c5932d40fa0b12c32224fce5937652 commit 3d547a0b06c5932d40fa0b12c32224fce5937652 Author: Marcel Hollerbach Date: Wed Aug 5 10:45:29 2020 +0200 eo: event callback call optimization a little overfiew to how eos event emission is working: - In eo there are 2 types of events restart events and normal events. Normals are *always* emitted from callback_max to 0 Restarts are emitted from the previous emissions current idx to 0. The previous emission will stop then - To keep track of the previous event emissions for restarts there was an eina inlist. - To keep track of other things in eo, there was an additional eo event stack frame (newly inserted events etc. etc.) This commit now uses this event stack frame for implementing the details about the restart events. This has the advatage that every efl_object_data contains one byte less, and the up to date keeping of the id's in the restart infrastructure is not needed anymore, making the whole event emission code less instructions and faster. How this now works: - Every emission has a event emission frame, when the emission starts, the frame is added, next points to the next older event emission. In this event stack frame we are storing the current idx, the description and a few other things that are not really relevant at this point. - when a restart event is started, this event stack is searched from the current frame up to the next one featuring the same event description. The event frame stack is then remembered, if the event emission is done, the current idx (normally 0 or something higher when callback was stopped) is then copyied back to the earlier frame. - Based on the nature of the event frame stacks, the idx is updated every iteration. And for the restart events, we only need to know the next, which removes the need of permanently updating the idx in the current stack. - The event frame stack is not allocated on the heap, hence more things in there does not matter at all. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D12097 --- src/lib/eo/eo_base_class.c | 61 -- 1 file changed, 21 insertions(+), 40 deletions(-) diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index 565f4805e8..8132bcea58 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -38,6 +38,7 @@ struct _Efl_Event_Forwarder struct _Efl_Event_Callback_Frame { + const Efl_Event_Description*desc; Efl_Event_Callback_Frame *next; unsigned int idx; unsigned int inserted_before; @@ -65,8 +66,6 @@ struct _Efl_Object_Data Efl_Object_Extension *ext; - Eina_Inlist *current; - Efl_Event_Callback_Frame *event_frame; Eo_Callback_Description **callbacks; #ifdef EFL64 @@ -2035,11 +2034,12 @@ _event_callback_call(Eo *obj_id, Efl_Object_Data *pd, Eina_Bool legacy_compare) { Eo_Callback_Description **cb; - Eo_Current_Callback_Description *lookup, saved; + Efl_Event_Callback_Frame *restart_lookup = NULL; //a pointer to a frame, which is high up the stack, which we use to restore Efl_Event ev; unsigned int idx; Eina_Bool callback_already_stopped, ret; Efl_Event_Callback_Frame frame = { + .desc = desc, .next = NULL, .idx = 0, .inserted_before = 0, @@ -2069,7 +2069,6 @@ _event_callback_call(Eo *obj_id, Efl_Object_Data *pd, EVENT_STACK_PUSH(pd, &frame); - lookup = NULL; callback_already_stopped = pd->callback_stopped; pd->callback_stopped = EINA_FALSE; ret = EINA_TRUE; @@ -2109,9 +2108,6 @@ restart_back: (event_freeze_count || pd->event_freeze_count)) continue; - // Handle nested restart of walking list - if (lookup) lookup->current = idx - 1; - it->func((void *) (*cb)->func_data, &ev); /* Abort callback calling if the func says so. */ if (pd->callback_stopped) @@ -2119,10 +2115,6 @@ restart_back: ret = EINA_FALSE; goto end; } - // We have actually walked this list during a nested call - if (lookup && - lookup->current == 0) - goto end; } } else @@ -2133,9 +2125,6 @@ restart_back: (event_freeze_count || pd->event_freeze_count)) continue;
[EGIT] [core/efl] master 01/02: efl_ui_focus_manager: reduce the amount of relying on events
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8d034f08e8322921b1b059cc2e93e10f7b0550f1 commit 8d034f08e8322921b1b059cc2e93e10f7b0550f1 Author: Marcel Hollerbach Date: Wed Jul 29 12:01:43 2020 +0200 efl_ui_focus_manager: reduce the amount of relying on events with this commit we are not replying on event invocations anymore, but rather on direct flag observation in the focus manager itself. This reduces the amount of events that are emitted as a consequence to elements beeing marked dirty segnificantly. startup time of elementary_test goes from 0.50 to 0.46s. Differential Revision: https://phab.enlightenment.org/D12072 --- src/lib/elementary/efl_ui_focus_manager.eo | 9 + src/lib/elementary/efl_ui_focus_manager_calc.c | 20 src/lib/elementary/efl_ui_focus_manager_calc.eo | 1 + src/lib/elementary/efl_ui_focus_manager_sub.c | 15 +-- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/lib/elementary/efl_ui_focus_manager.eo b/src/lib/elementary/efl_ui_focus_manager.eo index dd95256b6d..080edaaf7a 100644 --- a/src/lib/elementary/efl_ui_focus_manager.eo +++ b/src/lib/elementary/efl_ui_focus_manager.eo @@ -96,6 +96,15 @@ interface Efl.Ui.Focus.Manager { over the border objects.]] } } +@property border_elements_changed { +[[Return $true if the border elements have changed since the last invocation of @.border_elements.get]] +get { + +} +values { + changed : bool; [[$true if there was a change, $false if not]] +} +} @property viewport_elements { [[Elements that are at the border of the viewport diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.c b/src/lib/elementary/efl_ui_focus_manager_calc.c index 173a663d79..7fb80c38c2 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.c +++ b/src/lib/elementary/efl_ui_focus_manager_calc.c @@ -85,6 +85,7 @@ typedef struct { int freeze; Node *root; +Eina_Bool border_elements_changed; } Efl_Ui_Focus_Manager_Calc_Data; static Eina_Mempool *_node_mempool; @@ -247,7 +248,6 @@ node_item_free(Node *item) Eina_List *l; Eo *obj = item->manager; FOCUS_DATA(obj); - Eina_Bool dirty_added = EINA_FALSE; /*cleanup graph parts*/ @@ -264,7 +264,7 @@ node_item_free(Node *item) if (partner->type != NODE_TYPE_ONLY_LOGICAL) \ { \ dirty_add(obj, pd, partner); \ - dirty_added = EINA_TRUE; \ + pd->border_elements_changed = EINA_TRUE; \ } \ } @@ -278,7 +278,7 @@ node_item_free(Node *item) } //the unregistering of a item should ever result in atleast a coords_dirty call - if (dirty_added) + if (pd->border_elements_changed) efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, NULL); /*cleanup manager householdings*/ @@ -475,7 +475,9 @@ dirty_add(Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Node *dirty) pd->dirty = eina_list_append(pd->dirty, dirty); dirty->on_list = EINA_TRUE; - efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, NULL); + if (!pd->border_elements_changed) + efl_event_callback_call(obj, EFL_UI_FOCUS_MANAGER_EVENT_COORDS_DIRTY, NULL); + pd->border_elements_changed = EINA_TRUE; } @@ -924,6 +926,7 @@ _efl_ui_focus_manager_calc_efl_object_constructor(Eo *obj, Efl_Ui_Focus_Manager_ pd->node_hash = eina_hash_pointer_new(_free_node); pd->graph_ctx.offset_focusable = offsetof(Node, focusable); + pd->border_elements_changed = EINA_TRUE; return obj; } @@ -1110,9 +1113,18 @@ _elements_iterator_new(const Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd) EOLIAN static Eina_Iterator* _efl_ui_focus_manager_calc_efl_ui_focus_manager_border_elements_get(const Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd) { + pd->border_elements_changed = EINA_FALSE; return (Eina_Iterator*) _elements_iterator_new(obj, pd); } + +EOLIAN static Eina_Bool +_efl_ui_focus_manager_calc_efl_ui_focus_manager_border_elements_changed_get(const Eo *obj EINA_UNUSED, Efl_Ui_Focus_Manager_Calc_Data *pd) +{ + return pd->border_elements_changed; +} + + EOLIAN static Eina_Iterator* _efl_ui_focus_manager_calc_efl_ui_focus_manager_viewport_elements_get(const Eo *obj, Efl_Ui_Focus_Manager_Calc_Data *pd, Eina_Rect viewport) { diff --git a/src/lib/elementary/efl_ui_focus_manager_calc.eo b/src/lib/elementary/efl_ui_focus_manager_calc.eo index ed86b7b05c..d7f9124fe8 100644 --- a/src/lib/elementary/efl_ui_focus_manager_calc.eo +++ b/src/lib/elementary/efl_ui_focus_manager_calc.eo @@ -70,6 +70,7 @@ class @beta Efl.Ui.Focus.Manager_Calc e
[EGIT] [core/efl] master 01/01: tests: fix eio tests
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a25bc7e76972230cd51dde3d0227ef6886612ce4 commit a25bc7e76972230cd51dde3d0227ef6886612ce4 Author: Marcel Hollerbach Date: Tue Jul 28 09:23:11 2020 +0200 tests: fix eio tests there are tests that init & shutdown efl_object in the same test, which is since to switch to const _CLASS_GET dangerously wrong. I checked for more cases but only found cases where no _CLASS_GET macros where used. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D12069 --- src/tests/eio/eio_test_manager.c | 4 1 file changed, 4 insertions(+) diff --git a/src/tests/eio/eio_test_manager.c b/src/tests/eio/eio_test_manager.c index a12b9e7a78..3c49cf6271 100644 --- a/src/tests/eio/eio_test_manager.c +++ b/src/tests/eio/eio_test_manager.c @@ -323,6 +323,8 @@ EFL_START_TEST(efl_io_test_instantiated) { Efl_Io_Manager *manager; + efl_object_init(); + ck_assert_int_eq(eio_shutdown(), 0); ecore_init(); fail_if(efl_provider_find(efl_main_loop_get(), EFL_IO_MANAGER_CLASS) != NULL); @@ -332,6 +334,8 @@ EFL_START_TEST(efl_io_test_instantiated) manager = efl_provider_find(efl_main_loop_get(), EFL_IO_MANAGER_CLASS); fail_if(manager == NULL); fail_if(!efl_isa(manager, EFL_IO_MANAGER_CLASS)); + + efl_object_shutdown(); } EFL_END_TEST --
[EGIT] [core/enlightenment] master 01/01: gesture_recognition: display in correct zone
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=722e563cbdab4c452a5ec042eefa7f2972548e67 commit 722e563cbdab4c452a5ec042eefa7f2972548e67 Author: Marcel Hollerbach Date: Tue Jul 28 10:02:58 2020 +0200 gesture_recognition: display in correct zone --- src/modules/gesture_recognition/e_mod_main.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/gesture_recognition/e_mod_main.c b/src/modules/gesture_recognition/e_mod_main.c index 521063e12..b1ddbf988 100644 --- a/src/modules/gesture_recognition/e_mod_main.c +++ b/src/modules/gesture_recognition/e_mod_main.c @@ -81,7 +81,9 @@ _start_swipe_gesture_recognizition(struct libinput_device *dev) if (e_bindings_swipe_available()) { -stats->visuals.win = elm_notify_add(e_comp->elm); +E_Zone *zone = e_zone_current_get(); + +stats->visuals.win = elm_notify_add(zone->base); elm_notify_align_set(stats->visuals.win, 0.5, 0.5); elm_object_tree_focus_allow_set(stats->visuals.win, EINA_FALSE); evas_object_layer_set(stats->visuals.win, E_LAYER_CLIENT_PRIO); --
[EGIT] [core/efl] master 02/02: ci: do not build tests on ci
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f9653f015b0db37cc1c68a449998f6270385521a commit f9653f015b0db37cc1c68a449998f6270385521a Author: Marcel Hollerbach Date: Mon Jul 27 13:49:20 2020 +0200 ci: do not build tests on ci we need to do the same on any platform that upgrades check from 0.15.0 to 0.15.1. For now this is only with macos Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D12068 --- .ci/ci-configure.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/ci-configure.sh b/.ci/ci-configure.sh index 0b2f5a64c1..85aeb75202 100755 --- a/.ci/ci-configure.sh +++ b/.ci/ci-configure.sh @@ -96,7 +96,7 @@ elif [ "$TRAVIS_OS_NAME" = "osx" ]; then zlib_vers=$(grep ZLIB_VERSION /usr/include/zlib.h|head -n1|awk '{print $3}'|cut -d'"' -f2) sed -iE "s/REPLACE_THIS/$zlib_vers/" .ci/zlib.pc export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:/usr/local/Cellar/libffi/$LIBFFI_VER/lib/pkgconfig:$(pwd)/.ci" - mkdir build && meson build -Dopengl=full -Decore-imf-loaders-disabler=scim,ibus -Dx11=false -Davahi=false -Deeze=false -Dsystemd=false -Dnls=false -Dcocoa=true -Dgstreamer=false + mkdir build && meson build -Dopengl=full -Decore-imf-loaders-disabler=scim,ibus -Dx11=false -Davahi=false -Deeze=false -Dsystemd=false -Dnls=false -Dcocoa=true -Dgstreamer=false -Dbuild-tests=false else # Native Ubuntu Linux Travis builds (non-docker) OPTS=" -Decore-imf-loaders-disabler=scim,ibus" --
[EGIT] [core/efl] master 01/02: build: warn of faulty check version
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b7a61632d0f639cb19823e712da9ee1a7ed145ec commit b7a61632d0f639cb19823e712da9ee1a7ed145ec Author: Marcel Hollerbach Date: Mon Jul 27 12:24:57 2020 +0200 build: warn of faulty check version Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D12067 --- meson.build | 4 1 file changed, 4 insertions(+) diff --git a/meson.build b/meson.build index f7f392da75..90116b67d3 100644 --- a/meson.build +++ b/meson.build @@ -582,6 +582,10 @@ subdir(join_paths('data')) if get_option('build-tests') check = dependency('check') + if (check.version() == '0.15.1') +error('There is a bug in check@0.15.1 which does not allow efl to be compiled with it. Please downgrade / upgrade or disable tests') + endif + test_env = environment() test_env.set('EFL_RUN_IN_TREE', '1') --
[EGIT] [core/enlightenment] enlightenment-0.24 01/05: Revert "tiling - avoid infinite loop of not fit - toggle float, not fit, toggle"
raster pushed a commit to branch enlightenment-0.24. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6a3648a5fdd621897f53b8ece5d95c6bb7b9dfec commit 6a3648a5fdd621897f53b8ece5d95c6bb7b9dfec Author: Marcel Hollerbach Date: Tue Jul 21 14:16:43 2020 +0200 Revert "tiling - avoid infinite loop of not fit - toggle float, not fit, toggle" This reverts commit 265c3068740529990a2ab14477db20e773b149d4. This is somehow the wrong way of doing that. Next commit will bring protection against multiple recursive window_tree_apply calls. Additionally, we should prepare to *not* accidently tile a window that has been previously untiled. --- src/modules/tiling/e_mod_tiling.c | 5 - 1 file changed, 5 deletions(-) diff --git a/src/modules/tiling/e_mod_tiling.c b/src/modules/tiling/e_mod_tiling.c index 7f81070fc..fba3f1a8e 100644 --- a/src/modules/tiling/e_mod_tiling.c +++ b/src/modules/tiling/e_mod_tiling.c @@ -46,7 +46,6 @@ typedef struct Client_Extra Eina_Bool floating E_BITFIELD; Eina_Bool tiled E_BITFIELD; Eina_Bool tracked E_BITFIELD; - Eina_Bool being_removed E_BITFIELD; } Client_Extra; typedef struct _Instance @@ -796,8 +795,6 @@ _client_remove_no_apply(E_Client *ec) return EINA_FALSE; } - extra->being_removed = EINA_TRUE; - if (extra->drag.drag) { _client_drag_terminate(ec); @@ -845,8 +842,6 @@ toggle_floating(E_Client *ec) return; } - if (extra->being_removed) return; - extra->floating = !extra->floating; if (!desk_should_tile_check(ec->desk)) --
[EGIT] [core/enlightenment] enlightenment-0.24 02/05: tiling: prevent potential recursive apply calls
raster pushed a commit to branch enlightenment-0.24. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d42adad715c7e8dfef425411f6e31052968b3ced commit d42adad715c7e8dfef425411f6e31052968b3ced Author: Marcel Hollerbach Date: Tue Jul 21 14:46:04 2020 +0200 tiling: prevent potential recursive apply calls additionally, this ensures that clients that cannot be layouted are definitly outside the tree. Without applying the window tree again. With all this tiling can be used quite normally. If you want to know exactly what is going on, set notify level to info, then tiling tells you what cannot be tiled. --- src/modules/tiling/e_mod_tiling.c | 26 +++--- src/modules/tiling/window_tree.c | 10 +++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/modules/tiling/e_mod_tiling.c b/src/modules/tiling/e_mod_tiling.c index fba3f1a8e..9bbed0ff4 100644 --- a/src/modules/tiling/e_mod_tiling.c +++ b/src/modules/tiling/e_mod_tiling.c @@ -115,6 +115,7 @@ static struct tiling_mod_main_g *act_move_right, *act_toggle_split_mode, *act_swap_window; Desk_Split_Type *current_split_type; + Ecore_Job *apply_tree_job; struct { Evas_Object *comp_obj; @@ -480,7 +481,7 @@ _reapply_tree(void) if (zw > 0 && zh > 0) tiling_window_tree_apply(_G.tinfo->tree, zx, zy, zw, zh, tiling_g.config->window_padding, - EINA_FALSE); + EINA_TRUE); else ERR("The zone desk geometry was not useful at all (%d,%d,%d,%d)", zx, zy, zw, zh); } @@ -859,11 +860,22 @@ toggle_floating(E_Client *ec) } } +static void +_window_tree_apply_delayed(void *data EINA_UNUSED) +{ + _reapply_tree(); + ecore_job_del(_G.apply_tree_job); + _G.apply_tree_job = NULL; +} + void tiling_e_client_does_not_fit(E_Client *ec) { E_Notification_Notify n; Eina_Strbuf *buf; + Client_Extra *extra = tiling_entry_no_desk_func(ec); + + EINA_SAFETY_ON_NULL_RETURN(extra); buf = eina_strbuf_new(); eina_strbuf_append_printf(buf, _("Window %s cannot be tiled\n"), @@ -876,9 +888,17 @@ tiling_e_client_does_not_fit(E_Client *ec) n.body = eina_strbuf_string_get(buf); n.timeout = 8000; e_notification_client_send(&n, NULL, NULL); - toggle_floating(ec); - eina_strbuf_string_free(buf); + + EINA_SAFETY_ON_TRUE_RETURN(extra->floating); + + //remove the client here without applying the tree again to break maybe possible recursions + { + extra->floating = EINA_TRUE; + _restore_client(ec); + _client_remove_no_apply(ec); + _G.apply_tree_job = ecore_job_add(_window_tree_apply_delayed, NULL); + } } static void diff --git a/src/modules/tiling/window_tree.c b/src/modules/tiling/window_tree.c index fa3fa8da6..f9800a2c6 100644 --- a/src/modules/tiling/window_tree.c +++ b/src/modules/tiling/window_tree.c @@ -306,10 +306,14 @@ _tiling_window_tree_level_apply(Window_Tree *root, Evas_Coord x, Evas_Coord y, if (!e_object_is_del(E_OBJECT(root->client))) { if ((root->client->icccm.min_w > (w - padding)) || - (root->client->icccm.min_h > (h - padding))) + (root->client->icccm.min_h > (h - padding))) { *floaters = eina_list_append(*floaters, root->client); - tiling_e_client_move_resize_extra(root->client, x, y, - w - padding, h - padding); + } else { + tiling_e_client_move_resize_extra(root->client, x, y, + w - padding, h - padding); + } + + } return; } --
[EGIT] [core/enlightenment] enlightenment-0.24 03/05: e_shelf: only reset autohide timer if we are not hidden
raster pushed a commit to branch enlightenment-0.24. http://git.enlightenment.org/core/enlightenment.git/commit/?id=caaff77b423b8b1d566d6b951da8e2b49f8f7bde commit caaff77b423b8b1d566d6b951da8e2b49f8f7bde Author: Marcel Hollerbach Date: Tue Jul 21 11:20:47 2020 +0200 e_shelf: only reset autohide timer if we are not hidden otherwise we might hide shelfs even if the calendar is shown, without the possibility of reshowing them again. --- src/bin/e_shelf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index f2023fca1..3f273bc70 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -509,7 +509,7 @@ e_shelf_toggle(E_Shelf *es, int show) E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); es->toggle = show; - if (_e_shelf_autohide_timer_extend(es)) return; + if (!es->hidden && _e_shelf_autohide_timer_extend(es)) return; if (es->locked) return; es->interrupted = -1; es->urgent_show = 0; --
[EGIT] [core/enlightenment] master 01/01: gesture_recognizer: add icon
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=91ff9565903c6ab6da9be4b12ea975f0ff6a8175 commit 91ff9565903c6ab6da9be4b12ea975f0ff6a8175 Author: Marcel Hollerbach Date: Tue Jul 21 20:51:07 2020 +0200 gesture_recognizer: add icon thank you very much jf_simon for this icon! :) --- .../e-module-gesture_recognition.edj| Bin 0 -> 30531 bytes src/modules/gesture_recognition/meson.build | 1 - src/modules/gesture_recognition/module.desktop | 2 +- 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/gesture_recognition/e-module-gesture_recognition.edj b/src/modules/gesture_recognition/e-module-gesture_recognition.edj new file mode 100644 index 0..eae0cd28f Binary files /dev/null and b/src/modules/gesture_recognition/e-module-gesture_recognition.edj differ diff --git a/src/modules/gesture_recognition/meson.build b/src/modules/gesture_recognition/meson.build index 5a007ee8e..55a7301ea 100644 --- a/src/modules/gesture_recognition/meson.build +++ b/src/modules/gesture_recognition/meson.build @@ -2,4 +2,3 @@ src = files( 'e_mod_main.c', ) deps += [dependency('libinput')] -desktop_only = true diff --git a/src/modules/gesture_recognition/module.desktop b/src/modules/gesture_recognition/module.desktop index 8136450cb..9d1826825 100644 --- a/src/modules/gesture_recognition/module.desktop +++ b/src/modules/gesture_recognition/module.desktop @@ -2,5 +2,5 @@ Type=Link Name=Gesture Recognition Comment=Gesture recognition using libinput -Icon=e-module-start +Icon=e-module-gesture_recognition X-Enlightenment-ModuleType=utils --
[EGIT] [core/enlightenment] master 01/01: Introduce gesture recognition
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=4678fa60c2759e2ce99334abd4cbf471865825d6 commit 4678fa60c2759e2ce99334abd4cbf471865825d6 Author: Marcel Hollerbach Date: Thu Jul 2 12:18:42 2020 +0200 Introduce gesture recognition This is currently using libinputs gesture recognition. And offers a config screen to setup new gestures. 1. No default gesture bindings are setup 2. When libinput is not available the module is not going to be loaded, and nothing is recognited.+ 3. Only swipe gestures are recognized yet. 4. For now, you are required to be part of the input group, otherwise we cannot get the libinput events. (See Todo 1) 5. The visual representation is not really good. In terms of UI, it is visually showing a value coming from left to right, which is indicating a direction, which is not always the direction of the gesture, which is kind of bad. More improvements needed here. Some things that still can be done: 1. The whole libinput things should be handled by elput, either with the input group hack, or logind, or simply by root. The ideal idea would be that e_sys is creating the elput context, which also listens for new devices etc.. When all this is done, and it recognizes a new device, it can simply sent a message from e_sys to e, that there is some new device, with a opened fd. (However, this all needs to be locked up in a way that e_sys cannot be abused) --- meson_options.txt | 4 + src/bin/e_bindings.c | 150 src/bin/e_bindings.h | 30 + src/bin/e_config.c | 28 + src/bin/e_config.h | 12 + .../conf_bindings/e_int_config_swipebindings.c | 978 + src/modules/conf_bindings/e_mod_main.c | 4 + src/modules/conf_bindings/e_mod_main.h | 2 +- src/modules/conf_bindings/meson.build | 1 + src/modules/gesture_recognition/e_mod_main.c | 287 ++ src/modules/gesture_recognition/meson.build| 5 + src/modules/gesture_recognition/module.desktop | 6 + src/modules/meson.build| 1 + 13 files changed, 1507 insertions(+), 1 deletion(-) diff --git a/meson_options.txt b/meson_options.txt index 016dd8124..faedfeada 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -297,3 +297,7 @@ option('conf-window-remembers', type: 'boolean', value: true, description: 'enable conf-window-remembers module: (default=true)') +option('gesture-recognition', + type: 'boolean', + value: true, + description: 'Enable gesture recognition using libinput, needed to get swipe bindings beeing detected.') diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index 084e6ef51..e2d231761 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -7,6 +7,7 @@ static void _e_bindings_edge_free(E_Binding_Edge *bind); static void _e_bindings_signal_free(E_Binding_Signal *bind); static void _e_bindings_wheel_free(E_Binding_Wheel *bind); static void _e_bindings_acpi_free(E_Binding_Acpi *bind); +static void _e_bindings_swipe_free(E_Binding_Swipe *bind); static Eina_Bool _e_bindings_edge_cb_timer(void *data); /* local subsystem globals */ @@ -17,9 +18,13 @@ static Eina_List *edge_bindings = NULL; static Eina_List *signal_bindings = NULL; static Eina_List *wheel_bindings = NULL; static Eina_List *acpi_bindings = NULL; +static Eina_List *swipe_bindings = NULL; static unsigned int bindings_disabled = 0; +static E_Bindings_Swipe_Live_Update live_update; +static E_Bindings_Swipe_Live_Update live_update_data; + EINTERN E_Action *(*e_binding_key_list_cb)(E_Binding_Context, Ecore_Event_Key*, E_Binding_Modifier, E_Binding_Key **); typedef struct _E_Binding_Edge_Data E_Binding_Edge_Data; @@ -43,6 +48,7 @@ e_bindings_init(void) E_Config_Binding_Edge *ebe; E_Config_Binding_Key *ebk; E_Config_Binding_Acpi *eba; + E_Config_Binding_Acpi *ebsw; Eina_List *l; EINA_LIST_FOREACH(e_bindings->mouse_bindings, l, ebm) @@ -86,6 +92,8 @@ e_bindings_init(void) e_bindings_acpi_add(eba->context, eba->type, eba->status, eba->action, eba->params); + e_bindings_swipe_reset(); + return 1; } @@ -98,6 +106,7 @@ e_bindings_shutdown(void) E_FREE_LIST(signal_bindings, _e_bindings_signal_free); E_FREE_LIST(wheel_bindings, _e_bindings_wheel_free); E_FREE_LIST(acpi_bindings, _e_bindings_acpi_free); + E_FREE_LIST(swipe_bindings, _e_bindings_swipe_free); return 1;
[EGIT] [core/enlightenment] master 03/03: tiling: prevent potential recursive apply calls
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e6609541b1863e17f268c6b66ff42621e4dc1f06 commit e6609541b1863e17f268c6b66ff42621e4dc1f06 Author: Marcel Hollerbach Date: Tue Jul 21 14:46:04 2020 +0200 tiling: prevent potential recursive apply calls additionally, this ensures that clients that cannot be layouted are definitly outside the tree. Without applying the window tree again. With all this tiling can be used quite normally. If you want to know exactly what is going on, set notify level to info, then tiling tells you what cannot be tiled. --- src/modules/tiling/e_mod_tiling.c | 26 +++--- src/modules/tiling/window_tree.c | 10 +++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/modules/tiling/e_mod_tiling.c b/src/modules/tiling/e_mod_tiling.c index fba3f1a8e..9bbed0ff4 100644 --- a/src/modules/tiling/e_mod_tiling.c +++ b/src/modules/tiling/e_mod_tiling.c @@ -115,6 +115,7 @@ static struct tiling_mod_main_g *act_move_right, *act_toggle_split_mode, *act_swap_window; Desk_Split_Type *current_split_type; + Ecore_Job *apply_tree_job; struct { Evas_Object *comp_obj; @@ -480,7 +481,7 @@ _reapply_tree(void) if (zw > 0 && zh > 0) tiling_window_tree_apply(_G.tinfo->tree, zx, zy, zw, zh, tiling_g.config->window_padding, - EINA_FALSE); + EINA_TRUE); else ERR("The zone desk geometry was not useful at all (%d,%d,%d,%d)", zx, zy, zw, zh); } @@ -859,11 +860,22 @@ toggle_floating(E_Client *ec) } } +static void +_window_tree_apply_delayed(void *data EINA_UNUSED) +{ + _reapply_tree(); + ecore_job_del(_G.apply_tree_job); + _G.apply_tree_job = NULL; +} + void tiling_e_client_does_not_fit(E_Client *ec) { E_Notification_Notify n; Eina_Strbuf *buf; + Client_Extra *extra = tiling_entry_no_desk_func(ec); + + EINA_SAFETY_ON_NULL_RETURN(extra); buf = eina_strbuf_new(); eina_strbuf_append_printf(buf, _("Window %s cannot be tiled\n"), @@ -876,9 +888,17 @@ tiling_e_client_does_not_fit(E_Client *ec) n.body = eina_strbuf_string_get(buf); n.timeout = 8000; e_notification_client_send(&n, NULL, NULL); - toggle_floating(ec); - eina_strbuf_string_free(buf); + + EINA_SAFETY_ON_TRUE_RETURN(extra->floating); + + //remove the client here without applying the tree again to break maybe possible recursions + { + extra->floating = EINA_TRUE; + _restore_client(ec); + _client_remove_no_apply(ec); + _G.apply_tree_job = ecore_job_add(_window_tree_apply_delayed, NULL); + } } static void diff --git a/src/modules/tiling/window_tree.c b/src/modules/tiling/window_tree.c index fa3fa8da6..f9800a2c6 100644 --- a/src/modules/tiling/window_tree.c +++ b/src/modules/tiling/window_tree.c @@ -306,10 +306,14 @@ _tiling_window_tree_level_apply(Window_Tree *root, Evas_Coord x, Evas_Coord y, if (!e_object_is_del(E_OBJECT(root->client))) { if ((root->client->icccm.min_w > (w - padding)) || - (root->client->icccm.min_h > (h - padding))) + (root->client->icccm.min_h > (h - padding))) { *floaters = eina_list_append(*floaters, root->client); - tiling_e_client_move_resize_extra(root->client, x, y, - w - padding, h - padding); + } else { + tiling_e_client_move_resize_extra(root->client, x, y, + w - padding, h - padding); + } + + } return; } --
[EGIT] [core/enlightenment] master 01/03: e_shelf: only reset autohide timer if we are not hidden
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=324b2661cee7ddd6576338597180fa795252e82a commit 324b2661cee7ddd6576338597180fa795252e82a Author: Marcel Hollerbach Date: Tue Jul 21 11:20:47 2020 +0200 e_shelf: only reset autohide timer if we are not hidden otherwise we might hide shelfs even if the calendar is shown, without the possibility of reshowing them again. --- src/bin/e_shelf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_shelf.c b/src/bin/e_shelf.c index f2023fca1..3f273bc70 100644 --- a/src/bin/e_shelf.c +++ b/src/bin/e_shelf.c @@ -509,7 +509,7 @@ e_shelf_toggle(E_Shelf *es, int show) E_OBJECT_TYPE_CHECK(es, E_SHELF_TYPE); es->toggle = show; - if (_e_shelf_autohide_timer_extend(es)) return; + if (!es->hidden && _e_shelf_autohide_timer_extend(es)) return; if (es->locked) return; es->interrupted = -1; es->urgent_show = 0; --
[EGIT] [core/enlightenment] master 02/03: Revert "tiling - avoid infinite loop of not fit - toggle float, not fit, toggle"
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=48247416a53d9d39ae96215363347439ec32993d commit 48247416a53d9d39ae96215363347439ec32993d Author: Marcel Hollerbach Date: Tue Jul 21 14:16:43 2020 +0200 Revert "tiling - avoid infinite loop of not fit - toggle float, not fit, toggle" This reverts commit 265c3068740529990a2ab14477db20e773b149d4. This is somehow the wrong way of doing that. Next commit will bring protection against multiple recursive window_tree_apply calls. Additionally, we should prepare to *not* accidently tile a window that has been previously untiled. --- src/modules/tiling/e_mod_tiling.c | 5 - 1 file changed, 5 deletions(-) diff --git a/src/modules/tiling/e_mod_tiling.c b/src/modules/tiling/e_mod_tiling.c index 7f81070fc..fba3f1a8e 100644 --- a/src/modules/tiling/e_mod_tiling.c +++ b/src/modules/tiling/e_mod_tiling.c @@ -46,7 +46,6 @@ typedef struct Client_Extra Eina_Bool floating E_BITFIELD; Eina_Bool tiled E_BITFIELD; Eina_Bool tracked E_BITFIELD; - Eina_Bool being_removed E_BITFIELD; } Client_Extra; typedef struct _Instance @@ -796,8 +795,6 @@ _client_remove_no_apply(E_Client *ec) return EINA_FALSE; } - extra->being_removed = EINA_TRUE; - if (extra->drag.drag) { _client_drag_terminate(ec); @@ -845,8 +842,6 @@ toggle_floating(E_Client *ec) return; } - if (extra->being_removed) return; - extra->floating = !extra->floating; if (!desk_should_tile_check(ec->desk)) --
[EGIT] [core/efl] master 01/01: efl: make all _class_get() functions const
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a931e418234bc567d725c79a9e4d0462e02fa5a7 commit a931e418234bc567d725c79a9e4d0462e02fa5a7 Author: Marcel Hollerbach Date: Thu Jul 16 12:39:23 2020 +0200 efl: make all _class_get() functions const please note, not the return type, but the function. When appending __attribute__((const)) to a function, the compiler is told that its enough to call this function once in a function. This is quite often happening when we are efl_data_scope_get and efl_super in a function that is different from a implemented function. The compiler now starts to remove the calls that aggressivly that we need to ensure that these calls are not removed, which means, the static function calls, and the eo init are now checking the return value of these functions, to ensure that they are called. Please note that you now have to be carefull when your app calls eo_shutdown, if it does so, you *must* call it at the end of a function, or never call class_get after that anymore. Overall this improves elm test runs 0.1s which is fair i guess, the main thing that is faster is textrendering, where is also the point where this is the most beneficial. Please note, this replaces 42 occurences of double _class_get() ... THAT is a sign! Reviewed-by: Stefan Schmidt Reviewed-by: Daniel Kolesa Differential Revision: https://phab.enlightenment.org/D12057 --- src/bin/eolian/headers.c | 2 +- src/bin/eolian/sources.c | 23 -- src/lib/ecore/ecore_exe_eo.h | 2 +- src/lib/ecore_con/ecore_con_eet_base_eo.h | 2 +- src/lib/ecore_con/ecore_con_eet_client_obj_eo.h| 2 +- src/lib/ecore_con/ecore_con_eet_server_obj_eo.h| 2 +- src/lib/edje/edje_edit_eo.h| 2 +- src/lib/elementary/efl_ui_bg_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_button_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_check_legacy_eo.h| 2 +- src/lib/elementary/efl_ui_flip_legacy_eo.h | 2 +- .../efl_ui_focus_parent_provider_gen_eo.h | 2 +- src/lib/elementary/efl_ui_frame_legacy_eo.h| 2 +- src/lib/elementary/efl_ui_image_legacy_eo.h| 2 +- .../elementary/efl_ui_image_zoomable_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_layout_legacy_eo.h | 4 ++-- src/lib/elementary/efl_ui_panes_legacy_eo.h| 2 +- src/lib/elementary/efl_ui_progressbar_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_radio_legacy_eo.h| 2 +- src/lib/elementary/efl_ui_textpath_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_vg_animation_eo.legacy.h | 2 +- src/lib/elementary/efl_ui_video_legacy_eo.h| 2 +- src/lib/elementary/efl_ui_win_inlined_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_win_legacy_eo.h | 2 +- src/lib/elementary/efl_ui_win_socket_legacy_eo.h | 2 +- src/lib/elementary/elm_access_eo.h | 2 +- src/lib/elementary/elm_actionslider_eo.h | 2 +- src/lib/elementary/elm_atspi_app_object_eo.h | 2 +- src/lib/elementary/elm_atspi_bridge_eo.h | 2 +- src/lib/elementary/elm_box_eo.h| 2 +- src/lib/elementary/elm_bubble_eo.h | 2 +- src/lib/elementary/elm_calendar_eo.h | 2 +- src/lib/elementary/elm_calendar_item_eo.h | 2 +- src/lib/elementary/elm_clock_eo.h | 2 +- src/lib/elementary/elm_code_widget_legacy_eo.h | 2 +- src/lib/elementary/elm_color_item_eo.h | 2 +- src/lib/elementary/elm_colorselector_eo.h | 2 +- src/lib/elementary/elm_conformant_eo.h | 2 +- src/lib/elementary/elm_ctxpopup_eo.h | 2 +- src/lib/elementary/elm_ctxpopup_item_eo.h | 2 +- src/lib/elementary/elm_dayselector_eo.h| 2 +- src/lib/elementary/elm_dayselector_item_eo.h | 2 +- src/lib/elementary/elm_diskselector_eo.h | 2 +- src/lib/elementary/elm_diskselector_item_eo.h | 2 +- src/lib/elementary/elm_entry_eo.h | 2 +- src/lib/elementary/elm_fileselector_button_eo.h| 2 +- src/lib/elementary/elm_fileselector_entry_eo.h | 2 +- src/lib/elementary/elm_fileselector_eo.h | 2 +- src/lib/elementary/elm_flipselector_eo.h | 2 +- src/lib/elementary/elm_flipselector_item_eo.h | 2 +- src/lib/elementary/elm_gengrid_eo.h| 2 +- src/lib/elementary/elm_gengrid_item_eo.h | 2 +- src/lib/elementary/elm_gengrid_pan_eo.h| 2 +- src/lib/elementary/elm_genlist_eo.h| 2 +- src/lib/elementary/elm_genlist_item_eo.h | 2 +- src/lib/elementary/elm_genlist_pan_eo.h| 2 +- src/lib/elementary/elm_gesture_layer_eo.h | 2
[EGIT] [core/efl] master 02/02: evas_common_privat: improve tiler merge flag
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d55b7939d6088e987d23ee1b8835cdaeecb55136 commit d55b7939d6088e987d23ee1b8835cdaeecb55136 Author: Marcel Hollerbach Date: Wed Jun 10 20:48:45 2020 +0200 evas_common_privat: improve tiler merge flag when this is a int and you assign 0, the whole "0" for the entire int is moved. When this is a bit flag like this, it is a simple | operation, which makes the whole thing somehow faster. Reviewed-by: Christopher Michael Differential Revision: https://phab.enlightenment.org/D11998 --- src/lib/evas/include/evas_common_private.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/evas/include/evas_common_private.h b/src/lib/evas/include/evas_common_private.h index 4d9368b31b..509f7c93a8 100644 --- a/src/lib/evas/include/evas_common_private.h +++ b/src/lib/evas/include/evas_common_private.h @@ -948,12 +948,12 @@ struct _Tilebuf struct { short w, h; } tile_size; - int need_merge; list_t rects; struct { int x, y, w, h; } prev_add, prev_del; Eina_Bool strict_tiles : 1; + Eina_Bool need_merge : 1; #endif }; --
[EGIT] [core/efl] master 03/03: eina_array: micro optimize eina_array_push
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2dcb18acac4d1384e0651d353c2b1f15a8c5e4d4 commit 2dcb18acac4d1384e0651d353c2b1f15a8c5e4d4 Author: Marcel Hollerbach Date: Wed Jun 10 20:48:37 2020 +0200 eina_array: micro optimize eina_array_push This commit does two things: - Tell the compiler that it is unlikely that we need to grow, and that it is unlikely that data is NULL. Sometimes the if check for data would get dropped out by the compiler when it can be ensured that it is != NULL. However, if we for example efl_add something and eina_push the result, the condition would not be removed, as there is no assertion efl_add would be != NULL. - Do not hide the array assignment in a branch, but make it the default branch, this way instruction cache caches the correct instruction, as branch prediction will now hopefully, due to the hinting, take the correct branch. While benchmarking this here (simply in elementary_perf), this reduced pipeline faults in eina_array_push quite a bit. (Btw. it is hard to track *which* exact calls to eina_array_push do cause that, as mostly this API gets inlined, so it was easier optimizing that, instead of the method arround) Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11997 --- src/lib/eina/eina_inline_array.x | 11 --- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/lib/eina/eina_inline_array.x b/src/lib/eina/eina_inline_array.x index 8367d61e7b..a78b674edd 100644 --- a/src/lib/eina/eina_inline_array.x +++ b/src/lib/eina/eina_inline_array.x @@ -44,16 +44,13 @@ EAPI Eina_Bool eina_array_grow(Eina_Array *array); static inline Eina_Bool eina_array_push(Eina_Array *array, const void *data) { - if (data) - { -if (EINA_UNLIKELY((array->count + 1) > array->total)) goto do_grow; + if (EINA_UNLIKELY(data == NULL)) return EINA_FALSE; + if (EINA_UNLIKELY((array->count + 1) > array->total)) goto do_grow; do_grow_back: -array->data[array->count++] = (void*) data; + array->data[array->count++] = (void*) data; -return EINA_TRUE; - } - return EINA_FALSE; + return EINA_TRUE; do_grow: if (!eina_array_grow(array)) return EINA_FALSE; goto do_grow_back; --
[EGIT] [core/efl] master 01/01: efl_ui_widget: addition to the previous commit
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=721c097bb3e3f64f900b4fe73b8715b61a5cb908 commit 721c097bb3e3f64f900b4fe73b8715b61a5cb908 Author: Marcel Hollerbach Date: Wed Jun 17 09:13:05 2020 +0200 efl_ui_widget: addition to the previous commit in the previous commit we started to only receive the parent_obj from the evas object when its not a widget. However, we still need to ensure that the parent is equal to the current one in order to remove it when a widget. While this is one more call, the call to get the parent is not as heavy as the data_get call, as this directly addresses a struct, and does not read from a hash table. This also fixes a test case failure. --- src/lib/elementary/efl_ui_widget.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 0b6ea105a9..16e55ec6c9 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -1587,6 +1587,8 @@ _efl_ui_widget_widget_sub_object_del(Eo *obj, Elm_Widget_Smart_Data *sd, Evas_Ob if (is_widget) { + if (efl_ui_widget_parent_get(sobj) != obj) + return EINA_FALSE; if (_is_focused(sobj)) { elm_widget_tree_unfocusable_set(sobj, EINA_TRUE); --
[EGIT] [core/efl] efl-1.24 05/31: ecore_main_timechanges: fix include
stefan pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=88cf37d1520f68939db1f37d43a37aaacf0a62fd commit 88cf37d1520f68939db1f37d43a37aaacf0a62fd Author: Marcel Hollerbach Date: Mon May 25 11:24:28 2020 +0200 ecore_main_timechanges: fix include we should not prefix this with the full path. Reviewed-by: Stefan Schmidt Reviewed-by: Vincent Torri Differential Revision: https://phab.enlightenment.org/D11881 --- src/lib/ecore/ecore_main_timechanges.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecore/ecore_main_timechanges.c b/src/lib/ecore/ecore_main_timechanges.c index cb3daf1fc1..c2b50ec8e9 100644 --- a/src/lib/ecore/ecore_main_timechanges.c +++ b/src/lib/ecore/ecore_main_timechanges.c @@ -14,7 +14,7 @@ #include "Ecore.h" #include "ecore_private.h" -#include "lib/ecore/ecore_main_common.h" +#include "ecore_main_common.h" #ifdef HAVE_SYS_TIMERFD_H --
[EGIT] [core/efl] efl-1.24 15/31: elm_gen****: free item_content map
stefan pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=a111e9702cfb4699f753a08a43d43c977948715f commit a111e9702cfb4699f753a08a43d43c977948715f Author: Marcel Hollerbach Date: Mon Jun 1 10:46:29 2020 +0900 elm_gen: free item_content map Summary: this should be freeed. Both can be freed in group_del after the items are deleted. fix T8732 Reviewers: Hermet Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8732 Differential Revision: https://phab.enlightenment.org/D11882 --- src/lib/elementary/elm_gengrid.c | 2 ++ src/lib/elementary/elm_genlist.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 8446db8cab..d5c90277a5 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -4185,6 +4185,8 @@ _elm_gengrid_efl_canvas_group_group_del(Eo *obj, Elm_Gengrid_Data *sd) _item_cache_zero(sd); ecore_job_del(sd->calc_job); + eina_hash_free(sd->content_item_map); + efl_canvas_group_del(efl_super(obj, MY_CLASS)); } diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 6866b14965..d6125594fe 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -5920,6 +5920,7 @@ _elm_genlist_efl_canvas_group_group_del(Eo *obj, Elm_Genlist_Data *sd) eina_stringshare_replace(&sd->decorate_it_type, NULL); + eina_hash_free(sd->content_item_map); _elm_genlist_tree_effect_stop(sd); } --
[EGIT] [core/efl] efl-1.24 01/01: build: make eina drag in the -lm flag
stefan pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=d068889df4576cb7cc04559532191abe91c597dd commit d068889df4576cb7cc04559532191abe91c597dd Author: Marcel Hollerbach Date: Wed May 27 18:21:37 2020 +0200 build: make eina drag in the -lm flag eina uses math.h we need to drag in this flag everywhere. Differential Revision: https://phab.enlightenment.org/D11896 --- src/lib/eina/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build index 1104ae74c7..559696d337 100644 --- a/src/lib/eina/meson.build +++ b/src/lib/eina/meson.build @@ -1,5 +1,5 @@ eina_deps = [dl] -eina_pub_deps = [thread_dep] +eina_pub_deps = [thread_dep, m] if sys_windows == true eina_pub_deps += [evil] --
[EGIT] [core/efl] master 01/01: mono: update window construction
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4f6a086f6ad9e0151e32930bafb6e85d5cb8f826 commit 4f6a086f6ad9e0151e32930bafb6e85d5cb8f826 Author: Marcel Hollerbach Date: Tue Jun 9 12:09:25 2020 +0200 mono: update window construction they simply missed parameters here Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11954 --- src/tests/efl_mono/Model.cs | 2 +- src/tests/efl_mono/Parts.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/tests/efl_mono/Model.cs b/src/tests/efl_mono/Model.cs index f566b91d04..bdf30b341d 100644 --- a/src/tests/efl_mono/Model.cs +++ b/src/tests/efl_mono/Model.cs @@ -69,7 +69,7 @@ public static class TestModel { { string propertyBound = null; bool callbackCalled = false; -var parent = new Efl.Ui.Win(null); +var parent = new Efl.Ui.Win(null, "", ""); parent.Visible = false; var factory = new Efl.Ui.ItemFactory(parent); factory.PropertyBoundEvent += (object sender, Efl.Ui.PropertyBindPropertyBoundEventArgs args) => { diff --git a/src/tests/efl_mono/Parts.cs b/src/tests/efl_mono/Parts.cs index c5de896053..e33ce96918 100644 --- a/src/tests/efl_mono/Parts.cs +++ b/src/tests/efl_mono/Parts.cs @@ -61,7 +61,7 @@ public static class TestMVVMParts { public static void mvvm_dynamic_parts() { -var parent = new Efl.Ui.Win(null); +var parent = new Efl.Ui.Win(null, "", ""); parent.Visible = false; var factory = new Efl.Ui.ItemFactory(parent); @@ -75,7 +75,7 @@ public static class TestMVVMParts public static void mvvm_factory_properties() { -var parent = new Efl.Ui.Win(null); +var parent = new Efl.Ui.Win(null, "", ""); parent.Visible = false; var factory = new Efl.Ui.ItemFactory(parent); var iconFactory = new Efl.Ui.ImageFactory(null); --
[EGIT] [core/efl] master 01/01: efl_ui_win: declare constructors not optional
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=29ae24cbf97e66e1d3985d2f515f0b02851120f7 commit 29ae24cbf97e66e1d3985d2f515f0b02851120f7 Author: Marcel Hollerbach Date: Sat Apr 18 19:43:11 2020 +0200 efl_ui_win: declare constructors not optional they cannot be optional, or in later languages types will collide. Differential Revision: https://phab.enlightenment.org/D11741 --- src/lib/elementary/efl_ui_win.eo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_win.eo b/src/lib/elementary/efl_ui_win.eo index 602acf506b..54686b0bae 100644 --- a/src/lib/elementary/efl_ui_win.eo +++ b/src/lib/elementary/efl_ui_win.eo @@ -835,9 +835,9 @@ class Efl.Ui.Win extends Efl.Ui.Widget implements Efl.Canvas.Scene, Efl.Access.W Efl.Part.part_get; } constructors { - .win_name @optional; + .win_name; .win_type @optional; - .accel_preference @optional; + .accel_preference; } events { delete,request: void; [[Called when the window receives a delete request]] --
[EGIT] [core/efl] master 03/04: eo-files: convert all Eina.Strbuf & Eina.Binbuf
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=dade4fc2f7a75c1f54a4903c3bb9c4c5690f6fa9 commit dade4fc2f7a75c1f54a4903c3bb9c4c5690f6fa9 Author: Marcel Hollerbach Date: Sun Apr 19 15:14:12 2020 +0200 eo-files: convert all Eina.Strbuf & Eina.Binbuf these structs should not be used, but rather the builtin types that exist for it. Reviewed-by: Felipe Magno de Almeida Differential Revision: https://phab.enlightenment.org/D11742 --- src/lib/ecore/efl_io_copier.eo | 4 ++-- src/lib/efl/interfaces/efl_io_buffer.eo | 2 +- src/lib/eio/efl_io_manager.eo | 4 ++-- src/lib/eo/eina_types.eot | 3 --- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/lib/ecore/efl_io_copier.eo b/src/lib/ecore/efl_io_copier.eo index e172a0c41d..291bdbc0ef 100644 --- a/src/lib/ecore/efl_io_copier.eo +++ b/src/lib/ecore/efl_io_copier.eo @@ -148,7 +148,7 @@ class @beta Efl.Io.Copier extends Efl.Loop_Consumer implements Efl.Io.Closer { destination then the "done" event is emitted. If the destination is not set (ie: $NULL) then data is kept - in a internal @Eina.Binbuf, which can be stolen with + in a internal binbuf, which can be stolen with @.binbuf_steal once "data" or "line" events are emitted. It exists as a useful shortcut to easily drain readers and store all data in memory with no need to use an @@ -313,7 +313,7 @@ class @beta Efl.Io.Copier extends Efl.Loop_Consumer implements Efl.Io.Closer { which case you should wait for "done", "data" or "line" events and then call it to retrieve and own the data. ]] - return: ptr(Eina.Binbuf) @move @no_unused; [[Binbuf]] + return: binbuf @move @no_unused; [[Binbuf]] } @property pending_size { diff --git a/src/lib/efl/interfaces/efl_io_buffer.eo b/src/lib/efl/interfaces/efl_io_buffer.eo index 518a799a3a..58e0c7ab22 100644 --- a/src/lib/efl/interfaces/efl_io_buffer.eo +++ b/src/lib/efl/interfaces/efl_io_buffer.eo @@ -133,7 +133,7 @@ class @beta Efl.Io.Buffer extends Efl.Object On failure, for example a read-only backing store was adopted with @.adopt_readonly, $NULL is returned. ]] -return: ptr(Eina.Binbuf) @move @no_unused; [[Binbuf]] +return: binbuf @move @no_unused; [[Binbuf]] } } diff --git a/src/lib/eio/efl_io_manager.eo b/src/lib/eio/efl_io_manager.eo index be58b047c0..6d147d95b4 100644 --- a/src/lib/eio/efl_io_manager.eo +++ b/src/lib/eio/efl_io_manager.eo @@ -80,13 +80,13 @@ class @beta Efl.Io.Manager extends Efl.Loop_Consumer [[Retrieves or sets information of a given extended attribute.]] set { values { -data: ptr(Eina.Binbuf); [[Data to set as information]] +data: binbuf; [[Data to set as information]] flags: Eina.Xattr.Flags; [[Extended attributes flags]] } return: future @move; [[Future for asynchronous set operation]] } get { - return: future @move; [[Information]] + return: future @move; [[Information]] } keys { path: string; [[File path]] diff --git a/src/lib/eo/eina_types.eot b/src/lib/eo/eina_types.eot index 000a2567d9..cbb0981dc7 100644 --- a/src/lib/eo/eina_types.eot +++ b/src/lib/eo/eina_types.eot @@ -128,9 +128,6 @@ type @extern Eina.Error: int; [[Eina error type @since 1.22 ]] -struct @extern @beta @free(eina_binbuf_free) Eina.Binbuf; [[Eina binbuf data structure]] -struct @extern @beta @free(eina_strbuf_free) Eina.Strbuf; [[Eina strbuf data structure]] - struct @extern @beta Eina.Slice { [[A linear, read-only, memory segment]] len: size; [[Length of the memory segment]] --
[EGIT] [core/efl] master 01/04: eo: make the parent a optional constructor
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ee092073a3c4ce79c582e4467fcce10e51f4696f commit ee092073a3c4ce79c582e4467fcce10e51f4696f Author: Marcel Hollerbach Date: Sun Apr 19 21:34:17 2020 +0200 eo: make the parent a optional constructor this is needed in order to sanely bind parent calls to some objejcts, but not all. However, from the canvas structure up we *need* a parent, so we can fetch the evas from it. So declare it there a none optional Reviewed-by: Felipe Magno de Almeida Differential Revision: https://phab.enlightenment.org/D11734 --- src/lib/eo/efl_object.eo | 3 +++ src/lib/evas/canvas/efl_canvas_object.eo | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/lib/eo/efl_object.eo b/src/lib/eo/efl_object.eo index 1bf1ea5e58..34460473ef 100644 --- a/src/lib/eo/efl_object.eo +++ b/src/lib/eo/efl_object.eo @@ -432,6 +432,9 @@ abstract Efl.Object class.constructor; class.destructor; } + constructors { +.parent @optional; + } events { del @hot: void; [[Object is being deleted. See @.destructor.]] invalidate @hot: void; [[Object is being invalidated and losing its parent. See @.invalidate.]] diff --git a/src/lib/evas/canvas/efl_canvas_object.eo b/src/lib/evas/canvas/efl_canvas_object.eo index 21dd3df8ab..64aad581ea 100644 --- a/src/lib/evas/canvas/efl_canvas_object.eo +++ b/src/lib/evas/canvas/efl_canvas_object.eo @@ -483,6 +483,9 @@ abstract Efl.Canvas.Object extends Efl.Loop_Consumer implements Efl.Gfx.Entity, } } } + constructors { +Efl.Object.parent; + } implements { Efl.Object.constructor; Efl.Object.finalize; --
[EGIT] [core/efl] master 01/02: evas: correctly declare filter_internal as public API
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7660da691c9f844148798db1bb35c6577b081443 commit 7660da691c9f844148798db1bb35c6577b081443 Author: Marcel Hollerbach Date: Thu Jun 4 10:03:44 2020 +0200 evas: correctly declare filter_internal as public API I know this is internal. However it is public used in public .eo files. Even if it is internal, and beta, we still need to expose the API in order to have it correctly in the .so. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11932 --- src/lib/evas/canvas/evas_filter_mixin.c | 6 ++ src/lib/evas/include/evas_filter.h | 3 ++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/lib/evas/canvas/evas_filter_mixin.c b/src/lib/evas/canvas/evas_filter_mixin.c index 00942628f1..11a3fe45b5 100644 --- a/src/lib/evas/canvas/evas_filter_mixin.c +++ b/src/lib/evas/canvas/evas_filter_mixin.c @@ -1,9 +1,7 @@ #define EFL_CANVAS_FILTER_INTERNAL_PROTECTED -#include "evas_common_private.h" -#include "evas_private.h" -#include "../../lib/efl/interfaces/efl_gfx_filter.eo.h" -#include "efl_canvas_filter_internal.eo.h" +#include + #include "evas_filter.h" #define MY_CLASS EFL_CANVAS_FILTER_INTERNAL_MIXIN diff --git a/src/lib/evas/include/evas_filter.h b/src/lib/evas/include/evas_filter.h index 5a22c2b6ae..dd779812f9 100644 --- a/src/lib/evas/include/evas_filter.h +++ b/src/lib/evas/include/evas_filter.h @@ -4,7 +4,6 @@ #include "evas_common_private.h" #include "evas_private.h" -#include "efl_canvas_filter_internal.eo.h" #ifdef EAPI # undef EAPI @@ -32,6 +31,8 @@ # endif #endif +#include "efl_canvas_filter_internal.eo.h" + #ifdef DEBUG # define FILTERS_DEBUG #endif --
[EGIT] [core/efl] master 02/02: build: do not publish surface .eo files
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=91a5312f70169da3c7d64cdfc8ebe12d04de5889 commit 91a5312f70169da3c7d64cdfc8ebe12d04de5889 Author: Marcel Hollerbach Date: Thu Jun 4 10:23:29 2020 +0200 build: do not publish surface .eo files they are privat, they should never be installed. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11933 --- src/lib/evas/canvas/meson.build | 23 +++ 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/lib/evas/canvas/meson.build b/src/lib/evas/canvas/meson.build index 7dc662e097..db23590ba3 100644 --- a/src/lib/evas/canvas/meson.build +++ b/src/lib/evas/canvas/meson.build @@ -5,10 +5,6 @@ pub_eo_files = [ 'efl_canvas_image.eo', 'efl_canvas_snapshot.eo', 'efl_canvas_proxy.eo', - 'efl_canvas_surface.eo', - 'efl_canvas_surface_tbm.eo', - 'efl_canvas_surface_x11.eo', - 'efl_canvas_surface_wayland.eo', 'efl_canvas_filter_internal.eo', 'efl_input_state.eo', 'efl_input_interface.eo', @@ -50,6 +46,25 @@ pub_eo_files = [ 'efl_canvas_object_animation.eo', ] +priv_eo_files = [ + 'efl_canvas_surface.eo', + 'efl_canvas_surface_tbm.eo', + 'efl_canvas_surface_x11.eo', + 'efl_canvas_surface_wayland.eo', +] + +foreach eo_file : priv_eo_files + priv_eo_file_target += custom_target('eolian_gen_' + eo_file, +input : eo_file, +output : [eo_file + '.h'], +depfile : eo_file + '.d', +command : eolian_gen + [ '-I', meson.current_source_dir(), eolian_include_directories, + '-o', 'h:' + join_paths(meson.current_build_dir(), eo_file + '.h'), + '-o', 'c:' + join_paths(meson.current_build_dir(), eo_file + '.c'), + '-o', 'd:' + join_paths(meson.current_build_dir(), eo_file + '.d'), + '-gchd', '@INPUT@']) +endforeach + evas_canvas_eo_files = pub_eo_files pub_evas_eo_files += files(pub_eo_files) --
[EGIT] [core/efl] master 01/01: build: move static out of none_static
hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e3ad84f07e60851ef4aa5890130f6a14bec50a8f commit e3ad84f07e60851ef4aa5890130f6a14bec50a8f Author: Marcel Hollerbach Date: Thu Jun 4 10:29:44 2020 +0900 build: move static out of none_static Summary: these are static libs, they shall not be in the static list. Reviewers: stefan_schmidt, jsuya Reviewed By: stefan_schmidt, jsuya Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11923 --- src/lib/evas/meson.build | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index 2196952d21..a6ac6b1117 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -50,8 +50,8 @@ evas_vg_savers_file = ['eet', 'svg'] rel_evas_modules = join_paths('..', '..', '..', 'modules', 'evas', 'engines', 'software_generic') evas_deps = [eo, eet, eina, efl, emile, ector, ecore, draw, buildsystem] -evas_ext_deps = [] -evas_ext_none_static_deps = [buildsystem_simple, intl, m, draw_simple, valgrind, libunibreak, lua, vg_common] +evas_ext_deps = [vg_common, draw_simple] +evas_ext_none_static_deps = [buildsystem_simple, intl, m, valgrind, libunibreak, lua] pub_eo_file_target = [] priv_eo_files = [] --
[EGIT] [core/efl] master 01/01: build: add eet to evas suite
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=41c90a9ae3d48796884f65efbee995fae50bf7cd commit 41c90a9ae3d48796884f65efbee995fae50bf7cd Author: Marcel Hollerbach Date: Tue Jun 2 08:28:27 2020 +0200 build: add eet to evas suite evas suite seems to use internal headers, which includes eet. --- src/tests/evas/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index 765afd9960..bee736035f 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -25,7 +25,7 @@ evas_suite_src = [ evas_suite = executable('evas_suite', evas_suite_src, - dependencies: [evas_bin, evas, ecore_evas, dl, check, evas_ext_none_static_deps], #external deps needed here since tests do include internal headers + dependencies: [evas_bin, evas, ecore_evas, dl, check, evas_ext_none_static_deps, eet], #external deps needed here since tests do include internal headers include_directories: include_directories(join_paths('..', '..', 'modules', 'evas', 'engines', 'buffer')), c_args : [ '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', --
[EGIT] [core/efl] master 04/04: build: do not link test suite again against static libs
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6184bf670fd6ee738585ec215c9a0dc62176659c commit 6184bf670fd6ee738585ec215c9a0dc62176659c Author: Marcel Hollerbach Date: Mon Jun 1 22:32:53 2020 +0200 build: do not link test suite again against static libs this might result in duplicated symbols. --- src/tests/evas/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index b76d4572b3..765afd9960 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -25,7 +25,7 @@ evas_suite_src = [ evas_suite = executable('evas_suite', evas_suite_src, - dependencies: [evas_bin, evas, ecore_evas, dl, check, evas_ext_deps], #external deps needed here since tests do include internal headers + dependencies: [evas_bin, evas, ecore_evas, dl, check, evas_ext_none_static_deps], #external deps needed here since tests do include internal headers include_directories: include_directories(join_paths('..', '..', 'modules', 'evas', 'engines', 'buffer')), c_args : [ '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', --
[EGIT] [core/efl] master 01/01: elm_gen****: free item_content map
hermet pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0123c8b6fc7c35466bcd5e49b6ef82a3707b8052 commit 0123c8b6fc7c35466bcd5e49b6ef82a3707b8052 Author: Marcel Hollerbach Date: Mon Jun 1 10:46:29 2020 +0900 elm_gen: free item_content map Summary: this should be freeed. Both can be freed in group_del after the items are deleted. fix T8732 Reviewers: Hermet Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8732 Differential Revision: https://phab.enlightenment.org/D11882 --- src/lib/elementary/elm_gengrid.c | 2 ++ src/lib/elementary/elm_genlist.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/lib/elementary/elm_gengrid.c b/src/lib/elementary/elm_gengrid.c index 8446db8cab..d5c90277a5 100644 --- a/src/lib/elementary/elm_gengrid.c +++ b/src/lib/elementary/elm_gengrid.c @@ -4185,6 +4185,8 @@ _elm_gengrid_efl_canvas_group_group_del(Eo *obj, Elm_Gengrid_Data *sd) _item_cache_zero(sd); ecore_job_del(sd->calc_job); + eina_hash_free(sd->content_item_map); + efl_canvas_group_del(efl_super(obj, MY_CLASS)); } diff --git a/src/lib/elementary/elm_genlist.c b/src/lib/elementary/elm_genlist.c index 6866b14965..d6125594fe 100644 --- a/src/lib/elementary/elm_genlist.c +++ b/src/lib/elementary/elm_genlist.c @@ -5920,6 +5920,7 @@ _elm_genlist_efl_canvas_group_group_del(Eo *obj, Elm_Genlist_Data *sd) eina_stringshare_replace(&sd->decorate_it_type, NULL); + eina_hash_free(sd->content_item_map); _elm_genlist_tree_effect_stop(sd); } --
[EGIT] [core/efl] master 06/07: Introduce a test to verify efl-one only links to the correct libs
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c5c28120f7c7a567b1a5540310535a4efc7b607f commit c5c28120f7c7a567b1a5540310535a4efc7b607f Author: Marcel Hollerbach Date: Thu May 28 11:46:45 2020 +0200 Introduce a test to verify efl-one only links to the correct libs whenever this script finds any module linked to libe* (but not libefl-one.so) it will error. Differential Revision: https://phab.enlightenment.org/D11900 --- scripts/test-efl-one.py | 52 + 1 file changed, 52 insertions(+) diff --git a/scripts/test-efl-one.py b/scripts/test-efl-one.py new file mode 100755 index 00..ba3e34e63d --- /dev/null +++ b/scripts/test-efl-one.py @@ -0,0 +1,52 @@ +#!/bin/env python3 +import os +import subprocess +import argparse +import json +from elftools.elf.elffile import ELFFile + + +#meson changed behaviour from 0.49 to 0.50 so we need this: +def meson_fetch_filename(filename_object): + if isinstance(filename_object, str): +return filename_object + else: +return filename_object[0] + + +def needed_libs(filename): + print('Processing file:', filename) + result = [] + with open(filename, 'rb') as f: +elffile = ELFFile(f) +for section in elffile.iter_sections(): + if section.name.startswith('.dynamic'): +for tag in section.iter_tags(): + if tag.entry.d_tag == 'DT_NEEDED': +result.append(getattr(tag, tag.entry.d_tag[3:].lower())) + return result + + +parser = argparse.ArgumentParser(description='Check that when build with efl-one that no module nor efl-one lib does drag in libeina or the likes') +parser.add_argument('builddir', metavar='build', help='the path where to find the meson build directory') + +G = parser.parse_args() + +#Run meson to fetch all examples +meson_introspect = subprocess.Popen(["meson", "introspect", G.builddir, "--targets"], + stdout = subprocess.PIPE, + stderr = subprocess.PIPE, +) +meson_introspect.poll() +build_targets = json.loads(meson_introspect.stdout.read()) +build_modules = [meson_fetch_filename(b["filename"]) for b in build_targets if "modules" in meson_fetch_filename(b["filename"]) and meson_fetch_filename(b["filename"]).endswith('.so')] + +for build_modules in build_modules: + libs = needed_libs(build_modules) + lib_es = [lib for lib in libs if lib.startswith("libe") and lib != "libefl-one.so.1"] + if len(lib_es) != 0: +print("Error, {} requies lib {}".format(build_modules, lib_es[0])) +exit(-1) + +print("Nothing wrong found!") + --
[EGIT] [core/efl] master 05/07: build: vg_common depends on evas internals
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ee905100141b10127514cdcbe55407a297f2dd92 commit ee905100141b10127514cdcbe55407a297f2dd92 Author: Marcel Hollerbach Date: Thu May 28 09:51:24 2020 +0200 build: vg_common depends on evas internals this must depend on the eo file targets, as they must be generated. Differential Revision: https://phab.enlightenment.org/D11899 --- src/lib/evas/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index d9f88afa42..3b49e2bea6 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -205,7 +205,7 @@ evas_pub_deps = [eina, ecore, ector, emile] if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false evas_opt = static_library('evas_opt', -sources: evas_src_opt, +sources: [evas_src_opt, pub_eo_file_target, priv_eo_file_target], include_directories: [ include_directories('../../..') ] + evas_include_directories + --
[EGIT] [core/efl] master 04/07: build: split off static parts from external parts in evas
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e1ea935daea28115ea610927035db00244386df5 commit e1ea935daea28115ea610927035db00244386df5 Author: Marcel Hollerbach Date: Thu May 28 08:27:37 2020 +0200 build: split off static parts from external parts in evas this way we can use that list easily in the modules, and keep the list for later module building. Differential Revision: https://phab.enlightenment.org/D11897 --- src/lib/evas/meson.build | 23 +-- src/modules/evas/engines/meson.build | 2 +- src/modules/evas/image_loaders/meson.build | 2 +- src/modules/evas/image_savers/meson.build | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index d923cee0df..d9f88afa42 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -49,7 +49,8 @@ evas_vg_savers_file = ['eet', 'svg'] rel_evas_modules = join_paths('..', '..', '..', 'modules', 'evas', 'engines', 'software_generic') evas_deps = [eo, eet, eina, efl, emile, ector, ecore, draw, buildsystem] -evas_ext_deps = [buildsystem_simple, intl, m, draw_simple, valgrind, libunibreak, lua, vg_common] +evas_ext_deps = [] +evas_ext_none_static_deps = [buildsystem_simple, intl, m, draw_simple, valgrind, libunibreak, lua, vg_common] pub_eo_file_target = [] priv_eo_files = [] @@ -138,16 +139,16 @@ evas_src += files([ evas_src_opt = [ ] -evas_ext_deps += dependency('freetype2') +evas_ext_none_static_deps += dependency('freetype2') if (get_option('fontconfig')) config_h.set('HAVE_FONTCONFIG', '1') - evas_ext_deps += dependency('fontconfig') + evas_ext_none_static_deps += dependency('fontconfig') endif if (get_option('fribidi')) config_h.set('HAVE_FRIBIDI', '1') - evas_ext_deps += dependency('fribidi') + evas_ext_none_static_deps += dependency('fribidi') endif if (get_option('pixman')) @@ -155,16 +156,16 @@ if (get_option('pixman')) foreach support : pixman_support config_h.set(support, '1') endforeach - evas_ext_deps += dependency('pixman-1') + evas_ext_none_static_deps += dependency('pixman-1') endif if (get_option('hyphen')) config_h.set('HAVE_HYPHEN', '1') hyphen = dependency('hyphen', required : false) if hyphen.found() == false - evas_ext_deps += cc.find_library('hyphen') + evas_ext_none_static_deps += cc.find_library('hyphen') endif - evas_ext_deps += hyphen + evas_ext_none_static_deps += hyphen config_h.set_quoted('EVAS_DICTS_HYPHEN_DIR', get_option('dictionaries-hyphen-dir')) endif @@ -180,12 +181,12 @@ subdir('vg') gl_deps = [] if get_option('harfbuzz') - evas_ext_deps += dependency('harfbuzz') + evas_ext_none_static_deps += dependency('harfbuzz') config_h.set('HAVE_HARFBUZZ', '1') endif if get_option('wl') - evas_ext_deps += wayland_protocol + evas_ext_none_static_deps += wayland_protocol endif @@ -210,7 +211,7 @@ if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false evas_include_directories + [vg_common_inc_dir], c_args: native_arch_opt_c_args, -dependencies: [eina, eo, ector, emile, evas_deps, evas_ext_deps], +dependencies: [eina, eo, ector, emile, evas_deps, evas_ext_none_static_deps], ) evas_link += [ evas_opt ] endif @@ -284,6 +285,8 @@ evas_ext_deps += declare_dependency( link_with: evas_link, ) +evas_ext_deps += evas_ext_none_static_deps + evas_lib = library('evas', include_directories: evas_include_directories + [vg_common_inc_dir], sources : [evas_src, pub_eo_file_target, priv_eo_file_target], diff --git a/src/modules/evas/engines/meson.build b/src/modules/evas/engines/meson.build index 1efdbbddc8..c7e4255d9c 100644 --- a/src/modules/evas/engines/meson.build +++ b/src/modules/evas/engines/meson.build @@ -46,7 +46,7 @@ foreach engine_conf : engines if build engine_include_dir = [] engine_src = [] -engine_deps = [eina, evas, evas_ext_deps] +engine_deps = [eina, evas, evas_ext_none_static_deps, eet] engine_dep = declare_dependency( include_directories: include_directories(engine), ) diff --git a/src/modules/evas/image_loaders/meson.build b/src/modules/evas/image_loaders/meson.build index 963245ecfe..11b11f79c2 100644 --- a/src/modules/evas/image_loaders/meson.build +++ b/src/modules/evas/image_loaders/meson.build @@ -11,7 +11,7 @@ foreach loader_inst : evas_image_loaders_file shared_module('s
[EGIT] [core/efl] master 02/07: build: add priv eo targets to efl_one_eo_deps
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9155e898ce1b5158ee4da23afc5e7fa56c958f97 commit 9155e898ce1b5158ee4da23afc5e7fa56c958f97 Author: Marcel Hollerbach Date: Wed May 27 18:20:11 2020 +0200 build: add priv eo targets to efl_one_eo_deps this was forgotten / never spotted before. Thank you Quelrond for the report! Differential Revision: https://phab.enlightenment.org/D11895 --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 06213426ce..90eb3951bf 100644 --- a/meson.build +++ b/meson.build @@ -428,7 +428,7 @@ foreach package : subprojects ) # dependency for all the .eo file targets efl_one_eo_deps += declare_dependency( - sources: pub_eo_file_target, + sources: pub_eo_file_target + priv_eo_file_target, #this here *needs* to be public and private, because our binaries and modules do depend on internal headers ) efl_one_deps += external_deps efl_one_parts += tmp --
[EGIT] [core/efl] master 07/07: build: add efl-canvasl-wl to efl-one
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f2e0ff9d000aa25bcd69541219d551288ba61041 commit f2e0ff9d000aa25bcd69541219d551288ba61041 Author: Marcel Hollerbach Date: Thu May 28 11:56:33 2020 +0200 build: add efl-canvasl-wl to efl-one this is required by e, thank you Ross. Differential Revision: https://phab.enlightenment.org/D11901 --- meson.build | 2 +- src/lib/efl_canvas_wl/meson.build | 14 -- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/meson.build b/meson.build index 90eb3951bf..287dbb71ae 100644 --- a/meson.build +++ b/meson.build @@ -337,7 +337,7 @@ subprojects = [ ['ethumb' ,[], true, true, true, false, false, false, true, ['eina', 'efl', 'eo'], []], ['ethumb_client',[], false, true, true, false, false, true, true, ['eina', 'efl', 'eo', 'ethumb'], []], ['elementary' ,[], true, true, true, true, true, true, true, ['eina', 'efl', 'eo', 'eet', 'evas', 'ecore', 'ecore-evas', 'ecore-file', 'ecore-input', 'edje', 'ethumb-client', 'emotion', 'ecore-imf', 'ecore-con', 'eldbus', 'efreet', 'efreet-mime', 'efreet-trash', 'eio'], ['atspi']], -['efl_canvas_wl',['wl'], false, true, true, false, false, false, false, ['eina', 'efl', 'eo', 'evas', 'ecore'], []], +['efl_canvas_wl',['wl'], false, true, true, false, false, false, true, ['eina', 'efl', 'eo', 'evas', 'ecore'], []], ['elua' ,['elua'] , false, true, true, false, true, false, false, ['eina', 'luajit'], []], ['ecore_wayland',['wl-deprecated'] , false, true, false, false, false, false, false, ['eina'], []], ['ecore_drm',['drm-deprecated'], false, true, false, false, false, false, false, ['eina'], []], diff --git a/src/lib/efl_canvas_wl/meson.build b/src/lib/efl_canvas_wl/meson.build index 3b223ea174..5955da62eb 100644 --- a/src/lib/efl_canvas_wl/meson.build +++ b/src/lib/efl_canvas_wl/meson.build @@ -1,9 +1,10 @@ -efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eina, wayland_protocol ] -efl_canvas_wl_pub_deps = [eo, efl, evas, dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0')] +efl_canvas_wl_deps = [ecore_wl2, ecore_input, ecore, ecore_evas, evas, emile, eina] +efl_canvas_wl_pub_deps = [eo, efl, evas] +efl_canvas_wl_ext_deps = [dependency('wayland-server', version : '>= 1.11.0'), dependency('xkbcommon', version : '>= 0.6.0'), wayland_protocol] if (get_option('x11')) efl_canvas_wl_deps += [ecore_x] - efl_canvas_wl_pub_deps += [dependency('xkbcommon-x11')] + efl_canvas_wl_ext_deps += [dependency('xkbcommon-x11')] endif pub_eo_files = [ @@ -25,16 +26,17 @@ foreach eo_file : pub_eo_files '-gchd', '@INPUT@']) endforeach -efl_canvas_wl_src = [ +efl_canvas_wl_src = files([ 'dmabuf.c', 'efl_canvas_wl.c', -] +]) + efl_canvas_wl_header_src = ['Efl_Canvas_Wl.h'] eolian_include_directories += ['-I', meson.current_source_dir()] efl_canvas_wl_lib = library('efl_canvas_wl', efl_canvas_wl_src, pub_eo_file_target, -dependencies: [m, dl] + efl_canvas_wl_deps + efl_canvas_wl_pub_deps, +dependencies: efl_canvas_wl_deps + efl_canvas_wl_pub_deps + efl_canvas_wl_ext_deps, include_directories : config_dir + [include_directories(join_paths('..','..'))], install: true, c_args : package_c_args, --
[EGIT] [core/efl] master 03/07: build: make eina drag in the -lm flag
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f6d20e1f967a1a0ccd88d15af565a313a3c870f6 commit f6d20e1f967a1a0ccd88d15af565a313a3c870f6 Author: Marcel Hollerbach Date: Wed May 27 18:21:37 2020 +0200 build: make eina drag in the -lm flag eina uses math.h we need to drag in this flag everywhere. Differential Revision: https://phab.enlightenment.org/D11896 --- src/lib/eina/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build index 15d1742633..7aa1afa7ba 100644 --- a/src/lib/eina/meson.build +++ b/src/lib/eina/meson.build @@ -1,5 +1,5 @@ eina_deps = [dl] -eina_pub_deps = [thread_dep] +eina_pub_deps = [thread_dep, m] eina_pc_deps = [m, rt, dl, thread_dep] #special case, this array is taken to drag in external deps to efl-one eina_ext_deps = eina_pc_deps --
[EGIT] [core/efl] master 01/07: build: rely on automatic pkg file generation for eina
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bb4d1165340edcd90c5e1a652d7eca21baadfb9c commit bb4d1165340edcd90c5e1a652d7eca21baadfb9c Author: Marcel Hollerbach Date: Wed May 27 14:37:28 2020 +0200 build: rely on automatic pkg file generation for eina this automatically brings it to efl-one, which makes this easier. Differential Revision: https://phab.enlightenment.org/D11892 --- src/lib/eina/meson.build | 11 +++ 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build index bdb69000b9..15d1742633 100644 --- a/src/lib/eina/meson.build +++ b/src/lib/eina/meson.build @@ -388,11 +388,6 @@ install_headers(public_sub_headers, install_dir : join_paths(dir_package_include, 'eina') ) -automatic_pkgfile = false - -pkgconfig.generate(eina_lib, - name : 'eina', - subdirs : ['eina-'+version_major, 'efl-'+version_major, join_paths('eina-'+version_major, 'eina')], - version : version_major + '.' + version_minor + '.' + version_micro, - libraries : eina_pub_deps + eina_pc_deps, -) +package_header_subdirs += 'eina' +#special case here to support -lm -ldl -threads +eina_pub_deps += eina_pc_deps --
[EGIT] [core/efl] master 01/01: build: efl-one track all subdirs correctly
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7da3eb84ab7147b023f7b2dfab62fa8f18fe073c commit 7da3eb84ab7147b023f7b2dfab62fa8f18fe073c Author: Marcel Hollerbach Date: Wed May 27 14:38:32 2020 +0200 build: efl-one track all subdirs correctly this was missed before, so the subdirectories have not been correctly added. With this you can now simply build with efl-one with including Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11893 --- meson.build | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/meson.build b/meson.build index 5f6c339907..06213426ce 100644 --- a/meson.build +++ b/meson.build @@ -361,6 +361,7 @@ efl_one_parts = [] efl_one_deps = [] efl_one_eo_deps = [] efl_one_include_dirs = [] +efl_one_sub_dirs = [] tmp_empty = declare_dependency() foreach package : subprojects @@ -462,7 +463,9 @@ foreach package : subprojects foreach subdir : package_header_subdirs tmp_package_subdirs += join_paths(package_version_name, subdir) endforeach - + if (package[8] and get_option('efl-one')) +efl_one_sub_dirs += [package_version_name] + tmp_package_subdirs + endif pkgconfig.generate(tmp_lib, name : '-'.join(package_name.split('_')), subdirs : [package_version_name] + tmp_package_subdirs, @@ -503,6 +506,7 @@ if (get_option('efl-one')) pkgconfig.generate( name : 'efl-one', +subdirs : efl_one_sub_dirs, description: 'Configureation for efl in one big fat .so', libraries : [efl_one] + eina_pc_deps, #eina is a special case here which drags in m dl & threads ) --
[EGIT] [core/efl] master 01/01: build: add correct flags to efl-one.pc
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0b08318117540f45e87874f000d2aa5eb90bcbee commit 0b08318117540f45e87874f000d2aa5eb90bcbee Author: Marcel Hollerbach Date: Wed May 27 13:09:36 2020 +0200 build: add correct flags to efl-one.pc they are required, and normally dragged in via eina. --- meson.build | 2 +- src/lib/eina/meson.build | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 1533d984f7..5f6c339907 100644 --- a/meson.build +++ b/meson.build @@ -504,7 +504,7 @@ if (get_option('efl-one')) pkgconfig.generate( name : 'efl-one', description: 'Configureation for efl in one big fat .so', -libraries : efl_one, +libraries : [efl_one] + eina_pc_deps, #eina is a special case here which drags in m dl & threads ) #overwrite all the dependencies of subprojects with efl-one, in order to link the modules and binaries to the correct .so diff --git a/src/lib/eina/meson.build b/src/lib/eina/meson.build index 8df3660f31..bdb69000b9 100644 --- a/src/lib/eina/meson.build +++ b/src/lib/eina/meson.build @@ -1,6 +1,7 @@ eina_deps = [dl] eina_pub_deps = [thread_dep] -eina_ext_deps = [m, rt, dl, thread_dep] +eina_pc_deps = [m, rt, dl, thread_dep] #special case, this array is taken to drag in external deps to efl-one +eina_ext_deps = eina_pc_deps if sys_windows == true eina_pub_deps += [evil] @@ -393,5 +394,5 @@ pkgconfig.generate(eina_lib, name : 'eina', subdirs : ['eina-'+version_major, 'efl-'+version_major, join_paths('eina-'+version_major, 'eina')], version : version_major + '.' + version_minor + '.' + version_micro, - libraries : eina_pub_deps, + libraries : eina_pub_deps + eina_pc_deps, ) --
[EGIT] [core/efl] master 02/04: refactor build
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8e3606698eb439eecd7302a885504365aca7e564 commit 8e3606698eb439eecd7302a885504365aca7e564 Author: Marcel Hollerbach Date: Sun May 10 14:41:57 2020 +0200 refactor build libraries are split into deps, external deps, and pub deps. Evas engines are refactored to use the predefined engine deps. this is preparation work for efl-one. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11806 --- src/bin/ecore_buffer/meson.build | 2 +- src/bin/edje/meson.build | 3 +- src/bin/elementary/meson.build | 16 src/bin/exactness/meson.build | 4 +- src/examples/elementary/meson.build| 2 +- src/lib/ecore/meson.build | 17 + src/lib/ecore_audio/meson.build| 23 ++-- src/lib/ecore_buffer/meson.build | 9 +++-- src/lib/ecore_cocoa/meson.build| 14 +-- src/lib/ecore_con/meson.build | 28 +++--- src/lib/ecore_drm2/meson.build | 9 +++-- src/lib/ecore_evas/meson.build | 15 +--- src/lib/ecore_fb/meson.build | 9 +++-- src/lib/ecore_file/meson.build | 13 --- src/lib/ecore_imf/meson.build | 9 +++-- src/lib/ecore_imf_evas/meson.build | 7 ++-- src/lib/ecore_input/meson.build| 8 ++-- src/lib/ecore_input_evas/meson.build | 7 ++-- src/lib/ecore_ipc/meson.build | 8 ++-- src/lib/ecore_sdl/meson.build | 9 +++-- src/lib/ecore_win32/meson.build| 16 +--- src/lib/ecore_wl2/meson.build | 18 + src/lib/ecore_x/meson.build| 19 +- src/lib/ector/meson.build | 16 +--- src/lib/edje/meson.build | 13 --- src/lib/eet/meson.build| 9 +++-- src/lib/eeze/meson.build | 21 ++- src/lib/efl/meson.build| 5 ++- src/lib/efl_canvas_wl/meson.build | 2 +- src/lib/efreet/meson.build | 13 --- src/lib/eina/meson.build | 19 ++ src/lib/eio/meson.build| 15 src/lib/eldbus/meson.build | 9 +++-- src/lib/elementary/meson.build | 17 + src/lib/elput/meson.build | 13 --- src/lib/embryo/meson.build | 12 +++--- src/lib/emile/meson.build | 13 --- src/lib/emotion/meson.build| 7 ++-- src/lib/eo/meson.build | 9 +++-- src/lib/ephysics/meson.build | 10 ++--- src/lib/ethumb/meson.build | 7 ++-- src/lib/ethumb_client/meson.build | 7 ++-- src/lib/evas/meson.build | 43 -- src/lib/evas/software_generic/meson.build | 2 + src/lib/evil/meson.build | 11 -- src/modules/ecore_evas/engines/wayland/meson.build | 2 +- src/modules/ecore_imf/meson.build | 1 - src/modules/evas/engines/buffer/meson.build| 6 +-- src/modules/evas/engines/drm/meson.build | 4 +- src/modules/evas/engines/fb/meson.build| 4 +- src/modules/evas/engines/gl_cocoa/meson.build | 4 +- src/modules/evas/engines/gl_drm/meson.build| 4 +- src/modules/evas/engines/gl_generic/meson.build| 4 +- src/modules/evas/engines/gl_x11/meson.build| 4 +- src/modules/evas/engines/meson.build | 2 +- .../evas/engines/software_ddraw/meson.build| 4 +- src/modules/evas/engines/software_gdi/meson.build | 4 +- src/modules/evas/engines/software_x11/meson.build | 4 +- src/modules/evas/engines/wayland_egl/meson.build | 4 +- src/modules/evas/engines/wayland_shm/meson.build | 4 +- src/modules/evas/image_loaders/meson.build | 2 +- src/modules/evas/image_savers/meson.build | 2 +- src/static_libs/buildsystem/meson.build| 4 ++ src/static_libs/draw/meson.build | 11 ++ src/static_libs/rg_etc/meson.build | 4 ++ src/tests/elementary/meson.build | 4 +- src/tests/evas/meson.build | 2 +- src/wayland_protocol/meson.build | 5 +++ 68 files changed, 360 insertions(+), 267 deletions(-) diff --git a/src/bin/ecore_buffer/meson.build b/src/bin/ecore_buffer/meson.build index 5e1a9d9381
[EGIT] [core/efl] master 04/04: build: stop buildsystem from beeing a public dependency
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f5d3a2bf282b8c871b69a03f5b7f754a936e9c07 commit f5d3a2bf282b8c871b69a03f5b7f754a936e9c07 Author: Marcel Hollerbach Date: Tue May 26 10:53:45 2020 +0200 build: stop buildsystem from beeing a public dependency this is wrong, each library should declare it on its own Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11883 --- src/lib/elementary/meson.build | 4 ++-- src/lib/emotion/meson.build| 4 ++-- src/lib/ethumb/meson.build | 4 ++-- src/lib/evas/meson.build | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index f6674fbdc3..06e07e3a71 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -949,10 +949,10 @@ elementary_src = files([ 'efl_ui_spotlight_animation_manager.c', ]) -elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, eio] +elementary_deps = [emile, eo, efl, edje, ethumb, ethumb_client, emotion, ecore_imf, ecore_con, eldbus, efreet, eio, buildsystem] elementary_pub_deps = [eina, eet, evas, ecore, ecore_evas, ecore_file, ecore_input, ecore_imf, ecore_con, edje, eldbus, efreet, ethumb_client, efl] -elementary_ext_deps = [atspi, dl, intl] +elementary_ext_deps = [atspi, dl, intl, buildsystem_simple] elm_options = configuration_data() config_h.set_quoted('ELM_TOP_BUILD_DIR', meson.build_root()) diff --git a/src/lib/emotion/meson.build b/src/lib/emotion/meson.build index b289fb221a..8404fab3fd 100644 --- a/src/lib/emotion/meson.build +++ b/src/lib/emotion/meson.build @@ -37,9 +37,9 @@ emotion_src = files([ 'emotion_main.c' ]) -emotion_deps = [ecore, eet, evas, eio, emile] +emotion_deps = [ecore, eet, evas, eio, emile, buildsystem] emotion_pub_deps = [eina, eo, efl] -emotion_ext_deps = [] +emotion_ext_deps = [buildsystem_simple] if get_option('eeze') == true emotion_deps += [eeze] diff --git a/src/lib/ethumb/meson.build b/src/lib/ethumb/meson.build index fbe1436e4b..9e39a7ab77 100644 --- a/src/lib/ethumb/meson.build +++ b/src/lib/ethumb/meson.build @@ -9,9 +9,9 @@ ethumb_src = files([ 'md5.c', ]) -ethumb_deps = [eet, evas, ecore, ecore_evas, ecore_file, ecore_imf, edje, emile] +ethumb_deps = [eet, evas, ecore, ecore_evas, ecore_file, ecore_imf, edje, emile, buildsystem] ethumb_pub_deps = [eina, eo, efl] -ethumb_ext_deps = [m] +ethumb_ext_deps = [m, buildsystem_simple] ethumb_lib = library('ethumb', ethumb_src, diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index 0ff0535e4f..d923cee0df 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -200,7 +200,7 @@ if get_option('opengl') != 'none' endif evas_link = [ ] -evas_pub_deps = [eina, ecore, ector, emile, buildsystem] #FIXME buildsystem here is wrong, but needed in this commit +evas_pub_deps = [eina, ecore, ector, emile] if cpu_sse3 == true or cpu_neon == true and cpu_neon_intrinsics == false evas_opt = static_library('evas_opt', --
[EGIT] [core/efl] master 03/04: build: time for efl-one
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=92b049b4d7e70666b790ba78480da8f19c795b1c commit 92b049b4d7e70666b790ba78480da8f19c795b1c Author: Marcel Hollerbach Date: Sun May 10 14:43:28 2020 +0200 build: time for efl-one this is building parts of efl into a single .so and links all modules and binaries to it. The libraries themselfs are build as .a's which are linked together as .so's. Which is required as every subproject has its little custom c_flags, which are somtimes conflicting. After the final .so is then built, all the split up libraries are replaced with the efl-one. After that the modules and binaries are built correctly with the correct link on the efl-one parts. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11808 --- meson.build| 129 +++-- meson_options.txt | 6 ++ src/lib/ecore_evas/meson.build | 3 + src/lib/evas/meson.build | 2 + 4 files changed, 98 insertions(+), 42 deletions(-) diff --git a/meson.build b/meson.build index 330694951c..1533d984f7 100644 --- a/meson.build +++ b/meson.build @@ -295,48 +295,48 @@ endif subprojects = [ # name | option | mod | lib | bin | bench | tests | examples | true if build in efl-one | pkg-config options | name of static libs -['evil' ,[], false, true, false, false, false, false, false, [], []], -['eina' ,[], false, true, true, true, true, true, false, [], []], +['evil' ,[], false, true, false, false, false, false, true, [], []], +['eina' ,[], false, true, true, true, true, true, true, [], []], ['eolian' ,[], false, true, true, false, true, false, false, ['eina'], []], -['eo' ,[], false, true, false, true, true, false, false, ['eina'], []], -['efl' ,[], false, true, false, false, true, false, false, ['eo'], []], -['emile',[], false, true, false, false, true, true, false, ['eina', 'efl'], ['lz4', 'rg_etc']], -['eet' ,[], false, true, true, false, true, true, false, ['eina', 'emile', 'efl'], []], -['ecore',[], false, true, false, false, false, false, false, ['eina', 'eo', 'efl'], ['buildsystem']], -['eldbus' ,[], false, true, true, false, true, true, false, ['eina', 'eo', 'efl'], []], -['ecore',[], true, false, false, false, true, true, false, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus -['ecore_audio' ,['audio'] , false, true, false, false, false, false, false, ['eina', 'eo'], []], +['eo' ,[], false, true, false, true, true, false, true, ['eina'], []], +['efl' ,[], false, true, false, false, true, false, true, ['eo'], []], +['emile',[], false, true, false, false, true, true, true, ['eina', 'efl'], ['lz4', 'rg_etc']], +['eet' ,[], false, true, true, false, true, true, true, ['eina', 'emile', 'efl'], []], +['ecore',[], false, true, false, false, false, false, true, ['eina', 'eo', 'efl'], ['buildsystem']], +['eldbus' ,[], false, true, true, false, true, true, true, ['eina', 'eo', 'efl'], []], +['ecore',[], true, false, false, false, true, true, true, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus +['ecore_audio' ,['audio'] , false, true, false, false, false, false, true, ['eina', 'eo'], []], ['ecore_avahi' ,['avahi'] , false, true, false, false, false, true, false, ['eina', 'ecore'], []], -['ecore_con',[], false, true, true, false, true, false, false, ['eina',
[EGIT] [core/efl] master 01/04: build: split up building of libs, bins, modules, benchmark
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2d105a7e597a38a31ea88fefc02ac84b8b6e5543 commit 2d105a7e597a38a31ea88fefc02ac84b8b6e5543 Author: Marcel Hollerbach Date: Thu May 7 19:05:54 2020 +0200 build: split up building of libs, bins, modules, benchmark this is needed as a preparation for more build refactoring. Overall goal to build efl in a single .so. What this commit results in is that *every* lib gets build first, then the modules and binaries of all subprojects. This way of building is needed in order to replace the split up libraries with the efl-one one later. Additionally, the infrastructure is added to set flags on the libraries that should be build together. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11805 --- meson.build | 173 ++-- 1 file changed, 109 insertions(+), 64 deletions(-) diff --git a/meson.build b/meson.build index b0129681cf..330694951c 100644 --- a/meson.build +++ b/meson.build @@ -294,54 +294,54 @@ if sys_osx == true and get_option('lua-interpreter') == 'luajit' endif subprojects = [ -# name | option | mod | lib | bin | bench | tests | examples | pkg-config options | name of static libs -['evil' ,[], false, true, false, false, false, false, [], []], -['eina' ,[], false, true, true, true, true, true, [], []], -['eolian' ,[], false, true, true, false, true, false, ['eina'], []], -['eo' ,[], false, true, false, true, true, false, ['eina'], []], -['efl' ,[], false, true, false, false, true, false, ['eo'], []], -['emile',[], false, true, false, false, true, true, ['eina', 'efl'], ['lz4', 'rg_etc']], -['eet' ,[], false, true, true, false, true, true, ['eina', 'emile', 'efl'], []], -['ecore',[], false, true, false, false, false, false, ['eina', 'eo', 'efl'], ['buildsystem']], -['eldbus' ,[], false, true, true, false, true, true, ['eina', 'eo', 'efl'], []], -['ecore',[], true, false, false, false, true, true, ['eina', 'eo', 'efl'], []], #ecores modules depend on eldbus -['ecore_audio' ,['audio'] , false, true, false, false, false, false, ['eina', 'eo'], []], -['ecore_avahi' ,['avahi'] , false, true, false, false, false, true, ['eina', 'ecore'], []], -['ecore_con',[], false, true, true, false, true, false, ['eina', 'eo', 'efl', 'ecore'], ['http-parser']], -['ecore_file' ,[], false, true, false, false, false, false, ['eina'], []], -['eeze' ,['eeze'] , true, true, true, false, true, false, ['eina', 'efl'], []], -['ecore_input' ,[], false, true, false, false, false, false, ['eina', 'eo'], []], -['ecore_x' ,['x11'] , false, true, false, false, false, false, ['eina', 'efl'], []], -['ecore_fb' ,['fb'], false, true, false, false, false, false, ['eina'], []], -['ecore_wl2',['wl'], true, true, false, false, true, false, ['eina'], ['libdrm']], -['ecore_sdl',['sdl'] , false, true, false, false, false, false, ['eina'], []], -['ecore_win32' ,[], false, true, false, false, false, false, ['eina'], []], -['ecore_ipc',[], false, true, false, false, false, false, ['eina'], []], -['ecore_buffer' ,['buffer'], true, true, true, false, false, false, ['eina'], []], -['ector',[], false, true, false, false, true, false, ['eina', 'efl'], ['draw', 'triangulator', 'freetype']], -['elput',['drm'] , fa
[EGIT] [core/efl] master 01/01: ecore_main_timechanges: fix include
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a7a020dff53037746b5e042236d96b1bc2f9ef44 commit a7a020dff53037746b5e042236d96b1bc2f9ef44 Author: Marcel Hollerbach Date: Mon May 25 11:24:28 2020 +0200 ecore_main_timechanges: fix include we should not prefix this with the full path. Reviewed-by: Stefan Schmidt Reviewed-by: Vincent Torri Differential Revision: https://phab.enlightenment.org/D11881 --- src/lib/ecore/ecore_main_timechanges.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecore/ecore_main_timechanges.c b/src/lib/ecore/ecore_main_timechanges.c index cb3daf1fc1..c2b50ec8e9 100644 --- a/src/lib/ecore/ecore_main_timechanges.c +++ b/src/lib/ecore/ecore_main_timechanges.c @@ -14,7 +14,7 @@ #include "Ecore.h" #include "ecore_private.h" -#include "lib/ecore/ecore_main_common.h" +#include "ecore_main_common.h" #ifdef HAVE_SYS_TIMERFD_H --
[EGIT] [core/efl] master 06/06: Merge efreet_mime efreet_trash into efreet
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3ec1101652a9fedbfa40a29bcfe4842b1c86051e commit 3ec1101652a9fedbfa40a29bcfe4842b1c86051e Author: Marcel Hollerbach Date: Sun May 10 12:47:58 2020 +0200 Merge efreet_mime efreet_trash into efreet efreet_mime and efreet_trash are now included in libefreet.so. There are compatible libs for libefreet_mime.so libefreet_trash.so, which simple drag in libefreet.so. .pc files also are in place for compatibility. efreet_init & shutdown now initializes and shutdowns trash and mime. The old init functions now simply call efreet_init, efreet_init will then init the trash or mime libs. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11807 --- src/lib/efreet/Efreet.h | 3 +++ src/lib/efreet/efreet.c | 12 +++ src/lib/efreet/efreet_mime.c| 40 +++ src/lib/efreet/efreet_private.h | 8 ++- src/lib/efreet/efreet_trash.c | 26 +++ src/lib/efreet/meson.build | 47 + src/lib/eio/meson.build | 2 +- src/lib/elementary/meson.build | 4 ++-- src/tests/efreet/meson.build| 2 +- 9 files changed, 79 insertions(+), 65 deletions(-) diff --git a/src/lib/efreet/Efreet.h b/src/lib/efreet/Efreet.h index 51fbfebf6f..af25e033fa 100644 --- a/src/lib/efreet/Efreet.h +++ b/src/lib/efreet/Efreet.h @@ -167,6 +167,9 @@ EAPI void efreet_cache_disable(void); */ EAPI void efreet_cache_enable(void); +#include +#include + #undef EAPI #define EAPI diff --git a/src/lib/efreet/efreet.c b/src/lib/efreet/efreet.c index 091899f2b2..4c20b12bc1 100644 --- a/src/lib/efreet/efreet.c +++ b/src/lib/efreet/efreet.c @@ -94,6 +94,12 @@ efreet_init(void) if (!efreet_util_init()) goto shutdown_efreet_menu; + if (!efreet_internal_mime_init()) + goto shutdown_efreet_mime; + + if (!efreet_internal_trash_init()) + goto shutdown_efreet_trash; + #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCALE_DIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); @@ -101,6 +107,10 @@ efreet_init(void) return _efreet_init_count; +shutdown_efreet_trash: + efreet_internal_trash_shutdown(); +shutdown_efreet_mime: + efreet_internal_mime_shutdown(); shutdown_efreet_menu: efreet_menu_shutdown(); shutdown_efreet_desktop: @@ -146,6 +156,8 @@ efreet_shutdown(void) efreet_xml_shutdown(); efreet_cache_shutdown(); efreet_base_shutdown(); + efreet_internal_mime_shutdown(); + efreet_internal_trash_shutdown(); IF_RELEASE(efreet_lang); IF_RELEASE(efreet_lang_country); diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c index 9eba8c8db9..d94894ff71 100644 --- a/src/lib/efreet/efreet_mime.c +++ b/src/lib/efreet/efreet_mime.c @@ -348,21 +348,12 @@ _efreet_mimedb_glob_mime_get(unsigned int num) /** - **/ -EAPI int -efreet_mime_init(void) +int +efreet_internal_mime_init(void) { if (++_efreet_mime_init_count != 1) return _efreet_mime_init_count; - if (!ecore_init()) - return --_efreet_mime_init_count; - - if (!ecore_file_init()) - goto shutdown_ecore; - - if (!efreet_init()) - goto shutdown_ecore_file; - _efreet_mime_log_dom = eina_log_domain_register ("efreet_mime", EFREET_DEFAULT_LOG_COLOR); @@ -388,17 +379,11 @@ unregister_log_domain: eina_log_domain_unregister(_efreet_mime_log_dom); _efreet_mime_log_dom = -1; shutdown_efreet: - efreet_shutdown(); -shutdown_ecore_file: - ecore_file_shutdown(); -shutdown_ecore: - ecore_shutdown(); - return --_efreet_mime_init_count; -} + } -EAPI int -efreet_mime_shutdown(void) +int +efreet_internal_mime_shutdown(void) { if (_efreet_mime_init_count == 0) { @@ -428,13 +413,22 @@ efreet_mime_shutdown(void) IF_FREE_HASH(mime_icons); eina_log_domain_unregister(_efreet_mime_log_dom); _efreet_mime_log_dom = -1; - efreet_shutdown(); - ecore_file_shutdown(); - ecore_shutdown(); return _efreet_mime_init_count; } +EAPI int +efreet_mime_init(void) +{ + return efreet_init(); +} + +EAPI int +efreet_mime_shutdown(void) +{ + return efreet_shutdown(); +} + EAPI const char * efreet_mime_type_get(const char *file) { diff --git a/src/lib/efreet/efreet_private.h b/src/lib/efreet/efreet_private.h index eb42c28f74..77a74dfca1 100644 --- a/src/lib/efreet/efreet_private.h +++ b/src/lib/efreet/efreet_private.h @@ -114,7 +114,7 @@ /** * macros that are used all around the code for message processing - * four macros are defined ERR, WRN, DGB, INF. + * four macros are defined ERR, WRN, DGB, INF. * EFREET_MODULE_LOG_DOM should be defined individually for each module */ #ifdef CRI @@ -214,6 +214,12 @@ void efreet_desktop_shutdown(void); int efreet_util_init(void); int efreet_uti
[EGIT] [core/enlightenment] enlightenment-0.24 03/05: e_ckpasswd_main: fix polkit to auth root
raster pushed a commit to branch enlightenment-0.24. http://git.enlightenment.org/core/enlightenment.git/commit/?id=67bdd4d0716528bba63763098739ce5365e0376d commit 67bdd4d0716528bba63763098739ce5365e0376d Author: Marcel Hollerbach Date: Mon May 25 14:39:25 2020 +0200 e_ckpasswd_main: fix polkit to auth root there were the wrong pids passed. This fixes calls like "systemctl start docker". --- src/bin/e_ckpasswd_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e_ckpasswd_main.c b/src/bin/e_ckpasswd_main.c index db71cd116..3d27ac6af 100644 --- a/src/bin/e_ckpasswd_main.c +++ b/src/bin/e_ckpasswd_main.c @@ -214,7 +214,7 @@ polkit_auth(const char *cookie, unsigned int auth_uid) if (!m) BARF("Cannot get method call: AuthenticationAgentResponse2"); iter = eldbus_message_iter_get(m); if (!iter) BARF("Cannot set iter on proxy"); - if (!eldbus_message_iter_arguments_append(iter, "us", auth_uid, cookie)) + if (!eldbus_message_iter_arguments_append(iter, "us", uid, cookie)) BARF("Cannot append 'us' args"); if (!eldbus_message_iter_arguments_append(iter, "(sa{sv})", &subj)) BARF("Cannot append '(sa{sv})' args"); @@ -361,7 +361,7 @@ main(int argc, char **argv) // ok to fail - auth will just possibly fail then e_setuid_setup(&uid, &gid, &user_name, &group_name); - if (_check_auth(uid, pw) == 0) + if (_check_auth(polkit_mode ? polkit_uid : uid, pw) == 0) { fprintf(stderr, "AUTH: Password OK\n"); if (polkit_mode == 1) --
[EGIT] [core/enlightenment] master 01/01: e_ckpasswd_main: fix polkit to auth root
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=4475eb42a6a5ac3cf92166c4283b0b8391ce0581 commit 4475eb42a6a5ac3cf92166c4283b0b8391ce0581 Author: Marcel Hollerbach Date: Mon May 25 14:39:25 2020 +0200 e_ckpasswd_main: fix polkit to auth root there were the wrong pids passed. This fixes calls like "systemctl start docker". --- src/bin/e_ckpasswd_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e_ckpasswd_main.c b/src/bin/e_ckpasswd_main.c index b5e01d4ae..76bbf3543 100644 --- a/src/bin/e_ckpasswd_main.c +++ b/src/bin/e_ckpasswd_main.c @@ -213,7 +213,7 @@ polkit_auth(const char *cookie, unsigned int auth_uid) if (!m) BARF("Cannot get method call: AuthenticationAgentResponse2"); iter = eldbus_message_iter_get(m); if (!iter) BARF("Cannot set iter on proxy"); - if (!eldbus_message_iter_arguments_append(iter, "us", auth_uid, cookie)) + if (!eldbus_message_iter_arguments_append(iter, "us", uid, cookie)) BARF("Cannot append 'us' args"); if (!eldbus_message_iter_arguments_append(iter, "(sa{sv})", &subj)) BARF("Cannot append '(sa{sv})' args"); @@ -360,7 +360,7 @@ main(int argc, char **argv) // ok to fail - auth will just possibly fail then e_setuid_setup(&uid, &gid, &user_name, &group_name); - if (_check_auth(uid, pw) == 0) + if (_check_auth(polkit_mode ? polkit_uid : uid, pw) == 0) { fprintf(stderr, "AUTH: Password OK\n"); if (polkit_mode == 1) --
[EGIT] [core/efl] master 01/02: elm_dnd: do not register widgets twice
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9f7c518a20cf9d9a45b665a2d9fe2dceb373fa7d commit 9f7c518a20cf9d9a45b665a2d9fe2dceb373fa7d Author: Marcel Hollerbach Date: Mon May 18 19:04:43 2020 +0200 elm_dnd: do not register widgets twice we have to support none widgets, but we should not register widgets twice because of that. Differential Revision: https://phab.enlightenment.org/D11877 --- src/lib/elementary/elm_dnd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/elm_dnd.c b/src/lib/elementary/elm_dnd.c index 18ae659bdf..f0d1824aca 100644 --- a/src/lib/elementary/elm_dnd.c +++ b/src/lib/elementary/elm_dnd.c @@ -182,7 +182,8 @@ elm_drop_target_add(Evas_Object *obj, Elm_Sel_Format format, target->format = format; efl_event_callback_array_add(obj, drop_target_cb(), target); - _drop_event_register(obj); //this is ensuring that we are also supporting none widgets + if (!efl_isa(obj, EFL_UI_WIDGET_CLASS)) + _drop_event_register(obj); //this is ensuring that we are also supporting none widgets if (!target_register) target_register = eina_hash_pointer_new(NULL); eina_hash_list_append(target_register, &obj, target); --
[EGIT] [core/efl] efl-1.24 01/02: exactness_player: do not test for delay_ms
stefan pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=924c6fec18958712cddd6d8cebe0476e05f8b29c commit 924c6fec18958712cddd6d8cebe0476e05f8b29c Author: Marcel Hollerbach Date: Tue May 5 10:53:15 2020 +0200 exactness_player: do not test for delay_ms that is a unsigned int, if its 0 the timer is called as fast as possible. Not doing that breaks exactness. @fix Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11774 --- src/bin/exactness/player.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/exactness/player.c b/src/bin/exactness/player.c index befd028852..b35637f25c 100644 --- a/src/bin/exactness/player.c +++ b/src/bin/exactness/player.c @@ -511,7 +511,7 @@ _feed_event_timer_cb(void *data EINA_UNUSED) if (act && act->type != EXACTNESS_ACTION_STABILIZE) { act = eina_list_data_get(_cur_event_list); - if (act && act->delay_ms) + if (act) { DBG(" %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0); ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL); @@ -552,7 +552,7 @@ _stabilization_timer_cb(void *data EINA_UNUSED) if (_src_type != FTYPE_REMOTE && !_pause_request) { Exactness_Action *act = eina_list_data_get(_cur_event_list); - if (act && act->delay_ms) + if (act) { DBG(" %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0); ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL); --
[EGIT] [core/efl] master 01/01: exactness_player: do not test for delay_ms
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2830d1c6fa3c9530584d0f1c4ad64ee503bec982 commit 2830d1c6fa3c9530584d0f1c4ad64ee503bec982 Author: Marcel Hollerbach Date: Tue May 5 10:53:15 2020 +0200 exactness_player: do not test for delay_ms that is a unsigned int, if its 0 the timer is called as fast as possible. Not doing that breaks exactness. @fix Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11774 --- src/bin/exactness/player.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/exactness/player.c b/src/bin/exactness/player.c index befd028852..b35637f25c 100644 --- a/src/bin/exactness/player.c +++ b/src/bin/exactness/player.c @@ -511,7 +511,7 @@ _feed_event_timer_cb(void *data EINA_UNUSED) if (act && act->type != EXACTNESS_ACTION_STABILIZE) { act = eina_list_data_get(_cur_event_list); - if (act && act->delay_ms) + if (act) { DBG(" %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0); ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL); @@ -552,7 +552,7 @@ _stabilization_timer_cb(void *data EINA_UNUSED) if (_src_type != FTYPE_REMOTE && !_pause_request) { Exactness_Action *act = eina_list_data_get(_cur_event_list); - if (act && act->delay_ms) + if (act) { DBG(" %s timer_time=<%f>\n", __func__, act->delay_ms / 1000.0); ecore_timer_add(act->delay_ms / 1000.0, _feed_event_timer_cb, NULL); --
[EGIT] [core/efl] efl-1.24 01/02: ecore_evas: only define these eina errors once
stefan pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=aabea0de2faa8c2f5fb7709e9b6e23021de13f97 commit aabea0de2faa8c2f5fb7709e9b6e23021de13f97 Author: Marcel Hollerbach Date: Thu Apr 30 09:22:01 2020 -0400 ecore_evas: only define these eina errors once Summary: they are not needed multiple times, infact this is creating multiple definition errors. @fix Reviewers: stefan_schmidt, zmike Reviewed By: zmike Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11766 --- src/lib/ecore_evas/ecore_evas.c | 4 src/lib/ecore_evas/ecore_evas_private.h | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index f06c189ad9..87331f03e8 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -55,6 +55,10 @@ goto _label; \ } +EAPI Eina_Error ecore_evas_no_matching_type; +EAPI Eina_Error ecore_evas_no_selection; +EAPI Eina_Error ecore_evas_request_replaced; + EAPI Eina_Bool _ecore_evas_app_comp_sync = EINA_FALSE; EAPI int _ecore_evas_log_dom = -1; static int _ecore_evas_init_count = 0; diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 1a35e62a5c..20c176f050 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -33,9 +33,9 @@ EAPI extern int _ecore_evas_log_dom; -EAPI Eina_Error ecore_evas_no_matching_type; -EAPI Eina_Error ecore_evas_no_selection; -EAPI Eina_Error ecore_evas_request_replaced; +EAPI extern Eina_Error ecore_evas_no_matching_type; +EAPI extern Eina_Error ecore_evas_no_selection; +EAPI extern Eina_Error ecore_evas_request_replaced; #ifdef ECORE_EVAS_DEFAULT_LOG_COLOR # undef ECORE_EVAS_DEFAULT_LOG_COLOR --
[EGIT] [core/efl] efl-1.24 01/01: elm_fileselector: support expandable items
raster pushed a commit to branch efl-1.24. http://git.enlightenment.org/core/efl.git/commit/?id=498af4b32da4ef668370d6c8a71c2b1a5eb9ad25 commit 498af4b32da4ef668370d6c8a71c2b1a5eb9ad25 Author: Marcel Hollerbach Date: Wed Apr 29 11:47:05 2020 -0400 elm_fileselector: support expandable items Summary: the fileselector can store exactly 1 model and monitor that for changes, which works normally just well. However, when we expand a items, another model comes into play, which is not monitored, and no additional reference is taken. Which means, _process_last will simply delete it, and elements that did not come into play at the _populate call are never displayed. With this commit, we check that we do not have a parent item, and explictly wait for the model to publish all its items, before we call _process_last. Additionally, that showed that the tracking of the list/grid item is ultimatly buggy, as there is no assertion that the parent model is really the parent directoy. Hence we need to hand pass the parent item here, as a fallback option to set the correct parent item. fixes T8689 Reviewers: zmike Reviewed By: zmike Subscribers: zmike, cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8689 Differential Revision: https://phab.enlightenment.org/D11765 --- src/lib/elementary/elc_fileselector.c | 38 +++ 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c index eb107b14c6..01d4586b0e 100644 --- a/src/lib/elementary/elc_fileselector.c +++ b/src/lib/elementary/elc_fileselector.c @@ -880,7 +880,7 @@ _listing_request_cleanup(Listing_Request *lreq) } static void -_process_model(Elm_Fileselector_Data *sd, Efl_Model *child) +_process_model(Elm_Fileselector_Data *sd, Efl_Model *child, Elm_Object_Item *fallback_parent_item) { Elm_Fileselector_Item_Data *it_data; Elm_Object_Item *item, *it_parent; @@ -927,6 +927,8 @@ _process_model(Elm_Fileselector_Data *sd, Efl_Model *child) it_data->is_dir = dir; it_parent = efl_key_data_get(parent, ".item.data"); + if (!it_parent) + it_parent = fallback_parent_item; if (dir) { @@ -981,7 +983,9 @@ _process_children_cb(Eo *model EINA_UNUSED, void *data, const Eina_Value v) if (!lreq->valid) goto end; EINA_VALUE_ARRAY_FOREACH(&v, len, i, child) - _process_model(lreq->sd, child); + { +_process_model(lreq->sd, child, lreq->parent_it); + } lreq->item_total = len; @@ -1003,6 +1007,29 @@ _process_children_error(Eo *model EINA_UNUSED, void *data, Eina_Error error) return eina_value_error_init(error); } +static void +_count_changed_cb(void *data, const Efl_Event *ev EINA_UNUSED) +{ + Listing_Request *lreq = data; + Eina_Future *future; + + efl_event_callback_del(lreq->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _count_changed_cb, lreq); + + if (efl_model_children_count_get(lreq->model)) + { +future = efl_model_children_slice_get(lreq->model, 0, efl_model_children_count_get(lreq->model)); +future = efl_future_then(lreq->obj, future); +efl_future_then(lreq->model, future, +.success = _process_children_cb, +.error = _process_children_error, +.data = lreq); + } + else + { +_process_last(lreq); + } +} + static void _populate(Evas_Object *obj, Efl_Model *model, @@ -1087,7 +1114,10 @@ _populate(Evas_Object *obj, } else { -_process_last(lreq); +if (parent_it) + efl_event_callback_add(lreq->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _count_changed_cb, lreq); +else + _process_last(lreq); } } @@ -1624,7 +1654,7 @@ _resource_created_then(Eo *model EINA_UNUSED, void *data, const Eina_Value v) ELM_FILESELECTOR_DATA_GET(fs, sd); EINA_VALUE_ARRAY_FOREACH(&v, len, i, child) - _process_model(sd, child); + _process_model(sd, child, NULL); //this function will always just work for the root model of the fileselector return v; } --
[EGIT] [core/efl] master 01/01: ecore_evas: only define these eina errors once
zmike pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7b68960d3a2deb5d4064193a2e2a7b6f7f8baae3 commit 7b68960d3a2deb5d4064193a2e2a7b6f7f8baae3 Author: Marcel Hollerbach Date: Thu Apr 30 09:22:01 2020 -0400 ecore_evas: only define these eina errors once Summary: they are not needed multiple times, infact this is creating multiple definition errors. @fix Reviewers: stefan_schmidt, zmike Reviewed By: zmike Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11766 --- src/lib/ecore_evas/ecore_evas.c | 4 src/lib/ecore_evas/ecore_evas_private.h | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index f06c189ad9..87331f03e8 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -55,6 +55,10 @@ goto _label; \ } +EAPI Eina_Error ecore_evas_no_matching_type; +EAPI Eina_Error ecore_evas_no_selection; +EAPI Eina_Error ecore_evas_request_replaced; + EAPI Eina_Bool _ecore_evas_app_comp_sync = EINA_FALSE; EAPI int _ecore_evas_log_dom = -1; static int _ecore_evas_init_count = 0; diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 1a35e62a5c..20c176f050 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -33,9 +33,9 @@ EAPI extern int _ecore_evas_log_dom; -EAPI Eina_Error ecore_evas_no_matching_type; -EAPI Eina_Error ecore_evas_no_selection; -EAPI Eina_Error ecore_evas_request_replaced; +EAPI extern Eina_Error ecore_evas_no_matching_type; +EAPI extern Eina_Error ecore_evas_no_selection; +EAPI extern Eina_Error ecore_evas_request_replaced; #ifdef ECORE_EVAS_DEFAULT_LOG_COLOR # undef ECORE_EVAS_DEFAULT_LOG_COLOR --
[EGIT] [core/efl] master 01/01: elm_fileselector: support expandable items
zmike pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f21df93595f18f803ee50095084bd695421b304a commit f21df93595f18f803ee50095084bd695421b304a Author: Marcel Hollerbach Date: Wed Apr 29 11:47:05 2020 -0400 elm_fileselector: support expandable items Summary: the fileselector can store exactly 1 model and monitor that for changes, which works normally just well. However, when we expand a items, another model comes into play, which is not monitored, and no additional reference is taken. Which means, _process_last will simply delete it, and elements that did not come into play at the _populate call are never displayed. With this commit, we check that we do not have a parent item, and explictly wait for the model to publish all its items, before we call _process_last. Additionally, that showed that the tracking of the list/grid item is ultimatly buggy, as there is no assertion that the parent model is really the parent directoy. Hence we need to hand pass the parent item here, as a fallback option to set the correct parent item. fixes T8689 Reviewers: zmike Reviewed By: zmike Subscribers: zmike, cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8689 Differential Revision: https://phab.enlightenment.org/D11765 --- src/lib/elementary/elc_fileselector.c | 38 +++ 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/lib/elementary/elc_fileselector.c b/src/lib/elementary/elc_fileselector.c index eb107b14c6..01d4586b0e 100644 --- a/src/lib/elementary/elc_fileselector.c +++ b/src/lib/elementary/elc_fileselector.c @@ -880,7 +880,7 @@ _listing_request_cleanup(Listing_Request *lreq) } static void -_process_model(Elm_Fileselector_Data *sd, Efl_Model *child) +_process_model(Elm_Fileselector_Data *sd, Efl_Model *child, Elm_Object_Item *fallback_parent_item) { Elm_Fileselector_Item_Data *it_data; Elm_Object_Item *item, *it_parent; @@ -927,6 +927,8 @@ _process_model(Elm_Fileselector_Data *sd, Efl_Model *child) it_data->is_dir = dir; it_parent = efl_key_data_get(parent, ".item.data"); + if (!it_parent) + it_parent = fallback_parent_item; if (dir) { @@ -981,7 +983,9 @@ _process_children_cb(Eo *model EINA_UNUSED, void *data, const Eina_Value v) if (!lreq->valid) goto end; EINA_VALUE_ARRAY_FOREACH(&v, len, i, child) - _process_model(lreq->sd, child); + { +_process_model(lreq->sd, child, lreq->parent_it); + } lreq->item_total = len; @@ -1003,6 +1007,29 @@ _process_children_error(Eo *model EINA_UNUSED, void *data, Eina_Error error) return eina_value_error_init(error); } +static void +_count_changed_cb(void *data, const Efl_Event *ev EINA_UNUSED) +{ + Listing_Request *lreq = data; + Eina_Future *future; + + efl_event_callback_del(lreq->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _count_changed_cb, lreq); + + if (efl_model_children_count_get(lreq->model)) + { +future = efl_model_children_slice_get(lreq->model, 0, efl_model_children_count_get(lreq->model)); +future = efl_future_then(lreq->obj, future); +efl_future_then(lreq->model, future, +.success = _process_children_cb, +.error = _process_children_error, +.data = lreq); + } + else + { +_process_last(lreq); + } +} + static void _populate(Evas_Object *obj, Efl_Model *model, @@ -1087,7 +1114,10 @@ _populate(Evas_Object *obj, } else { -_process_last(lreq); +if (parent_it) + efl_event_callback_add(lreq->model, EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED, _count_changed_cb, lreq); +else + _process_last(lreq); } } @@ -1624,7 +1654,7 @@ _resource_created_then(Eo *model EINA_UNUSED, void *data, const Eina_Value v) ELM_FILESELECTOR_DATA_GET(fs, sd); EINA_VALUE_ARRAY_FOREACH(&v, len, i, child) - _process_model(sd, child); + _process_model(sd, child, NULL); //this function will always just work for the root model of the fileselector return v; } --
[EGIT] [core/efl] master 02/02: build: install eo files per default
bu5hm4n pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e6a62186971d5ef445f6a79d593bc3c3b92628a7 commit e6a62186971d5ef445f6a79d593bc3c3b92628a7 Author: Marcel Hollerbach Date: Sun Sep 29 18:04:51 2019 +0200 build: install eo files per default in the last release we turned that off, because we started to stabelize API back there, but the .eo file format wasnt ready yet. Now, the file format is stable. And we stabelized more widgets, which means, we should also install the .eo files per default. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D10242 --- meson_options.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson_options.txt b/meson_options.txt index 0907aff980..043957e046 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -361,7 +361,7 @@ option('elementary-base-dir', option('install-eo-files', type: 'boolean', - value: false, + value: true, description : 'Install any eo file' ) --
[EGIT] [core/efl] master 01/01: efl_fileselector_entry: do not crash on a invalid model
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3614c4190d78ed3abce4b3e1e175342e6299a242 commit 3614c4190d78ed3abce4b3e1e175342e6299a242 Author: Marcel Hollerbach Date: Sun Apr 26 17:29:09 2020 +0200 efl_fileselector_entry: do not crash on a invalid model something is happening during shutdown, when a fileselector was created before. This is ending up in a strcmp to a NULL ptr, which crashes, with the now, we ensure that we are not crashing anymore, when that is happning. TO solve this properly we should really fix the cause of a invalid model beeing returned, however, i do not feel compftable doing that so short before a release. Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D11762 --- src/lib/elementary/elc_fileselector_entry.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elementary/elc_fileselector_entry.c b/src/lib/elementary/elc_fileselector_entry.c index 632f17385b..ff37e5b1d0 100644 --- a/src/lib/elementary/elc_fileselector_entry.c +++ b/src/lib/elementary/elc_fileselector_entry.c @@ -444,7 +444,7 @@ _elm_fileselector_entry_efl_ui_view_model_get(const Eo *obj, Elm_Fileselector_En free(sd->path); sd->path = elm_entry_markup_to_utf8(elm_object_text_get(sd->entry)); - if (!strcmp(sd->path, efl_io_model_path_get(bmodel))) + if (eina_streq(sd->path, efl_io_model_path_get(bmodel))) return bmodel; ret = efl_add_ref(efl_class_get(bmodel), (Eo*) obj, --