[EGIT] [core/efl] master 01/01: efl_ui_scroll_util: add null check after calloc
woohyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bc162b1253b3dc16fb6c8989b96d26fd120384c0 commit bc162b1253b3dc16fb6c8989b96d26fd120384c0 Author: WooHyun Jung Date: Fri Sep 20 11:09:02 2019 +0900 efl_ui_scroll_util: add null check after calloc --- src/lib/elementary/efl_ui_scroll_util.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/elementary/efl_ui_scroll_util.c b/src/lib/elementary/efl_ui_scroll_util.c index abf77110d6..b375c7488f 100644 --- a/src/lib/elementary/efl_ui_scroll_util.c +++ b/src/lib/elementary/efl_ui_scroll_util.c @@ -249,6 +249,7 @@ void efl_ui_scroll_connector_bind(Eo *obj, Eo *manager) { Scroll_Connector_Context *ctx = calloc(1, sizeof(Scroll_Connector_Context)); + if (!ctx) return; ctx->obj = obj; ctx->smanager = manager; efl_key_data_set(obj, "__context", ctx); --
Re: [E-devel] 1.23 work items list
On 9/19/19 11:22 PM, Stefan Schmidt wrote: I have not heard anything bad from packagers yet. If that means all is good or if nobody tested its hard to say. :/ I am aiming to have info for you next week, 1.22 changed some stuff that broke the building of most of our themes so I need ot address that first before I can give some more meaningful info -- Simon Lees (Simotek)http://simotek.net Emergency Update Team keybase.io/simotek SUSE Linux Adelaide Australia, UTC+10:30 GPG Fingerprint: 5B87 DB9D 88DC F606 E489 CEC5 0922 C246 02F0 014B ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: efl_io_model: next try to fix this race condition
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1eb24301fd517952e7e2c31a19c523bd4bf2e06e commit 1eb24301fd517952e7e2c31a19c523bd4bf2e06e Author: Marcel Hollerbach Date: Wed Sep 18 11:32:08 2019 +0200 efl_io_model: next try to fix this race condition what is happening is that a file gets announced through eio_model listing code, at this point of time, the monitor does not yet know about the file. If the file now gets deleted between the annoncing and the learning of the file from the monitor, then the file got an ADD event, but no DEL event. Which is a bug. With this commit there is a new API which asks the monitor if the file already has the knowledge about the files existance, or not. A few monitors like win32 inotify or cocoa do not have context about the file directly, if the OS is now having the same bug, then we are again in trouble, however, we canot do anything about that. In the case of kevent or poll, this asks the context of the monitor if the file is already there. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10006 --- src/lib/eio/Eio_Legacy.h | 18 ++ src/lib/eio/efl_io_model.c| 7 +++ src/lib/eio/eio_monitor.c | 14 ++ src/lib/eio/eio_monitor_cocoa.c | 4 src/lib/eio/eio_monitor_inotify.c | 5 + src/lib/eio/eio_monitor_kevent.c | 19 ++- src/lib/eio/eio_monitor_poll.c| 15 +++ src/lib/eio/eio_monitor_win32.c | 5 + src/lib/eio/eio_private.h | 2 ++ 9 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/lib/eio/Eio_Legacy.h b/src/lib/eio/Eio_Legacy.h index 50140edd4e..c44340cac0 100644 --- a/src/lib/eio/Eio_Legacy.h +++ b/src/lib/eio/Eio_Legacy.h @@ -1257,6 +1257,24 @@ EAPI const char *eio_monitor_path_get(Eio_Monitor *monitor); * @beta */ EAPI Eina_Bool eio_monitor_fallback_check(const Eio_Monitor *monitor); + +/** + * @brief Check if a monitor has the context about a file or not + * @param monitor The Eio_Monitor to check + * @param path The path to check + * @return EINA_TRUE if there is context, EINA_FALSE otherwise. + * + * There are Monitors that need context about a file before they can monitor the file correctly. + * As an example: If you publish a file in your API before the monitor has this file in his context, + * and the file gets deleted as a reaction to this, the monitor will not be able to emit the correct DELETE + * event even if the file is in the monitors path. + * + * In case the monitor does not yet have context, you can be sure that the monitor will bring up an FILE_ADD event about that file. + * + * @since 1.23 + * @beta + */ +EAPI Eina_Bool eio_monitor_has_context(const Eio_Monitor *monitor, const char *path); #endif /** * @} diff --git a/src/lib/eio/efl_io_model.c b/src/lib/eio/efl_io_model.c index e6b6149288..88c32b19b8 100644 --- a/src/lib/eio/efl_io_model.c +++ b/src/lib/eio/efl_io_model.c @@ -762,6 +762,12 @@ _efl_io_model_efl_model_property_set(Eo *obj, return efl_loop_future_rejected(obj, err); } +static Eina_Bool +_monitor_has_context(Efl_Io_Model_Data *pd, const char *path) +{ + return eio_monitor_has_context(pd->monitor, path); +} + static void _efl_io_model_children_list(void *data, Eina_Array *entries) { @@ -779,6 +785,7 @@ _efl_io_model_children_list(void *data, Eina_Array *entries) { Efl_Io_Model_Info *mi; +if (!_monitor_has_context(pd, info->path)) continue; if (_already_added(pd, info->path)) continue; if (pd->filter.cb) diff --git a/src/lib/eio/eio_monitor.c b/src/lib/eio/eio_monitor.c index bc1ed07db0..64eab219b2 100644 --- a/src/lib/eio/eio_monitor.c +++ b/src/lib/eio/eio_monitor.c @@ -411,3 +411,17 @@ eio_monitor_path_get(Eio_Monitor *monitor) EINA_SAFETY_ON_NULL_RETURN_VAL(monitor, NULL); return monitor->path; } + + +EAPI Eina_Bool +eio_monitor_has_context(const Eio_Monitor *monitor, const char *path) +{ + if (monitor->fallback) + { +return eio_monitor_fallback_context_check(monitor, path); + } + else + { +return eio_monitor_context_check(monitor, path); + } +} diff --git a/src/lib/eio/eio_monitor_cocoa.c b/src/lib/eio/eio_monitor_cocoa.c index d491de4194..be354964a0 100644 --- a/src/lib/eio/eio_monitor_cocoa.c +++ b/src/lib/eio/eio_monitor_cocoa.c @@ -403,6 +403,10 @@ void eio_monitor_backend_del(Eio_Monitor *monitor) eina_hash_del(_fsevent_monitors, monitor->path, backend); } +Eina_Bool eio_monitor_context_check(const Eio_Monitor *monitor, const char *path) +{ + return EINA_TRUE; +} /** * API * diff --git a/src/lib/eio/eio_monitor_inotify.c b/src/lib/eio/eio_monitor_inotify.c index f3
[EGIT] [core/efl] master 17/23: ecore: properly initialize the event structure in Efl.Generic_Model.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6af8a70f37d4ddbf8629e0b6d747518620bca3f7 commit 6af8a70f37d4ddbf8629e0b6d747518620bca3f7 Author: Cedric Bail Date: Tue Sep 17 18:42:51 2019 -0700 ecore: properly initialize the event structure in Efl.Generic_Model. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D10028 --- src/lib/ecore/efl_generic_model.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecore/efl_generic_model.c b/src/lib/ecore/efl_generic_model.c index 99b6f480ec..c478e918d2 100644 --- a/src/lib/ecore/efl_generic_model.c +++ b/src/lib/ecore/efl_generic_model.c @@ -144,7 +144,7 @@ _efl_generic_model_efl_model_children_count_get(const Eo *obj EINA_UNUSED, Efl_G static Eo * _efl_generic_model_efl_model_child_add(Eo *obj, Efl_Generic_Model_Data *sd) { - Efl_Model_Children_Event cevt; + Efl_Model_Children_Event cevt = { 0 }; Efl_Model *child; child = efl_add(EFL_GENERIC_MODEL_CLASS, obj); --
[EGIT] [core/efl] master 18/23: ecore: properly initialize all field in event generated by Efl.Generic_Model
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f402efbba31515095ac41551483e51b6e283b094 commit f402efbba31515095ac41551483e51b6e283b094 Author: Cedric Bail Date: Tue Sep 17 19:03:48 2019 -0700 ecore: properly initialize all field in event generated by Efl.Generic_Model Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D10029 --- src/lib/ecore/efl_generic_model.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/ecore/efl_generic_model.c b/src/lib/ecore/efl_generic_model.c index c478e918d2..dc33428d99 100644 --- a/src/lib/ecore/efl_generic_model.c +++ b/src/lib/ecore/efl_generic_model.c @@ -175,7 +175,7 @@ _efl_generic_model_efl_model_child_del(Eo *obj, Efl_Generic_Model_Data *sd, Eo * { if (data == child) { - Efl_Model_Children_Event cevt; + Efl_Model_Children_Event cevt = { 0 }; sd->childrens = eina_list_remove_list(sd->childrens, l); --
[EGIT] [core/efl] master 01/23: ecore/signal: also use nonblock for writing side of signal pipe
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=aae2e49744824d8698262fca943b5c47c94ee560 commit aae2e49744824d8698262fca943b5c47c94ee560 Author: Mike Blumenkrantz Date: Thu Sep 19 14:03:59 2019 -0400 ecore/signal: also use nonblock for writing side of signal pipe if any efl-based process receives a bunch of signals in a short period of time, it will deadlock in the signal handler. this is unavoidable given the current signal handling architecture by setting nonblock, we can at least avoid deadlocking even if it means we'll be losing signal events @fix Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10025 --- src/lib/ecore/ecore_signal.c | 18 -- 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c index e16694b55a..c3e5b0fda9 100644 --- a/src/lib/ecore/ecore_signal.c +++ b/src/lib/ecore/ecore_signal.c @@ -168,13 +168,17 @@ _ecore_signal_callback(int sig, siginfo_t *si, void *foo EINA_UNUSED) { int err = errno; if (pipe_dead) return; -const ssize_t bytes = write(sig_pipe[1], &sdata, sizeof(sdata)); -if (EINA_UNLIKELY(bytes != sizeof(sdata))) +do { - err = errno; - ERR("write() failed: %s", strerror(err)); - } -errno = err; + const ssize_t bytes = write(sig_pipe[1], &sdata, sizeof(sdata)); + if (EINA_UNLIKELY(bytes != sizeof(sdata))) + { + err = errno; + ERR("write() failed: %d: %s", err, strerror(err)); + } + errno = err; + /* loop if we got preempted */ + } while (err == EINTR); } switch (sig) { @@ -249,6 +253,8 @@ _ecore_signal_pipe_init(void) eina_file_close_on_exec(sig_pipe[1], EINA_TRUE); if (fcntl(sig_pipe[0], F_SETFL, O_NONBLOCK) < 0) ERR("can't set pipe to NONBLOCK"); +if (fcntl(sig_pipe[1], F_SETFL, O_NONBLOCK) < 0) + ERR("can't set pipe to NONBLOCK"); } _signalhandler_setup(); --
[EGIT] [core/efl] master 11/23: efl_ui_layout_part_box/table: remove real_part_set
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d8053bac9607f0cd592f605d46db57c72d33b70d commit d8053bac9607f0cd592f605d46db57c72d33b70d Author: Marcel Hollerbach Date: Tue Sep 17 16:39:55 2019 +0200 efl_ui_layout_part_box/table: remove real_part_set real part set was used to set the real part on the part, so the obj pointer of Layout_Part_Data points to the correct evas object. With this commit, this API is removed from the public .eo files, and is refactored into the same API which is private. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9993 --- src/lib/elementary/efl_ui_layout_pack.c| 31 +- src/lib/elementary/efl_ui_layout_part_box.eo | 9 src/lib/elementary/efl_ui_layout_part_table.eo | 9 3 files changed, 11 insertions(+), 38 deletions(-) diff --git a/src/lib/elementary/efl_ui_layout_pack.c b/src/lib/elementary/efl_ui_layout_pack.c index 646ef3e483..02ad407981 100644 --- a/src/lib/elementary/efl_ui_layout_pack.c +++ b/src/lib/elementary/efl_ui_layout_pack.c @@ -41,15 +41,24 @@ struct _Layout_Part_Data unsigned char temp; }; +static void +_efl_ui_layout_part_set_real_part(Eo *obj, struct _Layout_Part_Data *pd, Eo *layout, const char *part) +{ + pd->obj = layout; + pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_BASE_CLASS, obj); + eina_stringshare_replace(&pd->part, part); + pd->temp = 1; +} + Eo * _efl_ui_layout_pack_proxy_get(Efl_Ui_Layout *obj, Edje_Part_Type type, const char *part) { if (type == EDJE_PART_TYPE_BOX) return efl_add(BOX_CLASS, obj, - efl_ui_layout_part_box_real_part_set(efl_added, obj, part)); + _efl_ui_layout_part_set_real_part(efl_added, efl_data_scope_get(efl_added, BOX_CLASS), obj, part)); else if (type == EDJE_PART_TYPE_TABLE) return efl_add(TABLE_CLASS, obj, - efl_ui_layout_part_table_real_part_set(efl_added, obj, part)); + _efl_ui_layout_part_set_real_part(efl_added, efl_data_scope_get(efl_added, TABLE_CLASS), obj, part)); else return NULL; } @@ -63,15 +72,6 @@ _efl_ui_layout_part_box_efl_object_destructor(Eo *obj, Efl_Ui_Layout_Table_Data efl_destructor(efl_super(obj, BOX_CLASS)); } -EOLIAN static void -_efl_ui_layout_part_box_real_part_set(Eo *obj, Efl_Ui_Layout_Box_Data *pd, Eo *layout, const char *part) -{ - pd->obj = layout; - pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_BASE_CLASS, obj); - eina_stringshare_replace(&pd->part, part); - pd->temp = 1; -} - EOLIAN static Eina_Iterator * _efl_ui_layout_part_box_efl_container_content_iterate(Eo *obj, Efl_Ui_Layout_Box_Data *pd) { @@ -214,15 +214,6 @@ _efl_ui_layout_part_box_efl_ui_layout_orientable_orientation_get(const Eo *obj E /* Table proxy implementation */ -EOLIAN static void -_efl_ui_layout_part_table_real_part_set(Eo *obj, Efl_Ui_Layout_Table_Data *pd, Eo *layout, const char *part) -{ - pd->obj = layout; - pd->sd = efl_data_xref(pd->obj, EFL_UI_LAYOUT_BASE_CLASS, obj); - eina_stringshare_replace(&pd->part, part); - pd->temp = 1; -} - EOLIAN static void _efl_ui_layout_part_table_efl_object_destructor(Eo *obj, Efl_Ui_Layout_Table_Data *pd) { diff --git a/src/lib/elementary/efl_ui_layout_part_box.eo b/src/lib/elementary/efl_ui_layout_part_box.eo index 683418c7d4..6ebbc2c2b6 100644 --- a/src/lib/elementary/efl_ui_layout_part_box.eo +++ b/src/lib/elementary/efl_ui_layout_part_box.eo @@ -8,15 +8,6 @@ class @beta Efl.Ui.Layout_Part_Box extends Efl.Object implements Efl.Pack_Linear ]] data: Efl_Ui_Layout_Box_Data; methods { - /* FIXME: Remove this. */ - @property real_part @protected { - [[Real part property]] - set {} - values { -layout: Efl.Object; [[Real part object]] -part: string; [[Real part name]] - } - } } implements { Efl.Object.destructor; diff --git a/src/lib/elementary/efl_ui_layout_part_table.eo b/src/lib/elementary/efl_ui_layout_part_table.eo index 9c9482cf1e..6730927065 100644 --- a/src/lib/elementary/efl_ui_layout_part_table.eo +++ b/src/lib/elementary/efl_ui_layout_part_table.eo @@ -7,15 +7,6 @@ class @beta Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Tabl ]] data: Efl_Ui_Layout_Table_Data; methods { - /* FIXME: Remove this. */ - @property real_part @protected { - [[Real part property]] - set {} - values { -layout: Efl.Object; [[Real part object]] -part: string; [[Real part name]] - } - } } implements { Efl.Object.destructor; --
[EGIT] [core/efl] master 16/23: eina: add code to help debug leaking Eina_Value.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2fdad9294876f475225618e9f50d558a62c6bcf3 commit 2fdad9294876f475225618e9f50d558a62c6bcf3 Author: Cedric Bail Date: Sat Sep 14 19:12:44 2019 -0700 eina: add code to help debug leaking Eina_Value. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9942 --- src/lib/eina/eina_value.c | 41 + 1 file changed, 41 insertions(+) diff --git a/src/lib/eina/eina_value.c b/src/lib/eina/eina_value.c index 3df0baa329..63f45b9bbe 100644 --- a/src/lib/eina/eina_value.c +++ b/src/lib/eina/eina_value.c @@ -5279,6 +5279,9 @@ typedef struct _Eina_Value_Inner_Mp Eina_Value_Inner_Mp; struct _Eina_Value_Inner_Mp { Eina_Mempool *mempool; +#ifdef DEBUG + int size; +#endif int references; }; @@ -5310,6 +5313,9 @@ _eina_value_inner_mp_get(int size) return NULL; imp->references = 0; +#ifdef DEBUG + imp->size = size; +#endif imp->mempool = eina_mempool_add(_eina_value_mp_choice, "Eina_Value_Inner_Mp", NULL, size, 16); @@ -5517,7 +5523,42 @@ eina_value_init(void) Eina_Bool eina_value_shutdown(void) { +#ifdef DEBUG + Eina_Iterator *it; + Eina_Value_Inner_Mp *imp; +#endif + eina_lock_take(&_eina_value_inner_mps_lock); + +#ifdef DEBUG + it = eina_hash_iterator_data_new(_eina_value_inner_mps); + EINA_ITERATOR_FOREACH(it, imp) + { +Eina_Iterator *mit; +Eina_Value *value; + +fprintf(stderr, "There is still %i Eina_Value in pool of size %i\n", +imp->references, imp->size); +mit = eina_mempool_iterator_new(imp->mempool); +EINA_ITERATOR_FOREACH(mit, value) + { + if (value->type) + { + char *str = eina_value_to_string(value); + fprintf(stderr, "Value %p of type '%s' containing '%s' still allocated.\n", + value, value->type->name, str); + free(str); + } + else + { + fprintf(stderr, "Unknown type found for value %p\n", value); + } + } +eina_iterator_free(mit); + } + eina_iterator_free(it); +#endif + if (eina_hash_population(_eina_value_inner_mps) != 0) ERR("Cannot free eina_value internal memory pools -- still in use!"); else --
[EGIT] [core/efl] master 02/23: tests/ecore: add stress test for main loop signal handling
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=af5abbe4bcdd3ae0a687ef77b38d942e3249377d commit af5abbe4bcdd3ae0a687ef77b38d942e3249377d Author: Mike Blumenkrantz Date: Thu Sep 19 14:15:45 2019 -0400 tests/ecore: add stress test for main loop signal handling this explodes after about 500 signals, so make it 1000 for a good test Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10026 --- src/tests/ecore/ecore_test_job.c | 23 +++ 1 file changed, 23 insertions(+) diff --git a/src/tests/ecore/ecore_test_job.c b/src/tests/ecore/ecore_test_job.c index 5a2d6f3f75..7f3e6ad7b4 100644 --- a/src/tests/ecore/ecore_test_job.c +++ b/src/tests/ecore/ecore_test_job.c @@ -28,7 +28,30 @@ EFL_START_TEST(ecore_test_job) } EFL_END_TEST +#ifndef _WIN32 +static void +_ecore_signal_job(void *data EINA_UNUSED) +{ + EXPECT_ERROR_START; + for (unsigned int i = 0; i < 1000; i++) + raise(SIGUSR2); + ecore_main_loop_quit(); + EXPECT_ERROR_END; +} + +EFL_START_TEST(ecore_test_job_signal) +{ + ecore_job_add(_ecore_signal_job, NULL); + + ecore_main_loop_begin(); +} +EFL_END_TEST +#endif + void ecore_test_ecore_job(TCase *tc) { tcase_add_test(tc, ecore_test_job); +#ifndef _WIN32 + tcase_add_test(tc, ecore_test_job_signal); +#endif } --
[EGIT] [core/efl] master 13/23: efl_ui_layout_part_*: declare stable
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2f48607e7c01622f0f0699efa749412b1897de5a commit 2f48607e7c01622f0f0699efa749412b1897de5a Author: Marcel Hollerbach Date: Tue Sep 17 16:41:49 2019 +0200 efl_ui_layout_part_*: declare stable Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D9995 --- src/lib/elementary/efl_ui_layout_part.eo | 2 +- src/lib/elementary/efl_ui_layout_part_bg.eo | 2 +- src/lib/elementary/efl_ui_layout_part_box.eo | 2 +- src/lib/elementary/efl_ui_layout_part_content.eo | 2 +- src/lib/elementary/efl_ui_layout_part_table.eo | 2 +- src/lib/elementary/efl_ui_layout_part_text.eo| 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/elementary/efl_ui_layout_part.eo b/src/lib/elementary/efl_ui_layout_part.eo index 0ce9829c59..f015ca22ed 100644 --- a/src/lib/elementary/efl_ui_layout_part.eo +++ b/src/lib/elementary/efl_ui_layout_part.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part extends Efl.Ui.Widget_Part +class Efl.Ui.Layout_Part extends Efl.Ui.Widget_Part { [[Elementary layout internal part class]] data: null; diff --git a/src/lib/elementary/efl_ui_layout_part_bg.eo b/src/lib/elementary/efl_ui_layout_part_bg.eo index f1404d2c10..dff060f9bd 100644 --- a/src/lib/elementary/efl_ui_layout_part_bg.eo +++ b/src/lib/elementary/efl_ui_layout_part_bg.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part_Bg extends Efl.Ui.Widget_Part_Bg +class Efl.Ui.Layout_Part_Bg extends Efl.Ui.Widget_Part_Bg { [[Elementary layout internal part background class]] data: null; diff --git a/src/lib/elementary/efl_ui_layout_part_box.eo b/src/lib/elementary/efl_ui_layout_part_box.eo index 6ebbc2c2b6..7f7f815bac 100644 --- a/src/lib/elementary/efl_ui_layout_part_box.eo +++ b/src/lib/elementary/efl_ui_layout_part_box.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part_Box extends Efl.Object implements Efl.Pack_Linear, +class Efl.Ui.Layout_Part_Box extends Efl.Object implements Efl.Pack_Linear, Efl.Ui.Layout_Orientable_Readonly { [[Represents a Box created as part of a layout. diff --git a/src/lib/elementary/efl_ui_layout_part_content.eo b/src/lib/elementary/efl_ui_layout_part_content.eo index 923033dd4e..c09d075d40 100644 --- a/src/lib/elementary/efl_ui_layout_part_content.eo +++ b/src/lib/elementary/efl_ui_layout_part_content.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part_Content extends Efl.Ui.Layout_Part implements Efl.Content +class Efl.Ui.Layout_Part_Content extends Efl.Ui.Layout_Part implements Efl.Content { [[Elementary layout internal part class]] data: null; diff --git a/src/lib/elementary/efl_ui_layout_part_table.eo b/src/lib/elementary/efl_ui_layout_part_table.eo index 6730927065..6fe94f21b8 100644 --- a/src/lib/elementary/efl_ui_layout_part_table.eo +++ b/src/lib/elementary/efl_ui_layout_part_table.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Table +class Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Table { [[Represents a Table created as part of a layout. diff --git a/src/lib/elementary/efl_ui_layout_part_text.eo b/src/lib/elementary/efl_ui_layout_part_text.eo index a7442a7f45..0a092a251f 100644 --- a/src/lib/elementary/efl_ui_layout_part_text.eo +++ b/src/lib/elementary/efl_ui_layout_part_text.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Layout_Part_Text extends Efl.Ui.Layout_Part implements Efl.Text, Efl.Text_Markup, +class Efl.Ui.Layout_Part_Text extends Efl.Ui.Layout_Part implements Efl.Text, Efl.Text_Markup, Efl.Ui.L10n { [[Elementary layout internal part class]] --
[EGIT] [core/efl] master 03/23: ecore/signal: increase maximum signal throughput
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=da5fcb8ea07f69f1348f0c2c86cc408cf5184e30 commit da5fcb8ea07f69f1348f0c2c86cc408cf5184e30 Author: Mike Blumenkrantz Date: Thu Sep 19 14:52:23 2019 -0400 ecore/signal: increase maximum signal throughput this adds 4 more signal handling fds and loops over them for reading/writing signal info in order to handle more signals when the buffer of one (or more) pipes is full also update the unit test to verify that we are receiving all the events without dropping any and bump the number of signals to 2000 since we should now be able to handle that many Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10027 --- src/lib/ecore/ecore_signal.c | 274 --- src/tests/ecore/ecore_test_job.c | 18 ++- 2 files changed, 158 insertions(+), 134 deletions(-) diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c index c3e5b0fda9..eebb692276 100644 --- a/src/lib/ecore/ecore_signal.c +++ b/src/lib/ecore/ecore_signal.c @@ -34,8 +34,10 @@ static void _ecore_signal_generic_free(void *data, void *event); typedef void (*Signal_Handler)(int sig, siginfo_t *si, void *foo); -static int sig_pipe[2] = { -1, -1 }; // [0] == read, [1] == write -static Eo *sig_pipe_handler = NULL; +#define NUM_PIPES 5 + +static int sig_pipe[NUM_PIPES][2] = {{ -1 }}; // [0] == read, [1] == write +static Eo *sig_pipe_handler[NUM_PIPES] = {NULL}; static Eina_Spinlock sig_pid_lock; static Eina_List *sig_pid_info_list = NULL; @@ -48,114 +50,111 @@ typedef struct _Signal_Data siginfo_t info; } Signal_Data; -static Eina_Bool +static void _ecore_signal_pipe_read(Eo *obj) { Signal_Data sdata; int ret; - if (pipe_dead) return EINA_TRUE; - ret = read(sig_pipe[0], &sdata, sizeof(sdata)); - if (ret != sizeof(sdata)) return EINA_FALSE; - switch (sdata.sig) + if (pipe_dead) return; + for (unsigned int i = 0; i < NUM_PIPES; i++) { - case SIGPIPE: -break; - case SIGALRM: -break; - case SIGCHLD: -_ecore_signal_waitpid(EINA_FALSE, sdata.info); -break; - case SIGUSR1: - case SIGUSR2: +while (1) { - Ecore_Event_Signal_User *e = _ecore_event_signal_user_new(); - if (e) - { - if (sdata.sig == SIGUSR1) e->number = 1; - else e->number = 2; - e->data = sdata.info; - ecore_event_add(ECORE_EVENT_SIGNAL_USER, e, - _ecore_signal_generic_free, NULL); - } - Eo *loop = efl_provider_find(obj, EFL_LOOP_CLASS); - if (loop) - { - if (sdata.sig == SIGUSR1) -efl_event_callback_call(loop, EFL_APP_EVENT_SIGNAL_USR1, NULL); - else -efl_event_callback_call(loop, EFL_APP_EVENT_SIGNAL_USR2, NULL); - } - } -break; - case SIGHUP: - { - Ecore_Event_Signal_Hup *e = _ecore_event_signal_hup_new(); - if (e) - { - e->data = sdata.info; - ecore_event_add(ECORE_EVENT_SIGNAL_HUP, e, - _ecore_signal_generic_free, NULL); - } - Eo *loop = efl_provider_find(obj, EFL_LOOP_CLASS); - if (loop) - efl_event_callback_call(loop, EFL_APP_EVENT_SIGNAL_HUP, NULL); - } -break; - case SIGQUIT: - case SIGINT: - case SIGTERM: - { - Ecore_Event_Signal_Exit *e = _ecore_event_signal_exit_new(); - if (e) - { - if (sdata.sig == SIGQUIT) e->quit = 1; - else if (sdata.sig == SIGINT) e->interrupt = 1; - else e->terminate = 1; - e->data = sdata.info; - ecore_event_add(ECORE_EVENT_SIGNAL_EXIT, e, - _ecore_signal_generic_free, NULL); - } - Eo *loop = efl_provider_find(obj, EFL_LOOP_CLASS); - if (loop) - efl_event_callback_call(loop, EFL_LOOP_EVENT_QUIT, NULL); - } -break; -#ifdef SIGPWR - case SIGPWR: - { - Ecore_Event_Signal_Power *e = _ecore_event_signal_power_new(); - if (e) + ret = read(sig_pipe[i][0], &sdata, sizeof(sdata)); + + /* read as many signals as we can, trying again if we get interrupted */ + if ((ret != sizeof(sdata)) && (errno != EINTR)) break; + switch (sdata.sig) { - e->data = sdata.info; - ecore_event_add(ECORE_EVENT_SIGNAL_POWER, e, - _ecore_signal_generic_free, NULL); +
[EGIT] [core/efl] master 14/23: efl_ui_layout_part_table: implement missing API
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bf12fe241ec04c81129faf9ccfa7438fa9a23062 commit bf12fe241ec04c81129faf9ccfa7438fa9a23062 Author: Marcel Hollerbach Date: Wed Sep 18 14:59:44 2019 +0200 efl_ui_layout_part_table: implement missing API setting of these properties does not work, as they are not available in legacy, but edje is still creating legacy objects. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10007 --- src/lib/elementary/efl_ui_layout_pack.c| 18 ++ src/lib/elementary/efl_ui_layout_part_table.eo | 6 +++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/efl_ui_layout_pack.c b/src/lib/elementary/efl_ui_layout_pack.c index 02ad407981..0e2743db01 100644 --- a/src/lib/elementary/efl_ui_layout_pack.c +++ b/src/lib/elementary/efl_ui_layout_pack.c @@ -447,5 +447,23 @@ _efl_ui_layout_part_table_efl_pack_table_table_rows_get(const Eo *obj EINA_UNUSE return rows; } +EOLIAN static void +_efl_ui_layout_part_table_efl_pack_table_table_rows_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd EINA_UNUSED, int rows EINA_UNUSED) +{ + ERR("This API is currently not supported on table parts"); +} + +EOLIAN static void +_efl_ui_layout_part_table_efl_pack_table_table_columns_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd EINA_UNUSED, int cols EINA_UNUSED) +{ + ERR("This API is currently not supported on table parts"); +} + +EOLIAN static void +_efl_ui_layout_part_table_efl_pack_table_table_size_set(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd EINA_UNUSED, int cols EINA_UNUSED, int rows EINA_UNUSED) +{ + ERR("This API is currently not supported on table parts"); +} + #include "efl_ui_layout_part_box.eo.c" #include "efl_ui_layout_part_table.eo.c" diff --git a/src/lib/elementary/efl_ui_layout_part_table.eo b/src/lib/elementary/efl_ui_layout_part_table.eo index 6fe94f21b8..cecd1fc2f3 100644 --- a/src/lib/elementary/efl_ui_layout_part_table.eo +++ b/src/lib/elementary/efl_ui_layout_part_table.eo @@ -21,8 +21,8 @@ class Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Table Efl.Pack_Table.table_contents_get; Efl.Pack_Table.table_cell_column { get; set; } Efl.Pack_Table.table_cell_row { get; set; } - Efl.Pack_Table.table_size { get; } - Efl.Pack_Table.table_columns { get; } - Efl.Pack_Table.table_rows { get; } + Efl.Pack_Table.table_size { get; set; } + Efl.Pack_Table.table_columns { get; set; } + Efl.Pack_Table.table_rows { get; set; } } } --
[EGIT] [core/efl] master 20/23: efl: improve Efl.Boolean_Model test to enforce Eina_Value type too.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8128e3fea2af21b41ff420fc0fc2cd2045b72684 commit 8128e3fea2af21b41ff420fc0fc2cd2045b72684 Author: Cedric Bail Date: Wed Sep 18 19:30:17 2019 -0700 efl: improve Efl.Boolean_Model test to enforce Eina_Value type too. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D10031 --- src/tests/efl/efl_test_composite_model.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tests/efl/efl_test_composite_model.c b/src/tests/efl/efl_test_composite_model.c index d20bc1c017..5a7d3f21ab 100644 --- a/src/tests/efl/efl_test_composite_model.c +++ b/src/tests/efl/efl_test_composite_model.c @@ -43,7 +43,7 @@ _children_slice_get_then(void *data EINA_UNUSED, Eina_Value *p_int = NULL; Eina_Value *p_true = NULL; Eina_Value *p_false = NULL; -int v_int = 0; +int v_int = -1; Eina_Bool v_true = EINA_FALSE; Eina_Bool v_false = EINA_TRUE; @@ -51,9 +51,9 @@ _children_slice_get_then(void *data EINA_UNUSED, p_true = efl_model_property_get(child, "test_p_true"); p_false = efl_model_property_get(child, "test_p_false"); -eina_value_get(p_int, &v_int); -eina_value_get(p_true, &v_true); -eina_value_get(p_false, &v_false); +eina_value_int_get(p_int, &v_int); +eina_value_bool_get(p_true, &v_true); +eina_value_bool_get(p_false, &v_false); fail_if(v_int != base_ints[i]); fail_if(v_true != EINA_TRUE); --
[EGIT] [core/efl] master 21/23: efl_ui_position_manager: a way to announce new entities
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fc935e99d936a3b1fd4a81232e493094bf5e5989 commit fc935e99d936a3b1fd4a81232e493094bf5e5989 Author: Marcel Hollerbach Date: Sun Sep 15 11:54:51 2019 +0200 efl_ui_position_manager: a way to announce new entities there are situations where the entity is not ready yet when the initial placing does happen. With this API you can tell the position manager that the placing of the items can be reapplied at the entities are availble now. Differential Revision: https://phab.enlightenment.org/D9947 --- .../elementary/efl_ui_position_manager_entity.eo | 10 + src/lib/elementary/efl_ui_position_manager_grid.c | 43 ++ src/lib/elementary/efl_ui_position_manager_grid.eo | 1 + src/lib/elementary/efl_ui_position_manager_list.c | 30 +++ src/lib/elementary/efl_ui_position_manager_list.eo | 1 + 5 files changed, 85 insertions(+) diff --git a/src/lib/elementary/efl_ui_position_manager_entity.eo b/src/lib/elementary/efl_ui_position_manager_entity.eo index d61c7c62d1..865d8f3180 100644 --- a/src/lib/elementary/efl_ui_position_manager_entity.eo +++ b/src/lib/elementary/efl_ui_position_manager_entity.eo @@ -91,6 +91,16 @@ interface @beta Efl.Ui.Position_Manager.Entity extends Efl.Ui.Layout_Orientable end_id : int; [[The last item that has a new size]] } } + entities_ready { +[[The items from $start_id to $end_id now have their entities ready + + The position manager will reapply the geometry to the elements if they are visible. +]] +params { + start_id : uint; [[The first item that is available]] + end_id : uint; [[The last item that is available]] +} + } relative_item { [[Translates the $current_id, into a new id which is oriented in the $direction of $current_id. In case that there is no item, -1 is returned]] diff --git a/src/lib/elementary/efl_ui_position_manager_grid.c b/src/lib/elementary/efl_ui_position_manager_grid.c index fee0855ec6..206bc73221 100644 --- a/src/lib/elementary/efl_ui_position_manager_grid.c +++ b/src/lib/elementary/efl_ui_position_manager_grid.c @@ -19,6 +19,7 @@ typedef struct { Eina_Vector2 scroll_position; Efl_Ui_Layout_Orientation dir; Vis_Segment prev_run; + unsigned int prev_consumed_space; Eina_Size2D max_min_size; Eina_Size2D last_viewport_size; Eina_Size2D prev_min_size; @@ -491,6 +492,7 @@ _reposition_content(Eo *obj EINA_UNUSED, Efl_Ui_Position_Manager_Grid_Data *pd) { ev.start_id = pd->prev_run.start_id = cur.start_id; ev.end_id = pd->prev_run.end_id = cur.end_id; +pd->prev_consumed_space = consumed_space; efl_event_callback_call(obj, EFL_UI_POSITION_MANAGER_ENTITY_EVENT_VISIBLE_RANGE_CHANGED, &ev); } } @@ -809,5 +811,46 @@ _efl_ui_position_manager_grid_efl_object_finalize(Eo *obj, Efl_Ui_Position_Manag return obj; } +EOLIAN static void +_efl_ui_position_manager_grid_efl_ui_position_manager_entity_entities_ready(Eo *obj, Efl_Ui_Position_Manager_Grid_Data *pd, unsigned int start_id, unsigned int end_id) +{ + Eina_Size2D space_size; + int relevant_space_size; + Item_Position_Context ctx; + + if (end_id < pd->prev_run.start_id || start_id > pd->prev_run.end_id) + return; + + space_size.w = (MAX(pd->last_viewport_size.w - pd->viewport.w, 0))*pd->scroll_position.x; + space_size.h = (MAX(pd->last_viewport_size.h - pd->viewport.h, 0))*pd->scroll_position.y; + + if (pd->dir == EFL_UI_LAYOUT_ORIENTATION_VERTICAL) + { +relevant_space_size = space_size.h; + } + else + { +relevant_space_size = space_size.w; + } + + ctx.new = pd->prev_run; + ctx.consumed_space = pd->prev_consumed_space; + ctx.relevant_space_size = relevant_space_size; + ctx.floating_group = NULL; + ctx.placed_item = NULL; + + if (pd->dir == EFL_UI_LAYOUT_ORIENTATION_VERTICAL) + { +_position_items_vertical(obj, pd, &ctx); +_position_group_items(obj, pd, &ctx); + } + else + { +_position_items_horizontal(obj, pd, &ctx); +_position_group_items(obj, pd, &ctx); + } +} + + #include "efl_ui_position_manager_grid.eo.c" diff --git a/src/lib/elementary/efl_ui_position_manager_grid.eo b/src/lib/elementary/efl_ui_position_manager_grid.eo index 91deee348e..35ebeb5fc1 100644 --- a/src/lib/elementary/efl_ui_position_manager_grid.eo +++ b/src/lib/elementary/efl_ui_position_manager_grid.eo @@ -15,6 +15,7 @@ class @beta Efl.Ui.Position_Manager.Grid extends Efl.Object Efl.Ui.Position_Manager.Entity.position_single_item; Efl.Ui.Position_Manager.Entity.item_size_changed; Efl.Ui.Position_Manager.Entity.relative_item; + Efl.Ui.Position_Manager.Entity.entities_ready; Efl.Ui.Layout_Orientable.orientation {set; get;} Efl.Ui.Po
[EGIT] [core/efl] master 12/23: efl_ui_widget_*: declare parts stable
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fc22a94d26abbce8f166893ec1436404190670f0 commit fc22a94d26abbce8f166893ec1436404190670f0 Author: Marcel Hollerbach Date: Tue Sep 17 15:59:07 2019 +0200 efl_ui_widget_*: declare parts stable Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D9994 --- src/lib/elementary/efl_ui_widget.eo | 4 ++-- src/lib/elementary/efl_ui_widget_part.eo| 2 +- src/lib/elementary/efl_ui_widget_part_bg.eo | 2 +- src/lib/elementary/efl_ui_widget_part_shadow.eo | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/elementary/efl_ui_widget.eo b/src/lib/elementary/efl_ui_widget.eo index fe7a032324..2848ef0db5 100644 --- a/src/lib/elementary/efl_ui_widget.eo +++ b/src/lib/elementary/efl_ui_widget.eo @@ -397,8 +397,8 @@ abstract Efl.Ui.Widget extends Efl.Canvas.Group implements Efl.Access.Object, } } parts { - shadow @beta: Efl.Ui.Widget_Part_Shadow; - background @beta: Efl.Ui.Widget_Part_Bg; + shadow : Efl.Ui.Widget_Part_Shadow; + background : Efl.Ui.Widget_Part_Bg; } implements { class.constructor; diff --git a/src/lib/elementary/efl_ui_widget_part.eo b/src/lib/elementary/efl_ui_widget_part.eo index e629fdcfa2..badf49c17b 100644 --- a/src/lib/elementary/efl_ui_widget_part.eo +++ b/src/lib/elementary/efl_ui_widget_part.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Widget_Part extends Efl.Object implements Efl.Ui.Property_Bind +class Efl.Ui.Widget_Part extends Efl.Object implements Efl.Ui.Property_Bind { [[This is the base class for all "Part" handles in Efl.Ui widgets. diff --git a/src/lib/elementary/efl_ui_widget_part_bg.eo b/src/lib/elementary/efl_ui_widget_part_bg.eo index d19b8574e2..9aec9e44a1 100644 --- a/src/lib/elementary/efl_ui_widget_part_bg.eo +++ b/src/lib/elementary/efl_ui_widget_part_bg.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Widget_Part_Bg extends Efl.Ui.Widget_Part implements Efl.File, Efl.Gfx.Color, Efl.Gfx.Image composite Efl.Gfx.Image +class Efl.Ui.Widget_Part_Bg extends Efl.Ui.Widget_Part implements Efl.File, Efl.Gfx.Color, Efl.Gfx.Image composites Efl.Gfx.Image { [[Elementary widget internal part background class diff --git a/src/lib/elementary/efl_ui_widget_part_shadow.eo b/src/lib/elementary/efl_ui_widget_part_shadow.eo index 77002c0b41..0dc4c7d127 100644 --- a/src/lib/elementary/efl_ui_widget_part_shadow.eo +++ b/src/lib/elementary/efl_ui_widget_part_shadow.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Widget_Part_Shadow extends Efl.Ui.Widget_Part implements Efl.Gfx.Color, +class Efl.Ui.Widget_Part_Shadow extends Efl.Ui.Widget_Part implements Efl.Gfx.Color, Efl.Gfx.Blur, Efl.Gfx.Filter { [[A drop-shadow or glow effect around any widget. --
[EGIT] [core/efl] master 10/23: efl_ui_layout_part_table: implement Efl.Pack.pack API
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=aecb3a4bb27ec9a83e5f69aea323743bc5d57360 commit aecb3a4bb27ec9a83e5f69aea323743bc5d57360 Author: Marcel Hollerbach Date: Tue Sep 17 16:25:37 2019 +0200 efl_ui_layout_part_table: implement Efl.Pack.pack API this api was missing, the pack method here is behaving in the same manner as Efl.Ui.Table. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D9992 --- src/lib/elementary/efl_ui_layout_pack.c| 42 ++ src/lib/elementary/efl_ui_layout_part_table.eo | 1 + 2 files changed, 43 insertions(+) diff --git a/src/lib/elementary/efl_ui_layout_pack.c b/src/lib/elementary/efl_ui_layout_pack.c index 2c79d66266..646ef3e483 100644 --- a/src/lib/elementary/efl_ui_layout_pack.c +++ b/src/lib/elementary/efl_ui_layout_pack.c @@ -274,6 +274,48 @@ _efl_ui_layout_part_table_efl_pack_unpack(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Tab return _efl_ui_layout_table_unpack(pd->obj, pd->sd, pd->part, subobj) == subobj; } + +EOLIAN static Eina_Bool +_efl_ui_layout_part_table_efl_pack_pack(Eo *obj, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity *subobj) +{ + int last_col, last_row; + int req_cols, req_rows; + Eina_Iterator *iter; + Eo *pack, *element; + + pack = (Eo *) edje_object_part_object_get(pd->obj, pd->part); + + + //first lookup what the most lower / right element is + iter = evas_object_table_iterator_new(pack); + EINA_ITERATOR_FOREACH(iter, element) + { +unsigned short item_col, item_row; + +evas_object_table_pack_get(pack, element, &item_col, &item_row, NULL, NULL); +if (item_row > last_row || +(item_row == last_row && item_col > last_col)) + { + last_col = item_col; + last_row = item_row; + } + } + eina_iterator_free(iter); + + //now add the new element right to it, or do a linebreak and place + //that element in the next column on the first element + evas_object_table_col_row_size_get(pack, &req_cols, &req_rows); + last_col ++; + if (last_col > req_cols) + { +last_row ++; +last_col = 0; + } + + return _efl_ui_layout_table_pack(obj, pd->sd, pd->part, subobj, last_col, last_row, 1, 1); +} + + EOLIAN static Eina_Bool _efl_ui_layout_part_table_efl_pack_table_pack_table(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity *subobj, int col, int row, int colspan, int rowspan) { diff --git a/src/lib/elementary/efl_ui_layout_part_table.eo b/src/lib/elementary/efl_ui_layout_part_table.eo index eca9fa43f9..9c9482cf1e 100644 --- a/src/lib/elementary/efl_ui_layout_part_table.eo +++ b/src/lib/elementary/efl_ui_layout_part_table.eo @@ -21,6 +21,7 @@ class @beta Efl.Ui.Layout_Part_Table extends Efl.Object implements Efl.Pack_Tabl Efl.Object.destructor; Efl.Container.content_iterate; Efl.Container.content_count; + Efl.Pack.pack; Efl.Pack.pack_clear; Efl.Pack.unpack_all; Efl.Pack.unpack; --
[EGIT] [core/efl] master 05/23: eo: custom created legacy events should be unfreezable
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=21fe2bdc411cba7443d26c17fbb4c819d3edc916 commit 21fe2bdc411cba7443d26c17fbb4c819d3edc916 Author: Marcel Hollerbach Date: Thu Sep 19 09:27:59 2019 +0200 eo: custom created legacy events should be unfreezable a while back we have moved event submission from custom lists to eo events. We also merged together the freeze and thaw functions, however, this brought up one bug. smart_callbacks and the likes (those that used custom lists before) are not effected by the legacy freeze and thaw functions. This means, we should declare these legacy wrapper objects unfreezable in order to obtain this behaviour. Reviewed-by: Cedric BAIL Reviewed-by: SangHyeon Jade Lee Differential Revision: https://phab.enlightenment.org/D10016 --- src/lib/eo/eo_base_class.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/eo/eo_base_class.c b/src/lib/eo/eo_base_class.c index d9edf15a90..782a57f52e 100644 --- a/src/lib/eo/eo_base_class.c +++ b/src/lib/eo/eo_base_class.c @@ -1132,6 +1132,7 @@ efl_object_legacy_only_event_description_get(const char *_event_name) event_desc = calloc(1, sizeof(Efl_Event_Description)); event_desc->name = event_name; event_desc->legacy_is = EINA_TRUE; +event_desc->unfreezable = EINA_TRUE; eina_hash_add(_legacy_events_hash, event_name, event_desc); } else --
[EGIT] [core/efl] master 07/23: elm_test_widget_focus: cleanup callbacks correctly
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6960751c4580af9e902cd7719c1acafab4ce7bc5 commit 6960751c4580af9e902cd7719c1acafab4ce7bc5 Author: Marcel Hollerbach Date: Thu Sep 19 14:43:31 2019 +0200 elm_test_widget_focus: cleanup callbacks correctly we need to delete the callback here, otherwise the objects are deleted later on, which: - changes focus, which leads to - callbacks executed with stacked addresses from a dead function this fixes a testsuite failure on the release build. Reviewed-by: Mike Blumenkrantz Reviewed-by: Stefan Schmidt Differential Revision: https://phab.enlightenment.org/D10020 --- src/tests/elementary/elm_test_widget_focus.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tests/elementary/elm_test_widget_focus.c b/src/tests/elementary/elm_test_widget_focus.c index d41889b86e..fb2a5a2678 100644 --- a/src/tests/elementary/elm_test_widget_focus.c +++ b/src/tests/elementary/elm_test_widget_focus.c @@ -201,6 +201,8 @@ EFL_START_TEST(elm_test_widget_focus_simple_widget) ck_assert_int_eq(flag_unfocused, EINA_TRUE); ck_assert_int_eq(elm_object_focus_get(resettor), EINA_TRUE); ck_assert_int_eq(elm_object_focus_get(o), EINA_FALSE); + evas_object_smart_callback_del_full(o, "focused", _eventing_test, &flag_focused); + evas_object_smart_callback_del_full(o, "unfocused", _eventing_test, &flag_unfocused); } eina_hash_free(map); --
[EGIT] [core/efl] master 23/23: elementary: Efl.Ui.Widget_Factory bind widget property before finalizing the widget.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3e9f619b1d3fa3c66641292c11992e5730307b13 commit 3e9f619b1d3fa3c66641292c11992e5730307b13 Author: Cedric BAIL Date: Fri Aug 23 14:29:55 2019 -0700 elementary: Efl.Ui.Widget_Factory bind widget property before finalizing the widget. In the same vain as previous patch this will initialize more of the widget during its creation and reduce unecessary recalc. Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D9949 --- src/lib/elementary/efl_ui_widget_factory.c | 46 ++ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/lib/elementary/efl_ui_widget_factory.c b/src/lib/elementary/efl_ui_widget_factory.c index c65bda5847..4b1523dd01 100644 --- a/src/lib/elementary/efl_ui_widget_factory.c +++ b/src/lib/elementary/efl_ui_widget_factory.c @@ -69,16 +69,30 @@ _efl_ui_widget_factory_item_class_get(const Eo *obj EINA_UNUSED, } static void -_efl_ui_widget_factory_efl_ui_factory_building(const Eo *obj EINA_UNUSED, Efl_Ui_Widget_Factory_Data *pd EINA_UNUSED, Efl_Gfx_Entity *ui_view) +_efl_ui_widget_factory_efl_ui_factory_building(const Eo *factory EINA_UNUSED, Efl_Ui_Widget_Factory_Data *pd, Efl_Gfx_Entity *ui_view) { const Efl_Model *model; Eina_Value *property, *width, *height; + Efl_Ui_Bind_Part_Data *bpd; + Eina_Iterator *it; char *style; - if (!pd->style) return ; - model = efl_ui_view_model_get(ui_view); + // Bind all property before the object is finalize + it = eina_hash_iterator_data_new(pd->parts); + EINA_ITERATOR_FOREACH(it, bpd) + { +Efl_Ui_Property_Bind_Data *bppd; +Eina_List *l; + +EINA_LIST_FOREACH(bpd->properties, l, bppd) + efl_ui_property_bind(efl_part(ui_view, bpd->part), + bppd->part_property, + bppd->model_property); + } + eina_iterator_free(it); + // Fetch min size from model if available to avoid recalculcating it width = efl_model_property_get(model, "self.width"); height = efl_model_property_get(model, "self.height"); @@ -96,6 +110,8 @@ _efl_ui_widget_factory_efl_ui_factory_building(const Eo *obj EINA_UNUSED, Efl_Ui eina_value_free(height); // As we have already waited for the property to be ready, we should get the right style now + if (!pd->style) return ; + property = efl_model_property_get(model, pd->style); if (!property) return ; @@ -109,31 +125,13 @@ _efl_ui_widget_factory_efl_ui_factory_building(const Eo *obj EINA_UNUSED, Efl_Ui static Efl_Ui_Widget * _efl_ui_widget_create(const Efl_Ui_Factory *factory, const Efl_Class *klass, Eo *parent, - Efl_Model *model, - const Eina_Hash *parts) + Efl_Model *model) { - Efl_Ui_Bind_Part_Data *bpd; - Eina_Iterator *it; Efl_Ui_Widget *w; w = efl_add(klass, parent, efl_ui_view_model_set(efl_added, model), efl_ui_factory_building(factory, efl_added)); - if (!parts) return w; - - it = eina_hash_iterator_data_new(parts); - EINA_ITERATOR_FOREACH(it, bpd) - { -Efl_Ui_Property_Bind_Data *bppd; -Eina_List *l; - -EINA_LIST_FOREACH(bpd->properties, l, bppd) - efl_ui_property_bind(efl_part(w, bpd->part), - bppd->part_property, - bppd->model_property); - } - eina_iterator_free(it); - return w; } @@ -143,7 +141,7 @@ _efl_ui_widget_factory_create_then(Eo *model, void *data, const Eina_Value v EIN Efl_Ui_Widget_Factory_Request *r = data; Efl_Ui_Widget *w; - w = _efl_ui_widget_create(r->factory, r->pd->klass, r->parent, model, r->pd->parts); + w = _efl_ui_widget_create(r->factory, r->pd->klass, r->parent, model); if (!w) return eina_value_error_init(ENOMEM); return eina_value_object_init(w); } @@ -185,7 +183,7 @@ _efl_ui_widget_factory_efl_ui_factory_create(Eo *obj, Efl_Ui_Widget_Factory_Data EINA_ITERATOR_FOREACH(models, model) { - w = _efl_ui_widget_create(obj, pd->klass, parent, model, pd->parts); + w = _efl_ui_widget_create(obj, pd->klass, parent, model); if (!w) return efl_loop_future_rejected(obj, ENOMEM); eina_value_array_append(&r, w); --
[EGIT] [core/efl] master 09/23: efl_ui_widget_part: implement all the missing API
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ccdec4ba6885bff7f5d991f3ca2122f84d6dd332 commit ccdec4ba6885bff7f5d991f3ca2122f84d6dd332 Author: Marcel Hollerbach Date: Tue Sep 17 15:51:54 2019 +0200 efl_ui_widget_part: implement all the missing API Efl.Color and Efl.File cannot be done due to composition. Efl.Gfx.Image can, so we can solve this via composition, this also resolves all the other cases for Efl.Gfx.Image. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9991 --- src/lib/elementary/efl_ui_widget.c | 15 +-- src/lib/elementary/efl_ui_widget_part_bg.eo | 4 ++-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/lib/elementary/efl_ui_widget.c b/src/lib/elementary/efl_ui_widget.c index 88eae6ef78..5168dbc793 100644 --- a/src/lib/elementary/efl_ui_widget.c +++ b/src/lib/elementary/efl_ui_widget.c @@ -5759,22 +5759,17 @@ _efl_ui_widget_part_bg_efl_gfx_color_color_get(const Eo *obj, void *pd EINA_UNUS efl_gfx_color_get(bg_obj, r, g, b, a); } -EOLIAN static void -_efl_ui_widget_part_bg_efl_gfx_image_scale_method_set(Eo *obj, void *pd EINA_UNUSED, Efl_Gfx_Image_Scale_Method scale_type) +EOLIAN static Efl_Object* +_efl_ui_widget_part_bg_efl_object_finalize(Eo *obj, void *pd EINA_UNUSED) { Evas_Object *bg_obj = efl_ui_widget_part_bg_get(obj); - efl_gfx_image_scale_method_set(bg_obj, scale_type); -} + efl_composite_attach(obj, bg_obj); -EOLIAN static Efl_Gfx_Image_Scale_Method -_efl_ui_widget_part_bg_efl_gfx_image_scale_method_get(const Eo *obj, void *pd EINA_UNUSED) -{ - Evas_Object *bg_obj = efl_ui_widget_part_bg_get(obj); - - return efl_gfx_image_scale_method_get(bg_obj); + return efl_finalize(efl_super(obj, EFL_UI_WIDGET_PART_BG_CLASS)); } + typedef struct _Efl_Ui_Property_Bound Efl_Ui_Property_Bound; struct _Efl_Ui_Property_Bound { diff --git a/src/lib/elementary/efl_ui_widget_part_bg.eo b/src/lib/elementary/efl_ui_widget_part_bg.eo index 8e0612ec87..d19b8574e2 100644 --- a/src/lib/elementary/efl_ui_widget_part_bg.eo +++ b/src/lib/elementary/efl_ui_widget_part_bg.eo @@ -1,4 +1,4 @@ -class @beta Efl.Ui.Widget_Part_Bg extends Efl.Ui.Widget_Part implements Efl.File, Efl.Gfx.Color, Efl.Gfx.Image +class @beta Efl.Ui.Widget_Part_Bg extends Efl.Ui.Widget_Part implements Efl.File, Efl.Gfx.Color, Efl.Gfx.Image composite Efl.Gfx.Image { [[Elementary widget internal part background class @@ -9,12 +9,12 @@ class @beta Efl.Ui.Widget_Part_Bg extends Efl.Ui.Widget_Part implements Efl.File ]] data: null; implements { + Efl.Object.finalize; Efl.File.file { get; set; } Efl.File.key { get; set; } Efl.File.mmap { get; set; } Efl.File.load; Efl.File.unload; Efl.Gfx.Color.color { set; get; } - Efl.Gfx.Image.scale_method { get; set; } } } --
[EGIT] [core/efl] master 08/23: efl_test_multi_selectable: test for the correct event
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=422154c0de048da021f3dd1909802b1529c98708 commit 422154c0de048da021f3dd1909802b1529c98708 Author: Marcel Hollerbach Date: Wed Sep 18 17:42:28 2019 +0200 efl_test_multi_selectable: test for the correct event EFL_UI_EVENT_ITEM_SELECTED / UNSELECTED is the wrong event here. We should check of the selection changed event. ITEM_SELECTED is the legacy event. this was not found based on the fact that we test for this event to NOT be executed. Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10011 --- .../elementary/spec/efl_test_multi_selectable.c| 32 ++ 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/src/tests/elementary/spec/efl_test_multi_selectable.c b/src/tests/elementary/spec/efl_test_multi_selectable.c index 770c10e5bb..a2606a13b8 100644 --- a/src/tests/elementary/spec/efl_test_multi_selectable.c +++ b/src/tests/elementary/spec/efl_test_multi_selectable.c @@ -17,15 +17,6 @@ spec-meta-end */ -static void -_set_pointer_quit(void *data, const Efl_Event *ev) -{ - Efl_Ui_Item **b = data; - - ck_assert_ptr_eq(*b, NULL); - *b = ev->info; -} - static void _iterator_to_array(Eina_Array **arr, Eina_Iterator *iter) { @@ -137,31 +128,26 @@ EFL_END_TEST EFL_START_TEST(test_none_select) { - Efl_Ui_Item *selected = NULL; - Efl_Ui_Item *unselected = NULL; Eina_Array *arr_selected; + int c = 0; efl_ui_select_mode_set(widget, EFL_UI_SELECT_MODE_NONE); - efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected); - efl_event_callback_add(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected); + efl_event_callback_add(widget, EFL_UI_SINGLE_SELECTABLE_EVENT_SELECTION_CHANGED, (void*) event_callback_single_call_int_data, &c); + efl_event_callback_add(widget, EFL_UI_SINGLE_SELECTABLE_EVENT_SELECTION_CHANGED, event_callback_that_quits_the_main_loop_when_called, NULL); efl_ui_selectable_selected_set(efl_pack_content_get(widget, 0), EINA_TRUE); - ck_assert_ptr_eq(selected, NULL); - ck_assert_ptr_eq(unselected, NULL); - selected = NULL; - unselected = NULL; + get_me_to_those_events(widget); + ck_assert_int_eq(c, 0); efl_ui_selectable_selected_set(efl_pack_content_get(widget, 2), EINA_TRUE); - ck_assert_ptr_eq(selected, NULL); - ck_assert_ptr_eq(unselected, NULL); - selected = NULL; - unselected = NULL; + get_me_to_those_events(widget); + ck_assert_int_eq(c, 0); ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 0)), EINA_FALSE); ck_assert_int_eq(efl_ui_selectable_selected_get(efl_pack_content_get(widget, 2)), EINA_FALSE); ck_assert_ptr_eq(efl_ui_single_selectable_last_selected_get(widget), NULL); _iterator_to_array(&arr_selected, efl_ui_selected_items_get(widget)); ck_assert_int_eq(eina_array_count(arr_selected), 0); - efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_SELECTED, _set_pointer_quit, &selected); - efl_event_callback_del(widget, EFL_UI_EVENT_ITEM_UNSELECTED, _set_pointer_quit, &unselected); + efl_event_callback_del(widget, EFL_UI_SINGLE_SELECTABLE_EVENT_SELECTION_CHANGED, (void*) event_callback_single_call_int_data, &c); + efl_event_callback_del(widget, EFL_UI_SINGLE_SELECTABLE_EVENT_SELECTION_CHANGED, event_callback_that_quits_the_main_loop_when_called, NULL); } EFL_END_TEST --
[EGIT] [core/efl] master 06/23: efl_ui_collection: fix null pointer dereferences
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e06e03f2200c1ed33a46369c01f3c6ca311f37e8 commit e06e03f2200c1ed33a46369c01f3c6ca311f37e8 Author: Yeongjong Lee Date: Tue Sep 17 09:15:05 2019 + efl_ui_collection: fix null pointer dereferences This will fix Coverity issue. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9986 --- src/lib/elementary/efl_ui_collection.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/elementary/efl_ui_collection.c b/src/lib/elementary/efl_ui_collection.c index 1763b65195..718f5b120e 100644 --- a/src/lib/elementary/efl_ui_collection.c +++ b/src/lib/elementary/efl_ui_collection.c @@ -960,6 +960,7 @@ _efl_ui_collection_efl_ui_widget_focus_manager_focus_manager_create(Eo *obj, Efl Eo *man = efl_add(EFL_UI_COLLECTION_FOCUS_MANAGER_CLASS, obj, efl_ui_focus_manager_root_set(efl_added, root)); Efl_Ui_Collection_Focus_Manager_Data *fm_pd = efl_data_scope_safe_get(man, EFL_UI_COLLECTION_FOCUS_MANAGER_CLASS); + EINA_SAFETY_ON_NULL_RETURN_VAL(fm_pd, NULL); fm_pd->collection = obj; return man; } --
[EGIT] [core/efl] master 19/23: ecore: remove unused piece of code.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=77ab3523cdafe3e128d1fa911e93ede14fac96b6 commit 77ab3523cdafe3e128d1fa911e93ede14fac96b6 Author: Cedric Bail Date: Wed Sep 18 10:33:23 2019 -0700 ecore: remove unused piece of code. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D10030 --- src/lib/ecore/efl_model_accessor_view.c | 133 src/lib/ecore/efl_model_accessor_view_private.h | 5 - src/lib/ecore/meson.build | 2 - 3 files changed, 140 deletions(-) diff --git a/src/lib/ecore/efl_model_accessor_view.c b/src/lib/ecore/efl_model_accessor_view.c deleted file mode 100644 index a73e9459a5..00 --- a/src/lib/ecore/efl_model_accessor_view.c +++ /dev/null @@ -1,133 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "Eina.h" -#include "Eo.h" - -#include "efl_model_accessor_view_private.h" - -typedef struct _Efl_Model_Accessor -{ - Eina_Accessor vtable; - Eina_Accessor *real_accessor; - void *pdata; - Efl_Model_Accessor_View_Constructor_Cb cb; - Eina_Array *children; -} Efl_Model_Accessor; - -static void -_efl_model_accessor_setup(Efl_Model_Accessor *acc, - Eina_Accessor* real_accessor, - Efl_Model_Accessor_View_Constructor_Cb ctor, - void* pdata); - -static Eina_Bool -_efl_model_acessor_get_at(Efl_Model_Accessor *acc, unsigned int idx, void **data) -{ - void* eo; - Eo *p; - Eo *child; - - if(eina_accessor_data_get(acc->real_accessor, idx, &eo)) -{ - p = eo; - child = acc->cb(acc->pdata, p); - if(!acc->children) -{ - acc->children = eina_array_new(32); -} - eina_array_push(acc->children, child); - *data = child; - return !!*data; -} - else -return EINA_FALSE; -} - -static void * -_efl_model_acessor_get_container(Efl_Model_Accessor *acc) -{ - return eina_accessor_container_get(acc->real_accessor); -} - -static void -_efl_model_acessor_free(Efl_Model_Accessor *acc) -{ - if (acc->real_accessor) - { -eina_accessor_free(acc->real_accessor); -acc->real_accessor = NULL; - } - - if(acc->children) - { -unsigned i; -Eina_Array_Iterator iterator; -Eo* item; - -EINA_ARRAY_ITER_NEXT(acc->children, i, item, iterator) - { -efl_unref(item); - } -eina_array_free(acc->children); -acc->children = NULL; - } - - free(acc); -} - -static Eina_Bool -_efl_model_acessor_lock(Efl_Model_Accessor *acc) -{ - return eina_accessor_lock(acc->real_accessor); -} - -static Eina_Bool -_efl_model_acessor_unlock(Efl_Model_Accessor *acc) -{ - return eina_accessor_unlock(acc->real_accessor); -} - -static Efl_Model_Accessor * -_efl_model_acessor_clone(Efl_Model_Accessor *acc EINA_UNUSED) -{ - Efl_Model_Accessor* accessor = calloc(1, sizeof(Efl_Model_Accessor)); - _efl_model_accessor_setup(accessor, eina_accessor_clone(acc->real_accessor), - acc->cb, acc->pdata); - return accessor; -} - -static void -_efl_model_accessor_setup(Efl_Model_Accessor *acc, -Eina_Accessor* real_accessor, -Efl_Model_Accessor_View_Constructor_Cb ctor, -void* pdata) -{ - acc->vtable.version = EINA_ACCESSOR_VERSION; - acc->vtable.get_at = FUNC_ACCESSOR_GET_AT(_efl_model_acessor_get_at); - acc->vtable.get_container = FUNC_ACCESSOR_GET_CONTAINER(_efl_model_acessor_get_container); - acc->vtable.free = FUNC_ACCESSOR_FREE(_efl_model_acessor_free); - - acc->vtable.lock = FUNC_ACCESSOR_LOCK(_efl_model_acessor_lock); - acc->vtable.unlock = FUNC_ACCESSOR_LOCK(_efl_model_acessor_unlock); - - acc->vtable.clone = FUNC_ACCESSOR_CLONE(_efl_model_acessor_clone); - - EINA_MAGIC_SET(&acc->vtable, EINA_MAGIC_ACCESSOR); - - acc->real_accessor = real_accessor; - acc->cb = ctor; - acc->pdata = pdata; -} - -Eina_Accessor* efl_model_accessor_view_new(Eina_Accessor* accessor, - Efl_Model_Accessor_View_Constructor_Cb ctor, - void* data) -{ - Efl_Model_Accessor* acc = calloc(1, sizeof(Efl_Model_Accessor)); - _efl_model_accessor_setup(acc, accessor, ctor, data); - return &acc->vtable; -} - - diff --git a/src/lib/ecore/efl_model_accessor_view_private.h b/src/lib/ecore/efl_model_accessor_view_private.h deleted file mode 100644 index c44f2ec3cb..00 --- a/src/lib/ecore/efl_model_accessor_view_private.h +++ /dev/null @@ -1,5 +0,0 @@ - -typedef Eo*(*Efl_Model_Accessor_View_Constructor_Cb)(void* data, Eo* child); - -Eina_Accessor* efl_model_accessor_view_new(Eina_Accessor* accessor, -
[EGIT] [core/efl] master 04/23: efl_ui: further unbreak headers
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=393530b770da3cb5680ff2a3de5ee166310954cf commit 393530b770da3cb5680ff2a3de5ee166310954cf Author: Mike Blumenkrantz Date: Thu Sep 19 10:54:47 2019 -0400 efl_ui: further unbreak headers move more header includes around to fix building with Efl_Ui.h ref T8228 Reviewed-by: Cedric BAIL Differential Revision: https://phab.enlightenment.org/D10022 --- src/lib/elementary/Efl_Ui.h | 12 +--- src/lib/elementary/efl_ui_list_view_private.h | 1 + src/lib/elementary/elm_priv.h | 10 +- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/lib/elementary/Efl_Ui.h b/src/lib/elementary/Efl_Ui.h index f9b3dee410..e5b5b6b00b 100644 --- a/src/lib/elementary/Efl_Ui.h +++ b/src/lib/elementary/Efl_Ui.h @@ -327,28 +327,18 @@ typedef Eo Efl_Ui_Spotlight_Indicator; # include "efl_ui_list_view_types.eot.h" # include # include -# include -# include -# include # include -# include -# include -# include -# include + # include # include # include -# include # include -# include # include # include # include -# include -# include # include # include # include diff --git a/src/lib/elementary/efl_ui_list_view_private.h b/src/lib/elementary/efl_ui_list_view_private.h index 6b1c632d60..2443cf4438 100644 --- a/src/lib/elementary/efl_ui_list_view_private.h +++ b/src/lib/elementary/efl_ui_list_view_private.h @@ -7,6 +7,7 @@ #include #include "efl_ui_list_view_relayout.eo.h" +#include "efl_ui_list_view_pan.eo.h" #include "elm_priv.h" typedef struct _Efl_Ui_List_View_Data Efl_Ui_List_View_Data; diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index 86f4066810..b94322c004 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -156,7 +156,15 @@ #include "efl_ui_layout_legacy_eo.h" - +# include "efl_ui_size_model.eo.h" +# include "efl_ui_homogeneous_model.eo.h" +# include "efl_ui_exact_model.eo.h" +# include "efl_ui_average_model.eo.h" + +# include "efl_ui_focus_parent_provider.eo.h" +# include "efl_ui_focus_parent_provider_standard.eo.h" +# include "efl_ui_selection_manager.eo.h" +# include "efl_datetime_manager.eo.h" extern const char *_efl_model_property_itemw; extern const char *_efl_model_property_itemh; extern const char *_efl_model_property_selfw; --
[EGIT] [core/efl] master 22/23: elementary: leverage sizing information from model if available to avoid unecessary calc.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cc49c8ac64a358e8aa0bf8897abc6a5e4cf2c692 commit cc49c8ac64a358e8aa0bf8897abc6a5e4cf2c692 Author: Cedric BAIL Date: Fri Aug 23 12:48:16 2019 -0700 elementary: leverage sizing information from model if available to avoid unecessary calc. With the new Efl unified infrastructure, we do delay a lot of the computation to finalize, by filling the object information before finalize we reduce unecessary computation. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9948 --- src/lib/elementary/efl_ui_widget_factory.c | 19 ++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/lib/elementary/efl_ui_widget_factory.c b/src/lib/elementary/efl_ui_widget_factory.c index c9d5759744..c65bda5847 100644 --- a/src/lib/elementary/efl_ui_widget_factory.c +++ b/src/lib/elementary/efl_ui_widget_factory.c @@ -72,12 +72,29 @@ static void _efl_ui_widget_factory_efl_ui_factory_building(const Eo *obj EINA_UNUSED, Efl_Ui_Widget_Factory_Data *pd EINA_UNUSED, Efl_Gfx_Entity *ui_view) { const Efl_Model *model; - Eina_Value *property; + Eina_Value *property, *width, *height; char *style; if (!pd->style) return ; model = efl_ui_view_model_get(ui_view); + + // Fetch min size from model if available to avoid recalculcating it + width = efl_model_property_get(model, "self.width"); + height = efl_model_property_get(model, "self.height"); + if (eina_value_type_get(width) != EINA_VALUE_TYPE_ERROR && + eina_value_type_get(height) != EINA_VALUE_TYPE_ERROR) + { +Eina_Size2D s; + +if (!eina_value_int_convert(width, &s.w)) s.w = 0; +if (!eina_value_int_convert(height, &s.h)) s.h = 0; + +efl_gfx_hint_size_min_set(ui_view, s); + } + eina_value_free(width); + eina_value_free(height); + // As we have already waited for the property to be ready, we should get the right style now property = efl_model_property_get(model, pd->style); if (!property) return ; --
[EGIT] [core/efl] master 15/23: eina: add eina_mempool_iterator_new to slowly iterate every allocated pointer in a mempool.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9382bfc0bc1c6a5fb3aafce18094016b110036c0 commit 9382bfc0bc1c6a5fb3aafce18094016b110036c0 Author: Cedric Bail Date: Sat Sep 14 10:54:05 2019 -0700 eina: add eina_mempool_iterator_new to slowly iterate every allocated pointer in a mempool. Reviewed-by: Mike Blumenkrantz Differential Revision: https://phab.enlightenment.org/D9941 --- src/lib/eina/eina_inline_mempool.x | 13 +++ src/lib/eina/eina_mempool.c| 1 + src/lib/eina/eina_mempool.h| 11 +++ .../eina/mp/chained_pool/eina_chained_mempool.c| 94 -- src/modules/eina/mp/one_big/eina_one_big.c | 82 ++- .../eina/mp/pass_through/eina_pass_through.c | 3 +- src/tests/eina/eina_test_mempool.c | 18 - 7 files changed, 209 insertions(+), 13 deletions(-) diff --git a/src/lib/eina/eina_inline_mempool.x b/src/lib/eina/eina_inline_mempool.x index d30364f097..0805c82f07 100644 --- a/src/lib/eina/eina_inline_mempool.x +++ b/src/lib/eina/eina_inline_mempool.x @@ -56,6 +56,11 @@ struct _Eina_Mempool_Backend * @see eina_mempool_from */ Eina_Bool (*from)(void *data, void *element); + /** Function to get an Eina_Iterator that will walk every allocated element +* in the pool. +* @use eina_mempool_iterator_new +*/ + Eina_Iterator *(*iterator)(void *data); }; struct _Eina_Mempool_Backend_ABI1 @@ -74,6 +79,7 @@ struct _Eina_Mempool_Backend_ABI2 { void (*repack)(void *data, Eina_Mempool_Repack_Cb cb, void *cb_data); Eina_Bool (*from)(void *data, void *element); + Eina_Iterator *(*iterator)(void *data); }; struct _Eina_Mempool @@ -116,6 +122,13 @@ eina_mempool_from(Eina_Mempool *mp, void *element) return mp->backend2->from(mp->backend_data, element); } +static inline Eina_Iterator * +eina_mempool_iterator_new(Eina_Mempool *mp) +{ + if (!mp->backend2->iterator) return NULL; + return mp->backend2->iterator(mp->backend_data); +} + static inline unsigned int eina_mempool_alignof(unsigned int size) { diff --git a/src/lib/eina/eina_mempool.c b/src/lib/eina/eina_mempool.c index 56144a0f1c..51a29906f2 100644 --- a/src/lib/eina/eina_mempool.c +++ b/src/lib/eina/eina_mempool.c @@ -104,6 +104,7 @@ _new_va(const char *name, if (!mp->backend2) goto on_error; mp->backend2->repack = be->repack; mp->backend2->from = be->from; +mp->backend2->iterator = be->iterator; } mp->backend_data = mp->backend.init(context, options, args); diff --git a/src/lib/eina/eina_mempool.h b/src/lib/eina/eina_mempool.h index 606ecbaef9..d7759ce6c8 100644 --- a/src/lib/eina/eina_mempool.h +++ b/src/lib/eina/eina_mempool.h @@ -197,6 +197,17 @@ static inline Eina_Bool eina_mempool_from(Eina_Mempool *mp, void *element); */ EAPI void eina_mempool_statistics(Eina_Mempool *mp) EINA_ARG_NONNULL(1); +/** + * @brief Provide an iterator to walk all allocated elements from a specified mempool. + * + * @param[in] mp The mempool + * @return @c NULL if it is not possible to iterate over the mempool, a valid iterator otherwise. + * + * @note This call is expected to be slow and should not be used in any performance critical area. + * @since 1.23 + */ +static inline Eina_Iterator *eina_mempool_iterator_new(Eina_Mempool *mp); + /** * @brief Registers the given memory pool backend. * diff --git a/src/modules/eina/mp/chained_pool/eina_chained_mempool.c b/src/modules/eina/mp/chained_pool/eina_chained_mempool.c index d44f0bf6cb..6d4facf74d 100644 --- a/src/modules/eina/mp/chained_pool/eina_chained_mempool.c +++ b/src/modules/eina/mp/chained_pool/eina_chained_mempool.c @@ -79,7 +79,7 @@ struct _Chained_Pool EINA_INLIST; EINA_RBTREE; Eina_Trash *base; - int usage; + unsigned int usage; unsigned char *last; unsigned char *limit; @@ -91,11 +91,11 @@ struct _Chained_Mempool Eina_Inlist *first; Eina_Rbtree *root; const char *name; - int item_alloc; - int pool_size; - int alloc_size; - int group_size; - int usage; + unsigned int item_alloc; + unsigned int pool_size; + unsigned int alloc_size; + unsigned int group_size; + unsigned int usage; Chained_Pool* first_fill; //All allocation will happen in this chain,unless it is filled #ifdef EINA_DEBUG_MALLOC int minimal_size; @@ -453,6 +453,85 @@ eina_chained_mempool_from(void *data, void *ptr) return ret; } +typedef struct _Eina_Iterator_Chained_Mempool Eina_Iterator_Chained_Mempool; +struct _Eina_Iterator_Chained_Mempool +{ + Eina_Iterator iterator; + + Eina_Iterator *walker; + Chained_Pool *current; + Chained_Mempool *pool; + + unsigned int offset; +}; + +static Eina_Bool +eina_mempool_iterator_next(Eina_Iterator_Chained_Mempool *it, void **data) +{ + if (!it->current) + { +if (!eina_iterator_next(it->walker, (v
[EGIT] [core/enlightenment] master 02/04: pager/desks - stop using numeric N, M if no name is set - be blank
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=11c0fb01bd891b95931c30dae1d253246064669c commit 11c0fb01bd891b95931c30dae1d253246064669c Author: Carsten Haitzler (Rasterman) Date: Thu Sep 19 18:33:17 2019 +0100 pager/desks - stop using numeric N,M if no name is set - be blank --- TODO | 5 ++--- src/bin/e_desk.c | 12 ++-- src/modules/conf_display/e_int_config_desk.c | 12 ++-- 3 files changed, 6 insertions(+), 23 deletions(-) diff --git a/TODO b/TODO index b9adc84e8..12be817cc 100644 --- a/TODO +++ b/TODO @@ -150,7 +150,6 @@ TODO: * pager: add "Set desktop name" on right click on desktop in pager * turn on desktop names when setting one here * pager: add "Set wallpaper" on right clikc on desktop in pager -* pager: only show desktop names set and not 0,0 0,1 etc. * start: start menu could do with more featured content * like you see on windows for example (search and multiple columns etc.) * a touch screen android-style scrolling fullscreen app icon style @@ -186,8 +185,8 @@ TODO: screen migrated to has diffrent res * randr: when losing a zone/screen, put windows in purgatory and then have purgatory screens available via pager to drag onto a current screen, - or the specific virtual desktops from purgator to be accessible evenm -if not on a real screen/zone + or the specific virtual desktops from purgator to be accessible even + if not on a real screen/zone * device manager: new tool to browser /sys etc. and display nicely present hardware and device drivers and state * sys top: new tool displays cpu/mem "top" - evisum. we want it to be shipped diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 1ea09647c..dd2b10738 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -118,11 +118,7 @@ e_desk_new(E_Zone *zone, int x, int y) break; } - if (!ok) - { -snprintf(name, sizeof(name), "%d,%d", x, y); -desk->name = eina_stringshare_add(name); - } + if (!ok) desk->name = eina_stringshare_add(""); /* Get window profile name for current desktop */ if (zone->randr2_id) @@ -231,11 +227,7 @@ e_desk_name_update(void) break; } - if (!ok) -{ - snprintf(name, sizeof(name), "%d,%d", d_x, d_y); - e_desk_name_set(desk, name); -} + if (!ok) e_desk_name_set(desk, ""); } } } diff --git a/src/modules/conf_display/e_int_config_desk.c b/src/modules/conf_display/e_int_config_desk.c index 274ac9b62..313ccc4a5 100644 --- a/src/modules/conf_display/e_int_config_desk.c +++ b/src/modules/conf_display/e_int_config_desk.c @@ -55,7 +55,6 @@ static void _fill_data(E_Config_Dialog_Data *cfdata) { Eina_List *l; - char name[1024]; int ok = 0; cfdata->bg = e_bg_file_get(cfdata->zone_num, cfdata->desk_x, cfdata->desk_y); @@ -75,11 +74,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) ok = 1; break; } - if (!ok) - { -snprintf(name, sizeof(name), "%d,%d", cfdata->desk_x, cfdata->desk_y); -cfdata->name = strdup(name); - } + if (!ok) cfdata->name = strdup(""); } static void * @@ -106,13 +101,10 @@ _free_data(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) static int _basic_apply(E_Config_Dialog *cfd EINA_UNUSED, E_Config_Dialog_Data *cfdata) { - char name[40]; - if ((!cfdata->name) || (!cfdata->name[0])) { -snprintf(name, sizeof(name), "%d,%d", cfdata->desk_x, cfdata->desk_y); free(cfdata->name); -cfdata->name = strdup(name); +cfdata->name = strdup(""); } e_desk_name_del(cfdata->zone_num, --
[EGIT] [core/enlightenment] master 03/04: pager - more direct config from right click menu
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3e4ff27c19289b8dc9b196ca7632100a860e64e9 commit 3e4ff27c19289b8dc9b196ca7632100a860e64e9 Author: Carsten Haitzler (Rasterman) Date: Thu Sep 19 19:17:12 2019 +0100 pager - more direct config from right click menu --- TODO | 3 --- src/modules/pager/e_mod_main.c | 33 - 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 12be817cc..627398b40 100644 --- a/TODO +++ b/TODO @@ -147,9 +147,6 @@ TODO: * efm: partitioning front end * efm: filesystem formatting front-end * efm: tune2fs/fsck front-end -* pager: add "Set desktop name" on right click on desktop in pager - * turn on desktop names when setting one here -* pager: add "Set wallpaper" on right clikc on desktop in pager * start: start menu could do with more featured content * like you see on windows for example (search and multiple columns etc.) * a touch screen android-style scrolling fullscreen app icon style diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index a3f00d28b..e6fdc1f7a 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -45,6 +45,9 @@ struct _Pager int xnum, ynum; Eina_List *desks; Pager_Desk *active_pd; + struct { + int zone_num, desk_x, desk_y; + } menu; unsigned char dragging E_BITFIELD; unsigned char just_dragged E_BITFIELD; Evas_Coord dnd_x, dnd_y; @@ -106,6 +109,7 @@ static void _pager_cb_obj_moveresize(void *data, Evas *e EINA_UNUSED static void _button_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info); static void _pager_inst_cb_menu_configure(void *data EINA_UNUSED, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED); static void _pager_inst_cb_menu_virtual_desktops_dialog(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED); +static void _pager_inst_cb_menu_virtual_desktop_dialog(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED); static void _pager_instance_drop_zone_recalc(Instance *inst); static Eina_Bool_pager_cb_event_desk_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *event); static Eina_Bool_pager_cb_event_desk_name_change(void *data EINA_UNUSED, int type EINA_UNUSED, void *event); @@ -876,6 +880,7 @@ _button_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU E_Menu *m; E_Menu_Item *mi; int cx, cy; + Pager_Desk *pd; inst = data; ev = event_info; @@ -889,13 +894,28 @@ _button_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNU e_menu_item_callback_set(mi, _pager_inst_cb_menu_configure, NULL); m = e_gadcon_client_util_menu_items_append(inst->gcc, m, 0); + + mi = e_menu_item_new_relative(m, NULL); + e_menu_item_separator_set(mi, 1); + if (e_configure_registry_exists("screen/virtual_desktops")) { mi = e_menu_item_new_relative(m, NULL); -e_menu_item_label_set(mi, _("Virtual Desktops Settings")); +e_menu_item_label_set(mi, _("All desktop settings")); e_util_menu_item_theme_icon_set(mi, "preferences-desktop"); e_menu_item_callback_set(mi, _pager_inst_cb_menu_virtual_desktops_dialog, inst); } + if (e_configure_registry_exists("internal/desk")) + { +pd = _pager_desk_at_coord(inst->pager, ev->canvas.x, ev->canvas.y); +inst->pager->menu.zone_num = inst->pager->zone->num; +inst->pager->menu.desk_x = pd->desk->x; +inst->pager->menu.desk_y = pd->desk->y; +mi = e_menu_item_new_relative(m, NULL); +e_menu_item_label_set(mi, _("This desktop name and wallpaper settings")); +e_util_menu_item_theme_icon_set(mi, "preferences-desktop"); +e_menu_item_callback_set(mi, _pager_inst_cb_menu_virtual_desktop_dialog, inst); + } e_gadcon_canvas_zone_geometry_get(inst->gcc->gadcon, &cx, &cy, NULL, NULL); @@ -931,6 +951,17 @@ _pager_inst_cb_menu_virtual_desktops_dialog(void *data EINA_UNUSED, E_Menu *m EI e_configure_registry_call("screen/virtual_desktops", NULL, NULL); } +static void +_pager_inst_cb_menu_virtual_desktop_dialog(void *data, E_Menu *m EINA_UNUSED, E_Menu_Item *mi EINA_UNUSED) +{ + Instance *inst = data; + char buf[256]; + + snprintf(buf, sizeof(buf), "%i %i %i", inst->pager->menu.zone_num, +inst->pager->menu.desk_x, inst->pager->menu.desk_y); + e_configure_registry_call("internal/desk", NULL, buf); +} + static void _pager_instance_drop_zone_recalc(Instance *inst) { --
[EGIT] [core/enlightenment] master 01/04: backlight - add battery timeout in addition to regular dim timeout
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=1783c328394ffe1743522cab4d904a226ac7574c commit 1783c328394ffe1743522cab4d904a226ac7574c Author: Carsten Haitzler (Rasterman) Date: Wed Sep 18 18:56:42 2019 +0100 backlight - add battery timeout in addition to regular dim timeout this allows for a shorter timeout when on battery vs when on ac for backlight dimming. this is actually important so when on ac dimming can interrupt minimally bur when on battery it can be much more aggressive. --- data/config/default/e.src| 5 +++-- data/config/standard/e.src | 5 +++-- data/config/tiling/e.src | 3 +++ src/bin/e_config.c | 1 + src/bin/e_config.h | 1 + src/bin/e_screensaver.c | 19 +-- src/modules/conf_display/e_int_config_dpms.c | 17 + 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/data/config/default/e.src b/data/config/default/e.src index 4b081d0b3..a2e0e3e2e 100644 --- a/data/config/default/e.src +++ b/data/config/default/e.src @@ -202,8 +202,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0 value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; - value "backlight.timer" double: 1.0; - value "backlight.idle_dim" uchar: 0; + value "backlight.timer" double: 30.0; + value "backlight.battery_timer" double: 20.0; + value "backlight.idle_dim" uchar: 1; value "device_desktop" int: 0; value "device_auto_mount" int: 0; value "device_auto_open" int: 0; diff --git a/data/config/standard/e.src b/data/config/standard/e.src index 31b2982f2..4c716d877 100644 --- a/data/config/standard/e.src +++ b/data/config/standard/e.src @@ -193,8 +193,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0 value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; -value "backlight.timer" double: 1.0; -value "backlight.idle_dim" uchar: 0; +value "backlight.timer" double: 30.0; +value "backlight.battery_timer" double: 20.0; +value "backlight.idle_dim" uchar: 1; value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_gnome" uchar: 0; diff --git a/data/config/tiling/e.src b/data/config/tiling/e.src index 2ec6af31a..431fce4bd 100644 --- a/data/config/tiling/e.src +++ b/data/config/tiling/e.src @@ -193,6 +193,9 @@ group "E_Config" struct { value "backlight.normal" double: 1.0; value "backlight.dim" double: 0.3; value "backlight.transition" double: 0.5; +value "backlight.timer" double: 30.0; +value "backlight.battery_timer" double: 20.0; +value "backlight.idle_dim" uchar: 1; value "deskenv.load_xrdb" uchar: 1; value "deskenv.load_xmodmap" uchar: 1; value "deskenv.load_gnome" uchar: 0; diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 3f1b12233..5195321a1 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -739,6 +739,7 @@ _e_config_edd_init(Eina_Bool old) E_CONFIG_VAL(D, T, backlight.dim, DOUBLE); E_CONFIG_VAL(D, T, backlight.transition, DOUBLE); E_CONFIG_VAL(D, T, backlight.timer, DOUBLE); + E_CONFIG_VAL(D, T, backlight.battery_timer, DOUBLE); E_CONFIG_VAL(D, T, backlight.sysdev, STR); E_CONFIG_VAL(D, T, backlight.idle_dim, UCHAR); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 183585181..dc8889e84 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -369,6 +369,7 @@ struct _E_Config doubledim; // GUI doubletransition; // GUI doubletimer; // GUI + doublebattery_timer; // GUI const char *sysdev; // GUI unsigned char idle_dim; // GUI E_Backlight_Mode mode; /* not saved, display-only */ diff --git a/src/bin/e_screensaver.c b/src/bin/e_screensaver.c index 6aa1142e6..ad21ecee2 100644 --- a/src/bin/e_screensaver.c +++ b/src/bin/e_screensaver.c @@ -71,13 +71,16 @@ e_screensaver_timeout_get(Eina_Bool use_idle) { if (e_config->backlight.idle_dim) { + double t2 = e_config->backlight.timer; + + if ((e_powersave_mode_get() > E_POWERSAVE_MODE_LOW) && + (e_config->backlight.battery_timer > 0.0)) + t2 = e_config->backlight.battery_timer; if (timeout > 0) { - if (e_config->backlight.timer < timeout) -timeout = e_config->backlight.timer; + if (t2 < timeout) timeout = t2; } - else - timeout = e_config->backlight.timer; + else timeout = t2; } } return timeout; @@ -568,8 +571,12 @@ e_screensaver_eval(Eina_Bool saver_on) if ((e_config->backlight.idle_dim) && (!use_special_instead
[EGIT] [core/enlightenment] master 04/04: e - bump config version properly in src
raster pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=f89cb9382971a38a912e29185e59d2c1398462b7 commit f89cb9382971a38a912e29185e59d2c1398462b7 Author: Carsten Haitzler (Rasterman) Date: Thu Sep 19 19:29:28 2019 +0100 e - bump config version properly in src this doesnt resulti n a looping of wiz - but does result in a "version too new of config" complaint and issues... so fix. --- src/bin/e_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_config.h b/src/bin/e_config.h index dc8889e84..0c732502c 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -46,7 +46,7 @@ typedef enum /* increment this whenever a new set of config values are added but the users * config doesn't need to be wiped - simply new values need to be put in */ -#define E_CONFIG_FILE_GENERATION 27 +#define E_CONFIG_FILE_GENERATION 28 #define E_CONFIG_FILE_VERSION((E_CONFIG_FILE_EPOCH * 100) + E_CONFIG_FILE_GENERATION) #define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS! --
[EGIT] [core/efl] master 04/04: eolian: remove the composite keyword (replaced by composites)
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=539dc642e9bc5e89ef0391ca0bf263bfc76c703c commit 539dc642e9bc5e89ef0391ca0bf263bfc76c703c Author: Daniel Kolesa Date: Thu Sep 19 18:17:37 2019 +0200 eolian: remove the composite keyword (replaced by composites) --- src/lib/eolian/eo_lexer.h | 2 +- src/lib/eolian/eo_parser.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h index 0746e79bae..e6ab8da0bd 100644 --- a/src/lib/eolian/eo_lexer.h +++ b/src/lib/eolian/eo_lexer.h @@ -27,7 +27,7 @@ enum Tokens */ #define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \ \ -KW(abstract), KW(c_prefix), KW(composite), KW(composites), KW(constructor), KW(constructors), \ +KW(abstract), KW(c_prefix), KW(composites), KW(constructor), KW(constructors), \ KW(data), KW(destructor), KW(error), KW(event_prefix), KW(events), KW(extends), \ KW(free), KW(get), KW(implements), KW(import), KW(interface), \ KW(keys), KW(legacy), KW(methods), KW(mixin), KW(params), \ diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index c403305a2f..879cc0af3a 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -2318,7 +2318,7 @@ tags_done: while (test_next(ls, ',')); } -if (ls->t.kw == KW_composite || ls->t.kw == KW_composites) +if (ls->t.kw == KW_composites) { if (type == EOLIAN_CLASS_INTERFACE) eo_lexer_syntax_error(ls, "interfaces cannot composite"); --
[EGIT] [core/efl] master 03/04: efl: replace composite with composites and dedup implements
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b74f98e8b7cc3a1b680488395d257841d8d3f007 commit b74f98e8b7cc3a1b680488395d257841d8d3f007 Author: Daniel Kolesa Date: Thu Sep 19 17:32:56 2019 +0200 efl: replace composite with composites and dedup implements Since using 'composites' now automatically implements what has not been implemented yet, remove the unnecessary duplicates. --- src/lib/elementary/efl_ui_collection.eo | 4 +--- src/lib/elementary/efl_ui_image_zoomable.eo | 6 ++ src/lib/elementary/efl_ui_list_view.eo| 10 ++ src/lib/elementary/efl_ui_panel.eo| 4 ++-- src/lib/elementary/efl_ui_radio_box.eo| 3 +-- src/lib/elementary/efl_ui_scroller.eo | 4 +--- src/lib/elementary/efl_ui_tab_bar.eo | 4 ++-- src/lib/elementary/efl_ui_tags.eo | 4 ++-- src/lib/elementary/efl_ui_text.eo | 4 ++-- src/lib/elementary/efl_ui_video.eo| 4 ++-- src/lib/elementary/efl_ui_widget_focus_manager.eo | 3 +-- src/lib/elementary/efl_ui_win.eo | 6 +++--- src/tests/eolian/data/unimpl.eo | 2 +- 13 files changed, 26 insertions(+), 32 deletions(-) diff --git a/src/lib/elementary/efl_ui_collection.eo b/src/lib/elementary/efl_ui_collection.eo index 30451214ad..43eacec9af 100644 --- a/src/lib/elementary/efl_ui_collection.eo +++ b/src/lib/elementary/efl_ui_collection.eo @@ -1,12 +1,10 @@ class @beta Efl.Ui.Collection extends Efl.Ui.Layout_Base implements - Efl.Ui.Scrollable_Interactive, - Efl.Ui.Scrollbar, Efl.Pack_Linear, Efl.Pack_Layout, Efl.Ui.Layout_Orientable, Efl.Ui.Multi_Selectable, Efl.Ui.Focus.Manager_Sub, Efl.Ui.Widget_Focus_Manager - composite + composites Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar, Efl.Ui.Focus.Manager diff --git a/src/lib/elementary/efl_ui_image_zoomable.eo b/src/lib/elementary/efl_ui_image_zoomable.eo index 932c732e15..cc8ae5dac9 100644 --- a/src/lib/elementary/efl_ui_image_zoomable.eo +++ b/src/lib/elementary/efl_ui_image_zoomable.eo @@ -2,10 +2,8 @@ struct @extern Elm.Photocam.Error; [[Photocam error information.]] struct @extern Elm.Photocam.Progress; [[Photocam progress information.]] -class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom, - Efl.Ui.Scrollable_Interactive, - Efl.Ui.Scrollbar - composite Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar +class @beta Efl.Ui.Image_Zoomable extends Efl.Ui.Image implements Efl.Ui.Zoom + composites Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar { [[Elementary Image Zoomable class]] methods { diff --git a/src/lib/elementary/efl_ui_list_view.eo b/src/lib/elementary/efl_ui_list_view.eo index 5c49394ec4..37db3fb183 100644 --- a/src/lib/elementary/efl_ui_list_view.eo +++ b/src/lib/elementary/efl_ui_list_view.eo @@ -7,10 +7,12 @@ struct @beta Efl.Ui.List_View_Item_Event child: Efl.Model; [[TBD]] index: int; [[TBD]] } -class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar, -Efl.Access.Widget.Action, Efl.Access.Selection, Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub, -Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, Efl.Ui.Widget_Focus_Manager - composite +class @beta Efl.Ui.List_View extends Efl.Ui.Layout_Base implements +Efl.Access.Widget.Action, Efl.Access.Selection, +Efl.Ui.Focus.Composition, Efl.Ui.Focus.Manager_Sub, +Efl.Ui.Container_Selectable, Efl.Ui.List_View_Model, +Efl.Ui.Widget_Focus_Manager + composites Efl.Ui.Scrollable_Interactive, Efl.Ui.Scrollbar { methods { diff --git a/src/lib/elementary/efl_ui_panel.eo b/src/lib/elementary/efl_ui_panel.eo index edf688c2eb..f02845eb1c 100644 --- a/src/lib/elementary/efl_ui_panel.eo +++ b/src/lib/elementary/efl_ui_panel.eo @@ -16,9 +16,9 @@ struct @beta Efl.Ui.Panel_Scroll_Info } class @beta Efl.Ui.Panel extends Efl.Ui.Layout_Base - implements Efl.Ui.Focus.Layer, Efl.Ui.Scrollable_Interactive, Efl.Content, + implements Efl.Ui.Focus.Layer, Efl.Content, Efl.Access.Widget.Action - composite Efl.Ui.Scrollable_Interactive + composites Efl.Ui.Scrollable_Interactive { [[Elementary panel class]] methods { diff --git a/src/lib/elementary/efl_ui_radio_box.eo b/src/lib/elementary/efl_ui_radio_box.eo index 15f6b3ee13..e6b2259376 100644 --- a/src/lib/elementary/efl_ui_radio_box.eo +++ b/src/lib/elementary/efl_ui_radio_box
[EGIT] [core/efl] master 01/04: eolian: auto-add composited interfaces into implements if needed
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=46a6949b2e29bddacd523d96564492957faecc34 commit 46a6949b2e29bddacd523d96564492957faecc34 Author: Daniel Kolesa Date: Thu Sep 19 16:49:31 2019 +0200 eolian: auto-add composited interfaces into implements if needed The condition here is that the composited interface does not already appear in the inheritance tree of the given class. If it does, don't add. If it doesn't, add it to the class that specifies the composited block. --- src/lib/eolian/database_validate.c | 57 +- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c index cdbd699293..f13e0e82b7 100644 --- a/src/lib/eolian/database_validate.c +++ b/src/lib/eolian/database_validate.c @@ -865,6 +865,22 @@ _extend_impl(Eina_Hash *fs, Eolian_Implement *impl, Eina_Bool as_iface) return !st; } +/* fills a complete set of stuff implemented or inherited on a class + * this is used to check whether to auto-add composited interfaces into + * implemented/extended list + */ +static void +_db_fill_ihash(Eolian_Class *icl, Eina_Hash *icls) +{ + if (icl->parent) + _db_fill_ihash(icl->parent, icls); + Eina_List *l; + Eolian_Class *sicl; + EINA_LIST_FOREACH(icl->extends, l, sicl) + _db_fill_ihash(sicl, icls); + eina_hash_set(icls, &icl, icl); +} + static void _db_fill_callables(Eolian_Class *cl, Eolian_Class *icl, Eina_Hash *fs, Eina_Bool parent) { @@ -1084,13 +1100,6 @@ _db_swap_inherit(Eolian_Class *cl, Eina_Bool succ, Eina_Stringshare *in_cl, succ = EINA_FALSE; _eo_parser_log(&cl->base, "non-interface class '%s' in composite list", icl->base.name); } - else if (iface_only && !_get_impl_class(cl, icl->base.name)) - { -/* TODO: optimize check using a lookup hash later */ -succ = EINA_FALSE; -_eo_parser_log(&cl->base, "interface '%s' not found within the inheritance tree of '%s'", - icl->base.name, cl->base.name); - } else *out_cl = icl; eina_stringshare_del(in_cl); @@ -1183,6 +1192,7 @@ _db_fill_inherits(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fhash, /* replace the composite list with real instances and initial-fill the hash */ il = cl->composite; cl->composite = NULL; + int ncomp = 0; EINA_LIST_FREE(il, inn) { Eolian_Class *out_cl = NULL; @@ -1190,6 +1200,8 @@ _db_fill_inherits(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fhash, if (!succ) continue; cl->composite = eina_list_append(cl->composite, out_cl); +succ = _db_fill_inherits(vals, out_cl, fhash, errh); +++ncomp; eina_hash_set(ch, &out_cl, out_cl); } @@ -1216,6 +1228,37 @@ _db_fill_inherits(Validate_State *vals, Eolian_Class *cl, Eina_Hash *fhash, eina_hash_add(fhash, &cl->base.name, cl); + /* there are more than zero of composites of its own */ + if (ncomp > 0) + { +/* this one stores what is already in inheritance tree */ +Eina_Hash *ih = eina_hash_pointer_new(NULL); + +/* fill a complete inheritance tree set */ +if (cl->parent) + _db_fill_ihash(cl->parent, ih); + +EINA_LIST_FOREACH(cl->extends, il, icl) + _db_fill_ihash(icl, ih); + +/* go through only the explicitly specified composite list part, as the + * rest was to be handled in parents already... add what hasn't been + * explicitly implemented so far into implements/extends + */ +EINA_LIST_FOREACH(cl->composite, il, icl) + { + /* ran out of classes */ + if (!ncomp--) + break; + /* found in inheritance tree, skip */ + if (eina_hash_find(ih, &icl)) + continue; + cl->extends = eina_list_append(cl->extends, icl); + } + +eina_hash_free(ih); + } + /* stores mappings from function to Impl_Status */ Eina_Hash *fh = eina_hash_pointer_new(NULL); --
[EGIT] [core/efl] master 02/04: eolian: allow composites keyword in place of composite
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=bc793753cb5c7764b5766720c16177fcd1656517 commit bc793753cb5c7764b5766720c16177fcd1656517 Author: Daniel Kolesa Date: Thu Sep 19 17:26:48 2019 +0200 eolian: allow composites keyword in place of composite Fixes T8218. --- src/lib/eolian/eo_lexer.h | 2 +- src/lib/eolian/eo_parser.c | 10 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h index 876f1c70bc..0746e79bae 100644 --- a/src/lib/eolian/eo_lexer.h +++ b/src/lib/eolian/eo_lexer.h @@ -27,7 +27,7 @@ enum Tokens */ #define KEYWORDS KW(class), KW(const), KW(enum), KW(return), KW(struct), \ \ -KW(abstract), KW(c_prefix), KW(composite), KW(constructor), KW(constructors), \ +KW(abstract), KW(c_prefix), KW(composite), KW(composites), KW(constructor), KW(constructors), \ KW(data), KW(destructor), KW(error), KW(event_prefix), KW(events), KW(extends), \ KW(free), KW(get), KW(implements), KW(import), KW(interface), \ KW(keys), KW(legacy), KW(methods), KW(mixin), KW(params), \ diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 1f5a678215..c403305a2f 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -2210,8 +2210,8 @@ _composite_add(Eo_Lexer *ls, Eina_Strbuf *buf) eo_lexer_syntax_error(ls, ebuf); return; } - /* do not introduce a dependency */ - database_defer(ls->state, fnm, EINA_FALSE); + /* composite == definitely a dependency */ + database_defer(ls->state, fnm, EINA_TRUE); free(fnm); ls->klass->composite = eina_list_append(ls->klass->composite, nm); eo_lexer_context_pop(ls); @@ -2306,7 +2306,7 @@ tags_done: /* regular class can have a parent, but just one */ _inherit_dep(ls, ibuf, EINA_TRUE); /* if not followed by implements, we're done */ - if (ls->t.kw != KW_implements) + if ((ls->t.kw != KW_implements) && (ls->t.kw != KW_composites)) { eo_lexer_dtor_pop(ls); goto inherit_done; @@ -2318,10 +2318,10 @@ tags_done: while (test_next(ls, ',')); } -if (ls->t.kw == KW_composite) +if (ls->t.kw == KW_composite || ls->t.kw == KW_composites) { if (type == EOLIAN_CLASS_INTERFACE) -eo_lexer_syntax_error(ls, "composite not allowed in interfaces"); +eo_lexer_syntax_error(ls, "interfaces cannot composite"); eo_lexer_get(ls); do _composite_add(ls, ibuf); --
[EGIT] [core/efl] master 01/01: docs: Update documentation for Efl.Gfx.Color_Class
xartigas pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f8926697ff430e025d782fbdbb588db8ee154852 commit f8926697ff430e025d782fbdbb588db8ee154852 Author: Xavi Artigas Date: Thu Sep 19 16:51:04 2019 +0200 docs: Update documentation for Efl.Gfx.Color_Class --- src/lib/efl/interfaces/efl_gfx_color_class.eo | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/efl/interfaces/efl_gfx_color_class.eo b/src/lib/efl/interfaces/efl_gfx_color_class.eo index 6acfa42f0f..7d91347dfe 100644 --- a/src/lib/efl/interfaces/efl_gfx_color_class.eo +++ b/src/lib/efl/interfaces/efl_gfx_color_class.eo @@ -2,7 +2,10 @@ import efl_gfx_types; mixin @beta Efl.Gfx.Color_Class { - [[Efl Gfx Color Class mixin class]] + [[This mixin provides an interface for objects supporting color classes + (this is, named colors) and provides a helper method to also allow hexadecimal + color codes. + ]] data: null; methods { @property color_class @pure_virtual { @@ -53,7 +56,7 @@ mixin @beta Efl.Gfx.Color_Class Setting color emits a signal "color_class,set" with source being the given color. - + When retrieving the color of an object, if no explicit object color is set, then global values will be used. --
[EGIT] [tools/examples] master 01/01: life: remove Elementary.h usage
xartigas pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=fea913d1e1bc3fe5d8943b2d0a835d35d58f9ba9 commit fea913d1e1bc3fe5d8943b2d0a835d35d58f9ba9 Author: Mike Blumenkrantz Date: Thu Sep 19 16:32:19 2019 +0200 life: remove Elementary.h usage Summary: this should not be needed Reviewers: segfaultxavi Reviewed By: segfaultxavi Tags: #examples Differential Revision: https://phab.enlightenment.org/D10021 --- apps/c/life/src/life_board.c | 1 - apps/c/life/src/life_main.c| 1 - apps/c/life/src/life_private.h | 1 - apps/c/life/src/life_render.c | 1 - 4 files changed, 4 deletions(-) diff --git a/apps/c/life/src/life_board.c b/apps/c/life/src/life_board.c index 445e7253..7839f934 100644 --- a/apps/c/life/src/life_board.c +++ b/apps/c/life/src/life_board.c @@ -1,6 +1,5 @@ #define EFL_BETA_API_SUPPORT 1 -#include #include #include "life_private.h" diff --git a/apps/c/life/src/life_main.c b/apps/c/life/src/life_main.c index 0c7d8152..93728cfa 100644 --- a/apps/c/life/src/life_main.c +++ b/apps/c/life/src/life_main.c @@ -1,6 +1,5 @@ #define EFL_BETA_API_SUPPORT 1 -#include #include #include "life_private.h" diff --git a/apps/c/life/src/life_private.h b/apps/c/life/src/life_private.h index 724c76b0..140e208e 100644 --- a/apps/c/life/src/life_private.h +++ b/apps/c/life/src/life_private.h @@ -1,7 +1,6 @@ #ifndef LIFE_PRIVATE_H_ # define LIFE_PRIVATE_H_ -#include #include #define LIFE_BOARD_WIDTH 47 diff --git a/apps/c/life/src/life_render.c b/apps/c/life/src/life_render.c index ed6daffb..32777f35 100644 --- a/apps/c/life/src/life_render.c +++ b/apps/c/life/src/life_render.c @@ -1,6 +1,5 @@ #define EFL_BETA_API_SUPPORT 1 -#include #include #include "life_private.h" --
[E-devel] RFC: Text interface + advice regarding interface splitting
Hey, As most of you (at least the IRC lurkers) know, I've been recently working on the text interfaces. Trying to clean them up and stabilise them. The discussion and work has been covered on phab at: https://phab.enlightenment.org/T8151 And the new (suggested) interfaces are all the files starting with "efl2_" in my branch: https://git.enlightenment.org/core/efl.git/tree/?h=devs/tasn/ifaces I'd love to get your feedback and let me know if there's anything I've missed. All feedback is welcomed, including bike shedding. Some interfaces still have massive FIXMEs at the top, so obviously read those before replying to avoid repeating what we already know. As for the advice I mentioned in the title: due to composite object regressions as described in T8184, I'm forced to break up the classes into interfaces. As discussed at length in the ticket, these interfaces would have to be very specific to the classes and not really reusable ("cursor_new" is quite specific, obviously). I can either just do as I said in the ticket, and for every class do a big interface, so Efl.Canvas.Text -> Efl.Canvas.Text + Efl.Canvas.Text_Interface. This is one way. It's obviously very ugly. The other way is to split to a lot of smaller, probably 1/2 property interfaces, which is also ugly and quite inefficient (classes/interfaces are not free). I'd love to get your input, to what interfaces would you split up these two classes: 1. https://git.enlightenment.org/core/efl.git/tree/src/lib/evas/canvas/efl2_canvas_text.eo?h=devs/tasn/ifaces 2. https://git.enlightenment.org/core/efl.git/tree/src/lib/elementary/efl2_text_raw_editable.eo?h=devs/tasn/ifaces Thanks a lot for your help and feedback! -- Tom ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: eolian: return NULL instead of EINA_FALSE on safety checks
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4de4995fa27d6a8907983d2f450a5666823995b7 commit 4de4995fa27d6a8907983d2f450a5666823995b7 Author: Daniel Kolesa Date: Thu Sep 19 16:04:56 2019 +0200 eolian: return NULL instead of EINA_FALSE on safety checks --- src/lib/eolian/database_function_api.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/eolian/database_function_api.c b/src/lib/eolian/database_function_api.c index fd78164892..ca9454449b 100644 --- a/src/lib/eolian/database_function_api.c +++ b/src/lib/eolian/database_function_api.c @@ -346,9 +346,9 @@ EAPI Eina_Stringshare * eolian_function_return_c_type_get(const Eolian_Function *fid, Eolian_Function_Type ftype) { - EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE); - EINA_SAFETY_ON_FALSE_RETURN_VAL(ftype != EOLIAN_UNRESOLVED, EINA_FALSE); - EINA_SAFETY_ON_FALSE_RETURN_VAL(ftype != EOLIAN_PROPERTY, EINA_FALSE); + EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL); + EINA_SAFETY_ON_FALSE_RETURN_VAL(ftype != EOLIAN_UNRESOLVED, NULL); + EINA_SAFETY_ON_FALSE_RETURN_VAL(ftype != EOLIAN_PROPERTY, NULL); const Eolian_Type *tp = NULL; Eina_Bool by_ref = EINA_FALSE; switch (ftype) --
Re: [E-devel] High impact rated Coverity issues for 1.23
Hello. On 17.09.19 08:36, Stefan Schmidt wrote: > Hello. > > On 16.09.19 11:01, Stefan Schmidt wrote: >> Hello. >> >> We still have many (338) issues detected by Coverity in our code base. >> For the upcoming release we should ate least aim to look at the ones >> rated with high impact (we are talking about memory corruptions, illegal >> memory access use after free, resource leaks and uninitialized variables >> here). >> >> Coverity shows 71 of these in our current code base. While I consider >> all of these at least worth to have a look it makes sense to break this >> down to a list that includes tests and examples to have this a bit more >> manageable. Which brings me to the following list: > > Thanks to everyone who had a look and already fixed some of these. From > the former list of 32 reports we are down to 17 now. Further down to 13. 1402666 Out-of-bounds access: efl_ui_selection_manager.c 1402671 Use after free: elementary_codegen.c 1402701 Use after free: elementary_codegen.c 1382209 Resource leak: edje_cc_script.c 1382215 Resource leak: vg_common_svg.c 1382852 Resource leak: evas_font_dir.c 1399087 Resource leak: efl_ui_size_model.c 1399107 Resource leak: efl_ui_exact_model.c 1402653 Resource leak: efl_ui_selection_manager.c 1404741 Resource leak: efl_ui_widget_factory.c1404749 Resource leak: efl_ui_caching_factory.c 1401457 Uninitialized scalar variable: efl_ui_textpath.c 1401458 Uninitialized scalar variable: efl_ui_textpath.c regards Stefan Schmidt ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] API/ABI report review for 1.23 release
Hello. On 16.09.19 10:21, Stefan Schmidt wrote: > Hello. > > We are getting closer to the EFL release and one of the missing pieces > is a review of the API/ABI reports ABI laboratory is kindly providing: > https://abi-laboratory.pro/index.php?view=timeline&l=efl This has been updated to beta 2 now. > As you can see we are adding 76 new APIs and removing 9 so far. Which is > luckily a pretty low number compared to older releases. > > Please help for the release by reviewing these and speak out if you find > something that should not be in there or breaks something. > > What follows is my own review, but please do your own so we can make > sure I did not miss anything. > > Eina (8 new) > eina_file.h, libeina.so.1.23.0 > eina_file_statgen_bisable ( ) > ---> Clearly a typo. I submitted a patch to fix this as D9962 This one is fixed in beta 2. Could other people review as well, please? Also state if you reviewed and are fine with them to make it clear we have some more people looking over it. regards Stefan Schmidt ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] 1.23 work items list
Hello. With beta 2 out its tiem for an update here. On 02.09.19 17:09, Stefan Schmidt wrote: > Hello. > > > Its stabilization time for 1.23! Everybody stand up and say YAY! > > The freeze for master is on and I would like folks to focus on > stabilization and getting efl into shape for a release. > > The drill is the usual: fix show stopper tickets, review ABI/API > changes, look into critical Coverity issue reports, etc. > > 1) Phab tickets: > > https://phab.enlightenment.org/maniphest/query/91Ac3kuLMeSm/ > > Currently we have listed 17 tickets as showstoppers and 99 as high. > This needs some work to figure out what is still relevant before I will > start to list the issues here. You can help by going through the tickets > and checking if they are still applying to master and adjusting priority > accordingly or closing them. Mike will have a good stab at organising > them the next days but help is always welcome. Especially on > verification and fixing :-) Mike sorted through all of them and this is what got tagged for 1.23: https://phab.enlightenment.org/maniphest/query/0Wwev4LUdG3y/ >From the 6 showstopper bugs we have at least 2-3 being worked on actively right now. There is still plenty of room to help out here. Showstopper as well as nigh rated issues. > 2) ABI/API checker: > > I hope that the great folks at ABI Laboratory will pick up the alpha > release and a report will be generated automatically to be found here: > https://abi-laboratory.pro/index.php?view=timeline&l=efl There was a separate mail on this. They updated to the results to our beta2 now. Besides the nome naming typo fix I pushed I see nothing that strikes me as bad. I would like others to review as well though. If you reviewed and found no problems please state this as well as silence could mean nobody had a look or its all fine. > > 3) Coverity reports tagged high: > > In our last Coverity run on EFL from Saturday (31.8) we have 339 > outstanding issues reported. Out of these over 300 issues 71 are marked > as high from Coverity and this is where we should focus our efforts into > for a start. > > 08 Memory corruptions > 09 Memory illegal access > 16 Uninitialized variables > 38 Memory leaks Again this was also brought up in a different mail. The number was reduced greatly but there are some left that are worth having a look. Again, the ones rated as high impact in our actual libraries is what I worry about most. > 4) Build system switch from autotools to meson: > > This is the first release which will only use our new meson build > system. If you are a packager and slept under a rock and thus have not > noticed it would be a good idea to try this out early and not wait for > the final tarball to check if it all works for you. :-) I have been running into two issues durign the release handling a) meson does not allow a beta or alpha suffix in teh release version to generate the tarballs. Easy enough to be worked around in our release script, as I did. b) there was an issue in the test suite with buildtype=release (this is why it was still set to plain) but that should be fixed with a patch today. I have not heard anything bad from packagers yet. If that means all is good or if nobody tested its hard to say. :/ All in all it looks not to bad in shape for the release. If we really can do the final on next Monday has to be seen. If we have still some open issues that are actively worked on we might delay for a few days. regards Stefan Schmidt ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: docs: Update docs for Efl.Gfx.Image_Orientable
xartigas pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5428f26f7d08b03ce4e7963595d6f83f70d5957a commit 5428f26f7d08b03ce4e7963595d6f83f70d5957a Author: Xavi Artigas Date: Thu Sep 19 13:11:00 2019 +0200 docs: Update docs for Efl.Gfx.Image_Orientable --- src/lib/efl/interfaces/efl_gfx_image_orientable.eo | 6 +- src/lib/efl/interfaces/efl_ui_layout_orientable.eo | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/efl/interfaces/efl_gfx_image_orientable.eo b/src/lib/efl/interfaces/efl_gfx_image_orientable.eo index 09653edd9e..9e4c90cda4 100644 --- a/src/lib/efl/interfaces/efl_gfx_image_orientable.eo +++ b/src/lib/efl/interfaces/efl_gfx_image_orientable.eo @@ -29,7 +29,11 @@ enum Efl.Gfx.Image_Orientation interface Efl.Gfx.Image_Orientable { - [[Interface for objects which can be oriented.]] + [[Interface for images which can be rotated or flipped (mirrored). + + Compare with @Efl.Ui.Layout_Orientable which works for layout objects and does + not include rotation. + ]] c_prefix: efl_gfx; methods { @property image_orientation { diff --git a/src/lib/efl/interfaces/efl_ui_layout_orientable.eo b/src/lib/efl/interfaces/efl_ui_layout_orientable.eo index 34da902e56..e1e2d667fd 100644 --- a/src/lib/efl/interfaces/efl_ui_layout_orientable.eo +++ b/src/lib/efl/interfaces/efl_ui_layout_orientable.eo @@ -30,6 +30,8 @@ interface Efl.Ui.Layout_Orientable For example, sliders, which can be horizontal or vertical, or container boxes, which can arrange their elements in a horizontal or vertical fashion. + + Compare with @Efl.Gfx.Image_Orientable that works for images and includes rotation. ]] c_prefix: efl_ui_layout; methods { --
[EGIT] [core/efl] master 01/02: efl_model: improve docs
xartigas pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=71e8dc0e7587a8f6b79bff2b1a5b3e3b1e08502e commit 71e8dc0e7587a8f6b79bff2b1a5b3e3b1e08502e Author: Marcel Hollerbach Date: Thu Sep 19 11:36:26 2019 +0200 efl_model: improve docs Reviewers: segfaultxavi Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10009 --- src/lib/efl/interfaces/efl_model.eo | 9 - 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/efl/interfaces/efl_model.eo b/src/lib/efl/interfaces/efl_model.eo index c256483e54..f1fa4071a1 100644 --- a/src/lib/efl/interfaces/efl_model.eo +++ b/src/lib/efl/interfaces/efl_model.eo @@ -15,7 +15,14 @@ struct @beta Efl.Model_Children_Event { interface @beta Efl.Model { - [[Efl model interface]] + [[Basic Model abstraction. + + A model in EFL can have a set of key-value properties, where key can only be a string. + The value can be anything within an Eina_Value. If a property is not yet available EAGAIN is returned. + + Additionally a model can have a list of children. The fetching of the children is asynchronous, this has the advantage of + having as few data sets as possible in the memory itself. + ]] c_prefix: efl_model; methods { @property properties { --
[EGIT] [core/efl] master 02/02: efl_model: fix links
xartigas pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e3bc67257fcb35bf0e7650f0e1ba6cf3f4a1d80a commit e3bc67257fcb35bf0e7650f0e1ba6cf3f4a1d80a Author: Marcel Hollerbach Date: Thu Sep 19 11:36:27 2019 +0200 efl_model: fix links Summary: Depends on D10009 Reviewers: segfaultxavi Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10010 --- src/lib/efl/interfaces/efl_model.eo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/efl/interfaces/efl_model.eo b/src/lib/efl/interfaces/efl_model.eo index f1fa4071a1..9390b87b22 100644 --- a/src/lib/efl/interfaces/efl_model.eo +++ b/src/lib/efl/interfaces/efl_model.eo @@ -46,8 +46,8 @@ interface @beta Efl.Model set { [[Set a property value of a given property name. - The caller must ensure to call at least efl_model_prop_list - before being able to see/set properties. This function sets + The caller must first read @.properties to obtain the list of available properties + before being able to access them through @.property. This function sets a new property value into given property name. Once the operation is completed the concrete implementation should raise @[Efl.Model.properties,changed] event in order to @@ -136,7 +136,7 @@ interface @beta Efl.Model @property children_count { [[Number of children. - When efl_model_load is completed @.children_count.get + After @[.properties,changed] is emitted, @.children_count.get can be used to get the number of children. @.children_count.get can also be used before calling @.children_slice_get so a valid range is known. Event @[Efl.Model.children,count,changed] is --
[EGIT] [core/efl] master 01/01: docs: Update documentation on Gestures
xartigas pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ac531f881fe084b4683e96f6de6b8a64a2ca0c9d commit ac531f881fe084b4683e96f6de6b8a64a2ca0c9d Author: Xavi Artigas Date: Thu Sep 19 11:17:49 2019 +0200 docs: Update documentation on Gestures We need to keep in mind that the Manager and the Recognizers are not visible to the user. The user only sees the events and the different Efl.Canvas.Gesture_* payloads. --- src/lib/evas/gesture/efl_canvas_gesture.eo | 27 +++-- .../evas/gesture/efl_canvas_gesture_double_tap.eo | 8 ++-- src/lib/evas/gesture/efl_canvas_gesture_flick.eo | 21 ++- .../evas/gesture/efl_canvas_gesture_long_tap.eo| 9 ++--- src/lib/evas/gesture/efl_canvas_gesture_manager.eo | 26 +++-- .../evas/gesture/efl_canvas_gesture_momentum.eo| 12 +++--- .../evas/gesture/efl_canvas_gesture_recognizer.eo | 38 +-- .../efl_canvas_gesture_recognizer_double_tap.eo| 12 +++--- .../gesture/efl_canvas_gesture_recognizer_flick.eo | 8 ++-- .../efl_canvas_gesture_recognizer_long_tap.eo | 12 +++--- .../efl_canvas_gesture_recognizer_momentum.eo | 8 ++-- .../gesture/efl_canvas_gesture_recognizer_tap.eo | 8 ++-- .../efl_canvas_gesture_recognizer_triple_tap.eo| 24 ++-- .../gesture/efl_canvas_gesture_recognizer_zoom.eo | 8 ++-- src/lib/evas/gesture/efl_canvas_gesture_tap.eo | 9 ++--- .../evas/gesture/efl_canvas_gesture_triple_tap.eo | 9 ++--- src/lib/evas/gesture/efl_canvas_gesture_zoom.eo| 20 +- src/lib/evas/gesture/efl_gesture_events.eo | 44 ++ 18 files changed, 170 insertions(+), 133 deletions(-) diff --git a/src/lib/evas/gesture/efl_canvas_gesture.eo b/src/lib/evas/gesture/efl_canvas_gesture.eo index b76aac0936..eaced25ad8 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture.eo @@ -1,44 +1,49 @@ import efl_canvas_gesture_types; +parse efl_gesture_events; abstract @beta Efl.Canvas.Gesture extends Efl.Object { - [[EFL Gesture abstract class + [[Base abstract class to support gesture-specific classes. - A gesture class defines a method that specific gesture event and privides information - about the gesture's type, state, and associated pointer information. + A gesture object holds the current state of that gesture (i.e. whether the gesture has + just been started, it is in progress or it has finished) along with any gesture-specific + information it needs (like the number of taps so far, to detect triple-taps, for example). - For cetain gesture types, additional methods are defined to provide meaningful gesture - information to the user.]] + Typically this class is not used directly, instead, some sub-class of it (like + @Efl.Canvas.Gesture_Tap or @Efl.Canvas.Gesture_Zoom) is retrieved from gesture events + (like @[Efl.Gesture.Events.gesture,tap] or @[Efl.Gesture.Events.gesture,zoom]). + ]] c_prefix: efl_gesture; methods { @property state { - [[This property holds the current state of the gesture.]] + [[Current state of the gesture, from initial detection to successful recognition.]] get { } set { } values { -state: Efl.Canvas.Gesture_State; [[gesture state]] +state: Efl.Canvas.Gesture_State; [[State.]] } } @property hotspot { - [[This property holds the hotspot of the current gesture.]] + [[Hotspot of the gesture currently being analyzed. + The exact meaning depends on the gesture type.]] get { } set { } values { -hotspot: Eina.Position2D;[[hotspot co-ordinate]] +hotspot: Eina.Position2D;[[Hotspot coordinates.]] } } @property timestamp { - [[This property holds the timestamp of the current gesture.]] + [[Moment when the gesture currently being analyzed started.]] get { } set { } values { -timestamp: uint;[[The timestamp]] +timestamp: uint;[[The time-stamp.]] } } } diff --git a/src/lib/evas/gesture/efl_canvas_gesture_double_tap.eo b/src/lib/evas/gesture/efl_canvas_gesture_double_tap.eo index 5a0b1bc57b..87b93ccd9c 100644 --- a/src/lib/evas/gesture/efl_canvas_gesture_double_tap.eo +++ b/src/lib/evas/gesture/efl_canvas_gesture_double_tap.eo @@ -1,9 +1,9 @@ class @beta Efl.Canvas.Gesture_Double_Tap extends Efl.Canvas.Gesture { - [[EFL Gesture Double Tap class - - A gesture class defines a method that double tap gesture event and provides information - about the double tap gesture's type, state and associated pointer information.]] + [[Double-tap gesture class holding state information. + See @Efl.Canvas.Gesture
[EGIT] [website/www-content] master 01/01: Wiki page hello-world.md changed with summary [Typo] by Xavi Artigas
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=660fd4e778b59bf94254566bebd0fa46bbf76954 commit 660fd4e778b59bf94254566bebd0fa46bbf76954 Author: Xavi Artigas Date: Thu Sep 19 01:07:54 2019 -0700 Wiki page hello-world.md changed with summary [Typo] by Xavi Artigas --- pages/develop/tutorials/c/hello-world.md.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/develop/tutorials/c/hello-world.md.txt b/pages/develop/tutorials/c/hello-world.md.txt index ab9dadf95..48f4fdc08 100644 --- a/pages/develop/tutorials/c/hello-world.md.txt +++ b/pages/develop/tutorials/c/hello-world.md.txt @@ -42,7 +42,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) EFL takes care of all initialization tasks and calls your ``efl_main()`` method when everything is ready. -At this point the parameters to ``efl_main()`` are not being used, hence the ``EINA_UNUSED`` macro. This is optional but it gets rid of warnings regarding unused parameters so it's worth having. Moreover, the ``data`` argument will always be NULL in this tutorials. +At this point the parameters to ``efl_main()`` are not being used, hence the ``EINA_UNUSED`` macro. This is optional but it gets rid of warnings regarding unused parameters so it's worth having. Moreover, the ``data`` argument will always be NULL in these tutorials. ## Step Three: Print "Hello World" ## --
[EGIT] [website/www-content] master 01/01: Wiki page hello-world.md changed with summary [Typo] by Xavi Artigas
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=5d9a4b888f24b0120ce399f2f16493b99e59d86d commit 5d9a4b888f24b0120ce399f2f16493b99e59d86d Author: Xavi Artigas Date: Thu Sep 19 01:06:43 2019 -0700 Wiki page hello-world.md changed with summary [Typo] by Xavi Artigas --- pages/develop/tutorials/c/hello-world.md.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/develop/tutorials/c/hello-world.md.txt b/pages/develop/tutorials/c/hello-world.md.txt index 6a607bdc0..ab9dadf95 100644 --- a/pages/develop/tutorials/c/hello-world.md.txt +++ b/pages/develop/tutorials/c/hello-world.md.txt @@ -18,7 +18,7 @@ Using your favorite text editor, create a text file and save it as ``hello-world #include ``` -The new EFL API has been in Beta stage for a while, and some libraries still need that you define the ``EFL_BETA_API_SUPPORT`` symbols before including any EFL library. Don't worry, though, they should not be required any more in the near future. +The new EFL API has been in Beta stage for a while, and some libraries still need that you define the ``EFL_BETA_API_SUPPORT`` symbol before including any EFL library. Don't worry, though, they should not be required any more in the near future. The EFL is split into several libraries. You only need to include the ones you actually want to use. In this tutorial you will be calling methods from the ``Eina`` and ``Efl`` libraries, therefore you just need to include the ``Efl_Core.h`` header which includes ``Eina.h`` and ``Efl.h``. --
[EGIT] [website/www-content] master 01/01: Update libraries needed by first tutorial.
xartigas pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=4e0e7c4615dc4af3ef8c8279b417dc1f5c44539d commit 4e0e7c4615dc4af3ef8c8279b417dc1f5c44539d Author: Xavi Artigas Date: Thu Sep 19 10:03:41 2019 +0200 Update libraries needed by first tutorial. Original author: Vincent Torri --- pages/develop/tutorials/c/hello-world.md.txt | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pages/develop/tutorials/c/hello-world.md.txt b/pages/develop/tutorials/c/hello-world.md.txt index 8b0d7ca3d..6a607bdc0 100644 --- a/pages/develop/tutorials/c/hello-world.md.txt +++ b/pages/develop/tutorials/c/hello-world.md.txt @@ -15,13 +15,12 @@ Using your favorite text editor, create a text file and save it as ``hello-world ```c #define EFL_BETA_API_SUPPORT 1 -#include #include ``` The new EFL API has been in Beta stage for a while, and some libraries still need that you define the ``EFL_BETA_API_SUPPORT`` symbols before including any EFL library. Don't worry, though, they should not be required any more in the near future. -The EFL is split into several libraries. You only need to include the ones you actually want to use. In this tutorial you will be calling methods from the ``Eina`` and ``Efl`` libraries, therefore you need to include the ``Eina.h`` and ``Efl_Core.h`` headers. +The EFL is split into several libraries. You only need to include the ones you actually want to use. In this tutorial you will be calling methods from the ``Eina`` and ``Efl`` libraries, therefore you just need to include the ``Efl_Core.h`` header which includes ``Eina.h`` and ``Efl.h``. You will explore the EFL libraries in greater depth in later tutorials. Other examples are ``Efl_Net.h`` for network operations and ``Efl_Ui.h`` to create *User Interface* elements like windows and buttons. @@ -43,7 +42,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) EFL takes care of all initialization tasks and calls your ``efl_main()`` method when everything is ready. -At this point the parameters to ``efl_main()`` are not being used, hence the ``EINA_UNUSED`` macro. This is optional but it gets rid of warnings regarding unused parameters so it's worth having. +At this point the parameters to ``efl_main()`` are not being used, hence the ``EINA_UNUSED`` macro. This is optional but it gets rid of warnings regarding unused parameters so it's worth having. Moreover, the ``data`` argument will always be NULL in this tutorials. ## Step Three: Print "Hello World" ## @@ -84,7 +83,8 @@ This is not mandatory but it simplifies the setup and shutdown processes conside Your program should now look something like this: ```c -#include +#define EFL_BETA_API_SUPPORT 1 + #include void @@ -100,7 +100,7 @@ EFL_MAIN() Save the program then build it as outlined in [Setting up the Development Environment](/develop/setup/c/#Building). As a reminder, if you are using the ``gcc`` compiler, run: ```bash -gcc -o hello-world hello-world.c `pkg-config --cflags --libs eina efl elementary` +gcc -o hello-world hello-world.c `pkg-config --cflags --libs ecore` ``` If the systems displays no errors, your program should be ready. Test it by typing: @@ -158,8 +158,8 @@ In the above example, if no parameters are passed to your program (``eina_array_ At the end of this tutorial you have learned: -* **Header files** must be included for any EFL libraries you intend to use. Typically, these are ``Eina.h`` and ``Efl.h``. +* **Header files** must be included for any EFL libraries you intend to use. Typically, these are ``Efl_Core.h`` or ``Efl_Ui.h``. * Your **main method** should be ``efl_main()``. * Your EFL programs should **always call ``efl_exit()``** at some stage. * Your EFL programs should **include the ``EFL_MAIN()`` macro** at the end so EFL can insert its own start-up and shutdown code. -* **Command line parameters** are available through the ``Efl_Event *`` parameter in ``efl_main()``, and can be accessed with ``eina_array_count()`` and ``eina_array_data_get()``. \ No newline at end of file +* **Command line parameters** are available through the ``Efl_Event *`` parameter in ``efl_main()``, and can be accessed with ``eina_array_count()`` and ``eina_array_data_get()``. --