[EGIT] [core/efl] master 01/01: evas render - async sw - fix context duplication by using proper dup call
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8a4ddea224ee2cc411269024311691cf8841a2bc commit 8a4ddea224ee2cc411269024311691cf8841a2bc Author: Carsten Haitzler (Rasterman)Date: Sun Oct 4 16:50:58 2015 +0900 evas render - async sw - fix context duplication by using proper dup call valgrind pointed this one out. we access freed memory when we dup a context because the context CONTAINS ptrs to things like rects for cutouts. we didnt dup these. use the proper context dup call (and properly ref pixman color image too). this was a random bug/crash waiting to happen and valgrind caught it. suprising it hasnt turned up before :/ @fix --- src/lib/evas/common/evas_draw_main.c | 6 .../evas/engines/software_generic/evas_engine.c| 32 -- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/lib/evas/common/evas_draw_main.c b/src/lib/evas/common/evas_draw_main.c index 3a62d94..b444608 100644 --- a/src/lib/evas/common/evas_draw_main.c +++ b/src/lib/evas/common/evas_draw_main.c @@ -107,6 +107,12 @@ evas_common_draw_context_dup(RGBA_Draw_Context *dc) dc2 = malloc(sizeof(RGBA_Draw_Context)); memcpy(dc2, dc, sizeof(RGBA_Draw_Context)); evas_common_draw_context_cutouts_dup(>cutout, >cutout); +#ifdef HAVE_PIXMAN +#if defined(PIXMAN_FONT) || defined(PIXMAN_RECT) || defined(PIXMAN_LINE) || defined(PIXMAN_POLY) + if (dc2->col.pixman_color_image) + pixman_image_ref(dc2->col.pixman_color_image); +#endif +#endif return dc2; } diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 553b353..0a541d3 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -371,7 +371,7 @@ struct _Evas_Thread_Command_Font struct _Evas_Thread_Command_Map { void *image; - RGBA_Draw_Context image_ctx; + RGBA_Draw_Context *image_ctx; void *surface; Eina_Rectangle clip; DATA32 mul_col; @@ -385,7 +385,7 @@ struct _Evas_Thread_Command_Map struct _Evas_Thread_Command_Multi_Font { - RGBA_Draw_Context context; + RGBA_Draw_Context *context; void *surface; int x, y; Evas_Font_Array *texts; @@ -2068,25 +2068,25 @@ _draw_thread_map_draw(void *data) dw = (m->pts[2 + offset].x >> FP) - dx; dh = (m->pts[2 + offset].y >> FP) - dy; - col = map->image_ctx.mul.col; - use = map->image_ctx.mul.use; - if (use) map->image_ctx.mul.col = MUL4_SYM(col, m->pts[0].col); - else map->image_ctx.mul.col = m->pts[0].col; - map->image_ctx.mul.use = 1; + col = map->image_ctx->mul.col; + use = map->image_ctx->mul.use; + if (use) map->image_ctx->mul.col = MUL4_SYM(col, m->pts[0].col); + else map->image_ctx->mul.col = m->pts[0].col; + map->image_ctx->mul.use = 1; if (map->smooth) evas_common_scale_rgba_in_to_out_clip_cb - (im, map->surface, >image_ctx, + (im, map->surface, map->image_ctx, 0, 0, im->cache_entry.w, im->cache_entry.h, dx, dy, dw, dh, _map_image_smooth_draw); else evas_common_scale_rgba_in_to_out_clip_cb - (im, map->surface, >image_ctx, + (im, map->surface, map->image_ctx, 0, 0, im->cache_entry.w, im->cache_entry.h, dx, dy, dw, dh, _map_image_sample_draw); - map->image_ctx.mul.col = col; - map->image_ctx.mul.use = use; + map->image_ctx->mul.col = col; + map->image_ctx->mul.use = use; } else { @@ -2106,6 +2106,7 @@ _draw_thread_map_draw(void *data) free_out: free(m); + evas_common_draw_context_free(map->image_ctx); eina_mempool_free(_mp_command_map, map); } @@ -2119,7 +2120,7 @@ _map_draw_thread_cmd(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, RG if (!cm) return EINA_FALSE; cm->image = src; - memcpy(>image_ctx, dc, sizeof(*dc)); + cm->image_ctx = evas_common_draw_context_dup(dc); cm->surface = dst; if (dc->clip.use) @@ -2402,11 +2403,12 @@ _draw_thread_multi_font_draw(void *data) b = itr->color.b; a = itr->color.a; -eng_context_color_set(NULL, >context, r, g, b, a); -evas_common_font_draw(mf->surface, >context, x, y, itr->glyphs); +eng_context_color_set(NULL, mf->context, r, g, b, a); +evas_common_font_draw(mf->surface, mf->context, x, y, itr->glyphs); evas_common_cpu_end_opt(); } + evas_common_draw_context_free(mf->context); eina_mempool_free(_mp_command_multi_font, mf); } @@ -2424,7 +2426,7 @@
[EGIT] [core/enlightenment] enlightenment-0.19 01/01: fix systray to work with spec-breaking apps, eg. steam
discomfitor pushed a commit to branch enlightenment-0.19. http://git.enlightenment.org/core/enlightenment.git/commit/?id=041fbdb31e6fd2464ec4ff597a4c4d59f7fc2ccc commit 041fbdb31e6fd2464ec4ff597a4c4d59f7fc2ccc Author: Mike BlumenkrantzDate: Sun Oct 4 08:41:07 2015 -0400 fix systray to work with spec-breaking apps, eg. steam according to the StatusNotifierItem specification, applications register "service org.freedesktop.StatusNotifierItem-PID-ID" on the session bus, and then "must register the unique instance name to the StatusNotifierWatcher". some applications, such as steam, instead register the path that they will run on (/org/ayatana/NotificationItem/steam) and then expect the watcher to register the method call's send id bus: this is totally bogus. to catch this, when registering the new item the enlightenment watcher must first determine if the item is spec-conforming. if yes, proceed as normal. if no, pretend the application knows what it's doing and try to make things work as expected anyway for more details, read the full spec here http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem fix T2763 --- src/modules/systray/e_mod_notifier_host_dbus.c| 16 +++- src/modules/systray/e_mod_notifier_host_private.h | 4 ++-- src/modules/systray/e_mod_notifier_watcher.c | 14 +- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/modules/systray/e_mod_notifier_host_dbus.c b/src/modules/systray/e_mod_notifier_host_dbus.c index 77ae5b5..8eba2b1 100644 --- a/src/modules/systray/e_mod_notifier_host_dbus.c +++ b/src/modules/systray/e_mod_notifier_host_dbus.c @@ -14,8 +14,6 @@ extern const char *Category_Names[]; extern const char *Status_Names[]; -static Eina_Stringshare *DBUS_PATH; - typedef struct _Notifier_Host_Data { Instance_Notifier_Host *host_inst; void *data; @@ -445,24 +443,26 @@ notifier_items_get_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pen } static void -item_registered_local_cb(void *data, const char *bus) +item_registered_local_cb(void *data, const char *bus, const char *path) { Context_Notifier_Host *ctx = data; - notifier_item_add(eina_stringshare_ref(DBUS_PATH), eina_stringshare_add(bus), ctx); + notifier_item_add(eina_stringshare_add(path), eina_stringshare_add(bus), ctx); } static void -item_unregistered_local_cb(void *data, const char *bus) +item_unregistered_local_cb(void *data, const char *bus, const char *path) { Context_Notifier_Host *ctx = data; Notifier_Item *item; - Eina_Stringshare *s; + Eina_Stringshare *s, *p; s = eina_stringshare_add(bus); - item = notifier_item_find(DBUS_PATH, s, ctx); + p = eina_stringshare_add(path); + item = notifier_item_find(p, s, ctx); if (item) systray_notifier_item_free(item); eina_stringshare_del(s); + eina_stringshare_del(p); } static void @@ -515,7 +515,6 @@ systray_notifier_dbus_init(Context_Notifier_Host *ctx) eldbus_init(); ctx->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); if (!ctx->conn) return; - DBUS_PATH = eina_stringshare_add("/StatusNotifierItem"); p = eldbus_name_request(ctx->conn, WATCHER_BUS, ELDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING, name_request_cb, ctx); @@ -542,7 +541,6 @@ void systray_notifier_dbus_shutdown(Context_Notifier_Host *ctx) eldbus_object_unref(obj); ctx->watcher = NULL; } - eina_stringshare_replace(_PATH, NULL); eldbus_connection_unref(ctx->conn); eldbus_shutdown(); } diff --git a/src/modules/systray/e_mod_notifier_host_private.h b/src/modules/systray/e_mod_notifier_host_private.h index ad3bcd6..a7e2ea8 100644 --- a/src/modules/systray/e_mod_notifier_host_private.h +++ b/src/modules/systray/e_mod_notifier_host_private.h @@ -63,8 +63,8 @@ struct _Notifier_Item int attnimgw, attnimgh; }; -typedef void (*E_Notifier_Watcher_Item_Registered_Cb)(void *data, const char *service); -typedef void (*E_Notifier_Watcher_Item_Unregistered_Cb)(void *data, const char *service); +typedef void (*E_Notifier_Watcher_Item_Registered_Cb)(void *data, const char *service, const char *path); +typedef void (*E_Notifier_Watcher_Item_Unregistered_Cb)(void *data, const char *service, const char *path); void systray_notifier_update_menu(void *data, E_DBusMenu_Item *new_root_item); void systray_notifier_item_update(Notifier_Item *item); diff --git a/src/modules/systray/e_mod_notifier_watcher.c b/src/modules/systray/e_mod_notifier_watcher.c index 666a5b4..3e9a47b 100644 --- a/src/modules/systray/e_mod_notifier_watcher.c +++ b/src/modules/systray/e_mod_notifier_watcher.c @@ -36,8 +36,8 @@ item_name_monitor_cb(void *data, const char *bus, const char *old_id EINA_UNUSED eldbus_service_signal_emit(iface, ITEM_UNREGISTERED, svc); items =
[EGIT] [core/enlightenment] master 01/01: fix systray to work with spec-breaking apps, eg. steam
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6ff98d8a397a496bdfbdc9cf61533b82de3f206e commit 6ff98d8a397a496bdfbdc9cf61533b82de3f206e Author: Mike BlumenkrantzDate: Sun Oct 4 08:41:07 2015 -0400 fix systray to work with spec-breaking apps, eg. steam according to the StatusNotifierItem specification, applications register "service org.freedesktop.StatusNotifierItem-PID-ID" on the session bus, and then "must register the unique instance name to the StatusNotifierWatcher". some applications, such as steam, instead register the path that they will run on (/org/ayatana/NotificationItem/steam) and then expect the watcher to register the method call's send id bus: this is totally bogus. to catch this, when registering the new item the enlightenment watcher must first determine if the item is spec-conforming. if yes, proceed as normal. if no, pretend the application knows what it's doing and try to make things work as expected anyway for more details, read the full spec here http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem fix T2763 --- src/modules/systray/e_mod_notifier_host_dbus.c| 16 +++- src/modules/systray/e_mod_notifier_host_private.h | 4 ++-- src/modules/systray/e_mod_notifier_watcher.c | 14 +- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/modules/systray/e_mod_notifier_host_dbus.c b/src/modules/systray/e_mod_notifier_host_dbus.c index 77ae5b5..8eba2b1 100644 --- a/src/modules/systray/e_mod_notifier_host_dbus.c +++ b/src/modules/systray/e_mod_notifier_host_dbus.c @@ -14,8 +14,6 @@ extern const char *Category_Names[]; extern const char *Status_Names[]; -static Eina_Stringshare *DBUS_PATH; - typedef struct _Notifier_Host_Data { Instance_Notifier_Host *host_inst; void *data; @@ -445,24 +443,26 @@ notifier_items_get_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pen } static void -item_registered_local_cb(void *data, const char *bus) +item_registered_local_cb(void *data, const char *bus, const char *path) { Context_Notifier_Host *ctx = data; - notifier_item_add(eina_stringshare_ref(DBUS_PATH), eina_stringshare_add(bus), ctx); + notifier_item_add(eina_stringshare_add(path), eina_stringshare_add(bus), ctx); } static void -item_unregistered_local_cb(void *data, const char *bus) +item_unregistered_local_cb(void *data, const char *bus, const char *path) { Context_Notifier_Host *ctx = data; Notifier_Item *item; - Eina_Stringshare *s; + Eina_Stringshare *s, *p; s = eina_stringshare_add(bus); - item = notifier_item_find(DBUS_PATH, s, ctx); + p = eina_stringshare_add(path); + item = notifier_item_find(p, s, ctx); if (item) systray_notifier_item_free(item); eina_stringshare_del(s); + eina_stringshare_del(p); } static void @@ -515,7 +515,6 @@ systray_notifier_dbus_init(Context_Notifier_Host *ctx) eldbus_init(); ctx->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); if (!ctx->conn) return; - DBUS_PATH = eina_stringshare_add("/StatusNotifierItem"); p = eldbus_name_request(ctx->conn, WATCHER_BUS, ELDBUS_NAME_REQUEST_FLAG_REPLACE_EXISTING, name_request_cb, ctx); @@ -542,7 +541,6 @@ void systray_notifier_dbus_shutdown(Context_Notifier_Host *ctx) eldbus_object_unref(obj); ctx->watcher = NULL; } - eina_stringshare_replace(_PATH, NULL); eldbus_connection_unref(ctx->conn); eldbus_shutdown(); } diff --git a/src/modules/systray/e_mod_notifier_host_private.h b/src/modules/systray/e_mod_notifier_host_private.h index ad3bcd6..a7e2ea8 100644 --- a/src/modules/systray/e_mod_notifier_host_private.h +++ b/src/modules/systray/e_mod_notifier_host_private.h @@ -63,8 +63,8 @@ struct _Notifier_Item int attnimgw, attnimgh; }; -typedef void (*E_Notifier_Watcher_Item_Registered_Cb)(void *data, const char *service); -typedef void (*E_Notifier_Watcher_Item_Unregistered_Cb)(void *data, const char *service); +typedef void (*E_Notifier_Watcher_Item_Registered_Cb)(void *data, const char *service, const char *path); +typedef void (*E_Notifier_Watcher_Item_Unregistered_Cb)(void *data, const char *service, const char *path); void systray_notifier_update_menu(void *data, E_DBusMenu_Item *new_root_item); void systray_notifier_item_update(Notifier_Item *item); diff --git a/src/modules/systray/e_mod_notifier_watcher.c b/src/modules/systray/e_mod_notifier_watcher.c index 666a5b4..3e9a47b 100644 --- a/src/modules/systray/e_mod_notifier_watcher.c +++ b/src/modules/systray/e_mod_notifier_watcher.c @@ -36,8 +36,8 @@ item_name_monitor_cb(void *data, const char *bus, const char *old_id EINA_UNUSED eldbus_service_signal_emit(iface, ITEM_UNREGISTERED, svc); items =
[EGIT] [website/www-content] master 01/01: remove PG as it is already in the session name.
cedric pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=cf0336b9b27f3b0c32a20d6663f715a308a276af commit cf0336b9b27f3b0c32a20d6663f715a308a276af Author: Cedric BAILDate: Sun Oct 4 10:24:59 2015 +0200 remove PG as it is already in the session name. --- pages/docs.txt | 30 +++--- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pages/docs.txt b/pages/docs.txt index 0bb6799..37c982c 100644 --- a/pages/docs.txt +++ b/pages/docs.txt @@ -56,21 +56,21 @@ Go check the current available version of EFL on each distro/platform: === Programming Guide === - * [[program_guide/basic_application_structure_pg|Basic Application structure PG]] - * [[program_guide/eina_pg|Eina PG]] - * [[program_guide/connectivity_pg|Connectivity PG]] - * [[program_guide/main_loop_pg|Main Loop PG]] - * [[program_guide/threading_pg|Threading PG]] - * [[program_guide/evas_pg|Evas PG]] - * [[program_guide/edje_pg|Edje PG]] - * [[program_guide/event_effect_pg|Event and Effect PG]] - * [[program_guide/containers_pg|Containers PG]] - * [[program_guide/widgets_pg|Widgets PG]] - * [[program_guide/focus_ui_pg|Managing UI Component Focus PG]] - * [[program_guide/customizing_ui_pg|Customizing UI Components PG]] - * [[program_guide/scalability_pg|Scalability PG]] - * [[program_guide/multilingual_pg|Multilingual PG]] - * [[program_guide/evasgl_pg|Evas GL PG]] + * [[program_guide/basic_application_structure_pg|Basic Application structure]] + * [[program_guide/eina_pg|Eina]] + * [[program_guide/connectivity_pg|Connectivity]] + * [[program_guide/main_loop_pg|Main Loop]] + * [[program_guide/threading_pg|Threading]] + * [[program_guide/evas_pg|Evas]] + * [[program_guide/edje_pg|Edje]] + * [[program_guide/event_effect_pg|Event and Effect]] + * [[program_guide/containers_pg|Containers]] + * [[program_guide/widgets_pg|Widgets]] + * [[program_guide/focus_ui_pg|Managing UI Component Focus]] + * [[program_guide/customizing_ui_pg|Customizing UI Components]] + * [[program_guide/scalability_pg|Scalability]] + * [[program_guide/multilingual_pg|Multilingual]] + * [[program_guide/evasgl_pg|Evas GL]] === Samples === --
[EGIT] [core/efl] efl-1.15 01/01: eldbus - make method calls less crasy since libdbus likes to abort
discomfitor pushed a commit to branch efl-1.15. http://git.enlightenment.org/core/efl.git/commit/?id=d7c27e407b0bad663891faa667d76fa5d8438b58 commit d7c27e407b0bad663891faa667d76fa5d8438b58 Author: Carsten Haitzler (Rasterman)Date: Sun Oct 4 17:53:46 2015 +0900 eldbus - make method calls less crasy since libdbus likes to abort changes zmike made to e's systray make e abort due to libdbus seeing the bus name as invalid. it actually is. it's /org/ayatana/NotificationItem/steam for example - instead of or.whatever.blah - thuis e aborts continually if you run steam at all. eldbus should be more crash-proof thus this adds checks so dbus fun doesnt cause an app to crash if it happens to call incorrect dbus names. @fix --- src/lib/eldbus/eldbus_message.c | 16 1 file changed, 16 insertions(+) diff --git a/src/lib/eldbus/eldbus_message.c b/src/lib/eldbus/eldbus_message.c index 03b8d64..5b8763d 100644 --- a/src/lib/eldbus/eldbus_message.c +++ b/src/lib/eldbus/eldbus_message.c @@ -108,6 +108,22 @@ eldbus_message_method_call_new(const char *dest, const char *path, const char *i EINA_SAFETY_ON_NULL_RETURN_VAL(iface, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(method, NULL); + if (!dbus_validate_bus_name(dest, NULL)) + { +ERR("Invalid bus name '%s'", dest); +return NULL; + } + if (!dbus_validate_path(path, NULL)) + { +ERR("Invalid path '%s'", path); +return NULL; + } + if (!dbus_validate_interface(iface, NULL)) + { +ERR("Invalid interface '%s'", iface); +return NULL; + } + msg = eldbus_message_new(EINA_TRUE); EINA_SAFETY_ON_NULL_GOTO(msg, fail); --
[EGIT] [core/efl] master 01/01: examples: fix eina_tmpstr example after revert of strftime
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=82095adae4d17fc4d04d490d478771d9e1be0006 commit 82095adae4d17fc4d04d490d478771d9e1be0006 Author: Stefan SchmidtDate: Sun Oct 4 09:19:53 2015 +0200 examples: fix eina_tmpstr example after revert of strftime Was left broken after the eina_tmpstr_strftime revert. --- src/examples/eina/eina_tmpstr_01.c | 11 +-- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/examples/eina/eina_tmpstr_01.c b/src/examples/eina/eina_tmpstr_01.c index a8f8d36..36d8c62 100644 --- a/src/examples/eina/eina_tmpstr_01.c +++ b/src/examples/eina/eina_tmpstr_01.c @@ -7,9 +7,7 @@ int main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { - const char *str, *str2; - time_t curr_time; - struct tm * info; + const char *str; const char *prologe = "The Cylons were created by man. They rebelled. They " "evolved."; @@ -20,13 +18,6 @@ main(int argc EINA_UNUSED, char **argv EINA_UNUSED) printf("length: %d\n", eina_tmpstr_len(str)); eina_tmpstr_del(str); - curr_time = time(NULL); - info = localtime(_time); - str2 = eina_tmpstr_strftime("%I:%M%p", info); - printf("%s\n", str2); - printf("length: %d\n", eina_tmpstr_len(str2)); - eina_tmpstr_del(str2); - eina_shutdown(); return 0; --
[EGIT] [admin/devs] master 01/01: Dev: Update illogict’s revolvia key.
illogict pushed a commit to branch master. http://git.enlightenment.org/admin/devs.git/commit/?id=3a9b1f27d599dba6d38c5ff610bf017a272d594a commit 3a9b1f27d599dba6d38c5ff610bf017a272d594a Author: Chidambar ZinnouryDate: Sun Oct 4 15:25:40 2015 +0200 Dev: Update illogict’s revolvia key. --- developers/illogict/id_ed25519-revolvia.pub | 1 + developers/illogict/id_rsa-revolvia.pub | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/developers/illogict/id_ed25519-revolvia.pub b/developers/illogict/id_ed25519-revolvia.pub new file mode 100644 index 000..a3eaa5a --- /dev/null +++ b/developers/illogict/id_ed25519-revolvia.pub @@ -0,0 +1 @@ +ssh-ed25519 C3NzaC1lZDI1NTE5IANkAW6H2mQvBSpoOWLJPRXEXMX14Jow1DCx1sJlxnBT chidambar@revolvia diff --git a/developers/illogict/id_rsa-revolvia.pub b/developers/illogict/id_rsa-revolvia.pub deleted file mode 100644 index 583c6ff..000 --- a/developers/illogict/id_rsa-revolvia.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa B3NzaC1yc2EDAQABAAABAQDkZvGYApSQr+GH2gSLdW7DS97Ca5RDfvi4HJr5LOZ3rc/9HsmgaLB02jn3jMbV6AxbGhl5JbOO3L1sCBTk9bOOIWY5K74I5czbI6Hyxn36borhLieKe69r69+AoIBpxughH/t7u+m+ha1nHCJHAPZkdd4cQTnNyvctS7VeJCpSmOPmoU08hdd1xP9Trwf/DGu6jV2ccpDVFEdmjPG0SByPoUJMtrDjxlV6zW7VoWi5yl8mbGbavQ68Ip/6a7lcDfeZCYswYF+GZCqqN/BjIXjphrbmZvFrIHIco8MZMhvWHUjQO3UGBszJb9BFBXqlSti5CXVk+lcK7hlPH37oN2Qp chidambar@revolvia --
[EGIT] [core/efl] master 01/01: eolian: fix out-of-bounds indexing on tokens
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cc0476041f9d879adf8a0af9813c3193fc495c96 commit cc0476041f9d879adf8a0af9813c3193fc495c96 Author: Daniel KolesaDate: Sun Oct 4 14:52:36 2015 +0100 eolian: fix out-of-bounds indexing on tokens Fixes CID 1324818 @fix --- src/lib/eolian/eo_lexer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c index bd78958..d14c70f 100644 --- a/src/lib/eolian/eo_lexer.c +++ b/src/lib/eolian/eo_lexer.c @@ -1148,8 +1148,9 @@ eo_lexer_token_to_str(int token, char *buf) { const char *v; size_t idx = token - START_CUSTOM; -if (idx >= sizeof(tokens)) - v = keywords[idx - sizeof(tokens)]; +size_t tsz = sizeof(tokens) / sizeof(tokens[0]); +if (idx >= tsz) + v = keywords[idx - tsz]; else v = tokens[idx]; memcpy(buf, v, strlen(v) + 1); --
[EGIT] [core/elementary] master 02/06: elm_hoversel: refine hoversel scrollability function
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=f216366148179a3c7c97c34fc815c3fc38bfbf40 commit f216366148179a3c7c97c34fc815c3fc38bfbf40 Author: Jee-Yong UmDate: Sun Oct 4 14:55:21 2015 +0200 elm_hoversel: refine hoversel scrollability function Summary: Some modifications for hoversel scrollability are applied. For example, The logic for generating scroller is changed. (newly added during activation) If hoversel's contents are larger than hover,they will be resized to fit hover. If hoversel is moved (by window rotation etc.), scroller will be resized. Reduandant code are removed from popup for scrollability. Test Plan: You can see the sample for scrollable hoversel in second one of "elementary_test hoversel". Reviewers: Hermet, SanghyeonLee, cedric Reviewed By: cedric Subscribers: godlytalias, Hermet Differential Revision: https://phab.enlightenment.org/D2926 Signed-off-by: Cedric BAIL --- data/themes/edc/elm/hover.edc | 8 +- src/bin/test_hoversel.c | 2 + src/lib/elc_hoversel.c| 271 -- 3 files changed, 191 insertions(+), 90 deletions(-) diff --git a/data/themes/edc/elm/hover.edc b/data/themes/edc/elm/hover.edc index 43fd5c5..b34d36a 100644 --- a/data/themes/edc/elm/hover.edc +++ b/data/themes/edc/elm/hover.edc @@ -676,11 +676,11 @@ group { name: "elm/hover/base/hoversel_horizontal/default"; description { state: "default" 0.0; rel1.to_x: "elm.swallow.slot.left"; rel1.to_y: "elm.swallow.slot.left"; -rel1.offset: -6 0; +rel1.offset: -10 -10; rel2.to_x: "elm.swallow.slot.middle"; rel2.to_y: "elm.swallow.slot.left"; rel2.relative: 0.0 1.0; -rel2.offset: 4 1; +rel2.offset: 4 9; image { normal: "button_normal.png"; border: 7 7 7 7; @@ -691,10 +691,10 @@ group { name: "elm/hover/base/hoversel_horizontal/default"; rel1.to_x: "elm.swallow.slot.middle"; rel1.to_y: "elm.swallow.slot.right"; rel1.relative: 1.0 0.0; -rel1.offset: -5 0; +rel1.offset: -5 -10; rel2.to_x: "elm.swallow.slot.right"; rel2.to_y: "elm.swallow.slot.right"; -rel2.offset: 5 1; +rel2.offset: 10 9; image { normal: "button_normal.png"; border: 7 7 7 7; diff --git a/src/bin/test_hoversel.c b/src/bin/test_hoversel.c index 8fd2346..87f9e55 100644 --- a/src/bin/test_hoversel.c +++ b/src/bin/test_hoversel.c @@ -190,6 +190,8 @@ test_hoversel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ NULL); elm_hoversel_item_add(hoversel, "Item 4", "close", ELM_ICON_STANDARD, NULL, NULL); + elm_hoversel_item_add(hoversel, "Item 5 - Long Label Here", NULL, ELM_ICON_NONE, NULL, + NULL); elm_box_pack_end(bx, hoversel); evas_object_show(hoversel); diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c index 82f5957..5f7d0a8 100644 --- a/src/lib/elc_hoversel.c +++ b/src/lib/elc_hoversel.c @@ -142,15 +142,168 @@ _item_unfocused_cb(void *data EINA_UNUSED, } static void +_create_scroller(Evas_Object *obj, Elm_Hoversel_Data *sd) +{ + //table + sd->tbl = elm_table_add(obj); + + //spacer + sd->spacer = evas_object_rectangle_add(evas_object_evas_get(obj)); + evas_object_color_set(sd->spacer, 0, 0, 0, 0); + elm_table_pack(sd->tbl, sd->spacer, 0, 0, 1, 1); + + //Scroller + sd->scr = elm_scroller_add(sd->tbl); + elm_object_style_set(sd->scr, "popup/no_inset_shadow"); + evas_object_size_hint_weight_set(sd->scr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(sd->scr, EVAS_HINT_FILL, EVAS_HINT_FILL); + if (sd->horizontal) + { +elm_scroller_policy_set(sd->scr, ELM_SCROLLER_POLICY_AUTO, ELM_SCROLLER_POLICY_OFF); +elm_scroller_content_min_limit(sd->scr, EINA_FALSE, EINA_TRUE); +elm_scroller_bounce_set(sd->scr, EINA_TRUE, EINA_FALSE); + } + else + { +elm_scroller_policy_set(sd->scr, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); +elm_scroller_content_min_limit(sd->scr, EINA_TRUE, EINA_FALSE); +elm_scroller_bounce_set(sd->scr, EINA_FALSE, EINA_TRUE); + } + elm_table_pack(sd->tbl, sd->scr, 0, 0, 1, 1); + evas_object_show(sd->scr); +} + +static void +_resizing_eval(Evas_Object *obj, Elm_Hoversel_Data *sd) +{ + Evas_Object *bx = NULL; + const char *max_size_str; + int max_size = 0; + char buf[128]; + Evas_Coord box_w = -1, box_h = -1; + Evas_Coord x, y, w, h, xx, yy, ww, hh, vw = 0, vh = 0; + double align_x; + Eina_List *l; + Evas_Object *it; +
[EGIT] [core/elementary] master 04/06: elc_naviframe: fix crash in strcmp, if text_set is NULL issue
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=1634653bb3b56a6344660d6062ee8247a766f434 commit 1634653bb3b56a6344660d6062ee8247a766f434 Author: Shilpa SinghDate: Sun Oct 4 15:26:08 2015 +0200 elc_naviframe: fix crash in strcmp, if text_set is NULL issue Summary: Issue: If text set is NULL to naviframe, crash happens in strcmp Soln: Check for text if NULL, before passing to strcmp @fix Test Plan: //Pass the text as NULL elm_object_part_text_set(nf, "title", NULL); Reviewers: Hermet, cedric Reviewed By: cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3052 Signed-off-by: Cedric BAIL --- src/lib/elc_naviframe.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/elc_naviframe.c b/src/lib/elc_naviframe.c index 4273480..673a694 100644 --- a/src/lib/elc_naviframe.c +++ b/src/lib/elc_naviframe.c @@ -1018,12 +1018,16 @@ EOLIAN static Eina_Bool _elm_naviframe_elm_layout_text_set(Eo *obj, Elm_Naviframe_Data *sd EINA_UNUSED, const char *part, const char *label) { Elm_Object_Item *it; + const char *text = NULL; it = elm_naviframe_top_item_get(obj); if (!it) return EINA_FALSE; elm_object_item_part_text_set(it, part, label); - return !strcmp(elm_object_item_part_text_get(it, part), label); + text = elm_object_item_part_text_get(it, part); + if ((text) && !strcmp(text, label)) + return EINA_TRUE; + return EINA_FALSE; } EOLIAN static const char* --
[EGIT] [core/elementary] master 01/06: elm_video: port eo_event callbacks to use eo_event arrays
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=ba30cf95b58aaeae5d877d79f8ce2d73a7dcb257 commit ba30cf95b58aaeae5d877d79f8ce2d73a7dcb257 Author: Vivek EllurDate: Sun Oct 4 12:05:51 2015 +0200 elm_video: port eo_event callbacks to use eo_event arrays Summary: Changed eo_event_callback_add to use eo_event_callback_array_add in elm_video.c Signed-off-by: Vivek Ellur Reviewers: cedric Differential Revision: https://phab.enlightenment.org/D3096 Signed-off-by: Cedric BAIL --- src/lib/elm_video.c | 49 + 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/src/lib/elm_video.c b/src/lib/elm_video.c index 3502971..aea83a9 100644 --- a/src/lib/elm_video.c +++ b/src/lib/elm_video.c @@ -27,6 +27,32 @@ static const Evas_Smart_Cb_Description _smart_callbacks[] = { {NULL, NULL} }; + +static Eina_Bool +_on_open_done(void *data, + Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, + void *event_info EINA_UNUSED); +static Eina_Bool +_on_playback_started(void *data, + Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, + void *event_info EINA_UNUSED); +static Eina_Bool +_on_playback_finished(void *data, + Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, + void *event_info EINA_UNUSED); +static Eina_Bool +_on_aspect_ratio_updated(void *data, + Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, + void *event_info EINA_UNUSED); +static Eina_Bool +_on_title_changed(void *data, + Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, + void *event_info EINA_UNUSED); +static Eina_Bool +_on_audio_level_changed(void *data, +Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, +void *event_info EINA_UNUSED); + static Eina_Bool _key_action_move(Evas_Object *obj, const char *params); static Eina_Bool _key_action_play(Evas_Object *obj, const char *params); @@ -36,6 +62,15 @@ static const Elm_Action key_actions[] = { {NULL, NULL} }; +EO_CALLBACKS_ARRAY_DEFINE(_video_cb, + { EMOTION_OBJECT_EVENT_OPEN_DONE, _on_open_done }, + { EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _on_playback_started }, + { EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, _on_playback_finished }, + { EMOTION_OBJECT_EVENT_FRAME_RESIZE, _on_aspect_ratio_updated }, + { EMOTION_OBJECT_EVENT_TITLE_CHANGE, _on_title_changed }, + { EMOTION_OBJECT_EVENT_AUDIO_LEVEL_CHANGE, _on_audio_level_changed } +); + static Eina_Bool _key_action_move(Evas_Object *obj, const char *params) { @@ -155,6 +190,7 @@ _on_playback_started(void *data, return EINA_TRUE; } + static Eina_Bool _on_playback_finished(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, @@ -251,18 +287,7 @@ _elm_video_evas_object_smart_add(Eo *obj, Elm_Video_Data *priv) elm_layout_content_set(obj, "elm.swallow.video", priv->emotion); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_OPEN_DONE, _on_open_done, obj)); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_PLAYBACK_STARTED, _on_playback_started, obj)); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_PLAYBACK_FINISHED, _on_playback_finished, obj)); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_FRAME_RESIZE, _on_aspect_ratio_updated, obj)); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_TITLE_CHANGE, _on_title_changed, obj)); - eo_do(priv->emotion, eo_event_callback_add - (EMOTION_OBJECT_EVENT_AUDIO_LEVEL_CHANGE, _on_audio_level_changed, obj)); + eo_do(priv->emotion, eo_event_callback_array_add(_video_cb(), obj)); evas_object_event_callback_add (obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_size_hints_changed, NULL); --
[EGIT] [core/elementary] master 03/06: elm_hoversel: add elm_hoversel_label_auto_changed_set/get() API
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=49ec1ec570561a260b94eb98c1a73a217822ba8d commit 49ec1ec570561a260b94eb98c1a73a217822ba8d Author: Jee-Yong UmDate: Sun Oct 4 15:09:22 2015 +0200 elm_hoversel: add elm_hoversel_label_auto_changed_set/get() API Summary: Hoversel can be used like dropdown or pulldown menu. In that case, changing hoversel label into selected item lable can be considered as common usage of hoversel. This API automatizes changing label. Reviewers: SanghyeonLee, Hermet, cedric Reviewed By: cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D2963 Signed-off-by: Cedric BAIL --- src/bin/test_hoversel.c | 1 + src/lib/elc_hoversel.c| 37 + src/lib/elm_hoversel.eo | 10 ++ src/lib/elm_widget_hoversel.h | 1 + 4 files changed, 49 insertions(+) diff --git a/src/bin/test_hoversel.c b/src/bin/test_hoversel.c index 87f9e55..e65efd9 100644 --- a/src/bin/test_hoversel.c +++ b/src/bin/test_hoversel.c @@ -182,6 +182,7 @@ test_hoversel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_ hoversel = elm_hoversel_add(win); elm_hoversel_scrollable_set(hoversel, EINA_TRUE); + elm_hoversel_label_auto_changed_set(hoversel, EINA_TRUE); elm_hoversel_hover_parent_set(hoversel, win); elm_object_text_set(hoversel, "Some Icons"); elm_hoversel_item_add(hoversel, "Item 1", NULL, ELM_ICON_NONE, NULL, NULL); diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c index 5f7d0a8..6628bf5 100644 --- a/src/lib/elc_hoversel.c +++ b/src/lib/elc_hoversel.c @@ -110,8 +110,33 @@ _on_item_clicked(void *data EINA_UNUSED, Evas_Object *obj2 = WIDGET(item); Elm_Object_Item *eo_it = EO_OBJ(item); + ELM_HOVERSEL_DATA_GET(obj2, sd); + if (item->func) item->func((void *)WIDGET_ITEM_DATA_GET(eo_it), obj2, eo_it); eo_do(obj2, eo_event_callback_call(EVAS_SELECTABLE_INTERFACE_EVENT_SELECTED, eo_it)); + + if (sd->auto_changed) + { +Evas_Object *ic; + +ic = elm_object_part_content_unset(obj2, "icon"); +ELM_SAFE_FREE(ic, evas_object_del); + +if (item->icon_file) + { + ic = elm_icon_add(obj2); + elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE); + if (item->icon_type == ELM_ICON_FILE) + elm_image_file_set(ic, item->icon_file, item->icon_group); + else if (item->icon_type == ELM_ICON_STANDARD) + elm_icon_standard_set(ic, item->icon_file); + elm_object_part_content_set(obj2, "icon", ic); + } + +if(item->label) + elm_object_text_set(obj2, item->label); + } + elm_hoversel_hover_end(obj2); return EINA_TRUE; @@ -901,5 +926,17 @@ _elm_hoversel_scrollable_get(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *sd) return sd->scroll_enabled; } +EOLIAN void +_elm_hoversel_label_auto_changed_set(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *sd, Eina_Bool auto_changed) +{ + sd->auto_changed = !!auto_changed; +} + +EOLIAN Eina_Bool +_elm_hoversel_label_auto_changed_get(Eo *obj EINA_UNUSED, Elm_Hoversel_Data *sd) +{ + return sd->auto_changed; +} + #include "elm_hoversel_item.eo.c" #include "elm_hoversel.eo.c" diff --git a/src/lib/elm_hoversel.eo b/src/lib/elm_hoversel.eo index 878b454..ca24396 100644 --- a/src/lib/elm_hoversel.eo +++ b/src/lib/elm_hoversel.eo @@ -57,6 +57,16 @@ class Elm.Hoversel (Elm.Button, Evas.Selectable_Interface, scrollable: bool; [[$true if scrollable $false otherwise.]] } } + @property label_auto_changed { + [[Change the label of hoversel to that of selected item automatically.]] + get{ + } + set{ + } + values { +auto_changed: bool; [[$true if the label is changed automatically or $false otherwise]] + } + } hover_begin { [[This triggers the hoversel popup from code, the same as if the user had clicked the button.]] } diff --git a/src/lib/elm_widget_hoversel.h b/src/lib/elm_widget_hoversel.h index ff62512..2b97728 100644 --- a/src/lib/elm_widget_hoversel.h +++ b/src/lib/elm_widget_hoversel.h @@ -42,6 +42,7 @@ struct _Elm_Hoversel_Data Eina_Bool horizontal: 1; Eina_Bool expanded : 1; Eina_Bool scroll_enabled: 1; + Eina_Bool auto_changed : 1; }; typedef struct _Elm_Hoversel_Item_Data Elm_Hoversel_Item_Data; --
[EGIT] [core/elementary] master 05/06: elm_hover: delay hover dismiss while handling edje signal
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=32c89740f3fcb6f2c6b9739bea0589517a55c48a commit 32c89740f3fcb6f2c6b9739bea0589517a55c48a Author: Jee-Yong UmDate: Sun Oct 4 15:38:52 2015 +0200 elm_hover: delay hover dismiss while handling edje signal Summary: elm_hover_dismiss() doesn't hide hover directly, but sends signal only. It can be translated that "dismiss" do not hide hover only, but handles some works. (EDC program, callbacks etc.) However, "dismiss" sends signals after hide hover itself, so following edje signals are ignored. (Hover cannot be seen already!) This patch makes hover dismiss delayed while handling edje signal. @fix Test Plan: elementary_test hover2 Reviewers: Hermet, cedric Reviewed By: cedric Subscribers: woohyun Differential Revision: https://phab.enlightenment.org/D3068 Signed-off-by: Cedric BAIL --- data/themes/edc/elm/hover.edc | 25 ++ src/lib/elm_hover.c | 80 ++- 2 files changed, 88 insertions(+), 17 deletions(-) diff --git a/data/themes/edc/elm/hover.edc b/data/themes/edc/elm/hover.edc index b34d36a..afed708 100644 --- a/data/themes/edc/elm/hover.edc +++ b/data/themes/edc/elm/hover.edc @@ -1,5 +1,6 @@ /* TODO: replicate diagonal swallow slots to the other hover styles */ group { name: "elm/hover/base/default"; + data.item: "dismiss" "on"; parts { part { name: "elm.swallow.offset"; type: SWALLOW; description { state: "default" 0.0; @@ -131,10 +132,18 @@ group { name: "elm/hover/base/default"; signal: "mouse,up,*"; source: "base"; action: SIGNAL_EMIT "elm,action,dismiss" "elm"; } + program { name: "hide"; + signal: "elm,action,hide"; source: "elm"; + after: "hidefinished"; + } + program { name: "hidefinished"; + action: SIGNAL_EMIT "elm,action,hide,finished" "elm"; + } } } group { name: "elm/hover/base/popout"; + data.item: "dismiss" "on"; images.image: "button_normal.png" COMP; parts { part { name: "elm.swallow.offset"; type: SWALLOW; @@ -362,7 +371,12 @@ group { name: "elm/hover/base/popout"; program { name: "hide"; signal: "elm,action,hide"; source: "elm"; action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; target: "base"; + after: "hidefinished"; + } + program { name: "hidefinished"; + action: SIGNAL_EMIT "elm,action,hide,finished" "elm"; } program { name: "leftshow"; signal: "elm,action,slot,left,show"; source: "elm"; @@ -427,6 +441,7 @@ group { name: "elm/hover/base/hoversel_vertical/default"; alias: "elm/hover/base/hoversel_vertical/entry"; images.image: "button_normal.png" COMP; images.image: "vertical_separated_bar_glow.png" COMP; + data.item: "dismiss" "on"; data.item: "max_size" "60"; parts { part { name: "elm.swallow.offset"; type: SWALLOW; @@ -597,7 +612,12 @@ group { name: "elm/hover/base/hoversel_vertical/default"; program { name: "hide"; signal: "elm,action,hide"; source: "elm"; action: STATE_SET "default" 0.0; + transition: DECELERATE 0.5; target: "base"; + after: "hidefinished"; + } + program { name: "hidefinished"; + action: SIGNAL_EMIT "elm,action,hide,finished" "elm"; } program { name: "topshow"; @@ -645,6 +665,7 @@ group { name: "elm/hover/base/hoversel_vertical/default"; group { name: "elm/hover/base/hoversel_horizontal/default"; alias: "elm/hover/base/hoversel_horizontal/entry"; images.image: "button_normal.png" COMP; + data.item: "dismiss" "on"; data.item: "max_size" "120"; parts { part { name: "elm.swallow.offset"; type: SWALLOW; @@ -774,6 +795,10 @@ group { name: "elm/hover/base/hoversel_horizontal/default"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "base"; + after: "hidefinished"; + } + program { name: "hidefinished"; + action: SIGNAL_EMIT "elm,action,hide,finished" "elm"; } program { name: "leftshow"; diff --git a/src/lib/elm_hover.c b/src/lib/elm_hover.c index 9306c78..7bfc6db 100644 --- a/src/lib/elm_hover.c +++ b/src/lib/elm_hover.c @@ -511,15 +511,65 @@ _target_move_cb(void *data, } static void +_hide_signals_emit(Evas_Object *obj) +{ + ELM_HOVER_DATA_GET(obj, sd); + + elm_layout_signal_emit(obj, "elm,action,hide", "elm"); + + ELM_HOVER_PARTS_FOREACH + { +char buf[1024]; + +if (sd->subs[i].obj) + { + snprintf(buf, sizeof(buf), "elm,action,slot,%s,hide", + sd->subs[i].swallow); + elm_layout_signal_emit(obj, buf, "elm"); + }
[EGIT] [core/efl] master 01/02: Eo: Remove dead code.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6a4c603e0f016223b328751c4738579df639fcd4 commit 6a4c603e0f016223b328751c4738579df639fcd4 Author: Tom HacohenDate: Sun Oct 4 14:56:57 2015 +0100 Eo: Remove dead code. This removes code that became dead in commit: 389c6d35f2908018e8b6ae3f8294c02c6b5073a0 The commit doesn't explain why we don't shrink or grow when using mmap, but this is how it is. No reason to keep old code there. CID 1240224 @fix --- src/lib/eo/eo.c | 7 +-- 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 95cb37e..13d41df 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -304,17 +304,12 @@ _eo_call_stack_mem_alloc(size_t size) static void _eo_call_stack_mem_resize(void **ptr EINA_UNUSED, size_t newsize, size_t size) { - // FIXME we don't grow if (newsize > size) { CRI("eo call stack overflow, abort."); abort(); } - // FIXME resize call stack down - return; - size_t addr = MEM_PAGE_SIZE * ((newsize + MEM_PAGE_SIZE - 1) / - MEM_PAGE_SIZE); - madvise(((unsigned char *)*ptr) + addr, size - addr, MADV_DONTNEED); + return; // Do nothing, code for actual implementation in history. See commit message for details. #else static void _eo_call_stack_mem_resize(void **ptr, size_t newsize, size_t size EINA_UNUSED) --
[EGIT] [core/elementary] master 06/06: config: fix NULL access on invalid config loading
cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=21ee4b15880d68154787f6ed44c49fe07ed01d0f commit 21ee4b15880d68154787f6ed44c49fe07ed01d0f Author: Cedric BAILDate: Sun Oct 4 16:00:54 2015 +0200 config: fix NULL access on invalid config loading CID 1308381 --- src/lib/elm_config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c index afb569d..f73cb7c 100644 --- a/src/lib/elm_config.c +++ b/src/lib/elm_config.c @@ -1524,7 +1524,7 @@ _config_flush_get(void) _elm_recache(); _elm_clouseau_reload(); _elm_config_key_binding_hash(); - _elm_win_access(_elm_config->access_mode); + if (_elm_config) _elm_win_access(_elm_config->access_mode); ecore_event_add(ELM_EVENT_CONFIG_ALL_CHANGED, NULL, NULL, NULL); } --
[EGIT] [core/efl] master 02/02: Edje test: remove unused variable.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=64a04eb77092d786aecf5ca01ed1a07c798209cd commit 64a04eb77092d786aecf5ca01ed1a07c798209cd Author: Tom HacohenDate: Sun Oct 4 15:01:08 2015 +0100 Edje test: remove unused variable. --- src/tests/edje/edje_test_edje.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index 6cc6cb0..631abea 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -253,7 +253,7 @@ START_TEST(edje_test_snapshot) { Evas *evas = EDJE_TEST_INIT_EVAS(); const Evas_Object *sub; - Evas_Object *obj, *src = NULL; + Evas_Object *obj; Eina_Bool b; setenv("EVAS_DATA_DIR", EVAS_DATA_DIR, 1); --
[EGIT] [core/enlightenment] master 01/01: e menus: Fix invalid comparisons.
illogict pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=c57f2ff611e7c67d76b03259be2345ac9396c5c3 commit c57f2ff611e7c67d76b03259be2345ac9396c5c3 Author: Chidambar ZinnouryDate: Sun Oct 4 16:35:43 2015 +0200 e menus: Fix invalid comparisons. Fixes CID 1267215 and 1267216. --- src/bin/e_int_menus.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 7c50a2c..0c1c228 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -1325,7 +1325,7 @@ _e_int_menus_clients_add_by_desk(E_Desk *curr_desk, Eina_List *clients, E_Menu * /* Deal with present desk first */ EINA_LIST_FOREACH(clients, l, ec) { -if (ec->iconic && e_config->clientlist_separate_iconified_apps && E_CLIENTLIST_GROUPICONS_SEP) +if (ec->iconic && (e_config->clientlist_separate_iconified_apps == E_CLIENTLIST_GROUPICONS_SEP)) { ico = eina_list_append(ico, ec); continue; @@ -1396,8 +1396,7 @@ _e_int_menus_clients_add_by_none(Eina_List *clients, E_Menu *m) EINA_LIST_FOREACH(clients, l, ec) { -if ((ec->iconic) && (e_config->clientlist_separate_iconified_apps) && -(E_CLIENTLIST_GROUPICONS_SEP)) +if ((ec->iconic) && (e_config->clientlist_separate_iconified_apps == E_CLIENTLIST_GROUPICONS_SEP)) { ico = eina_list_append(ico, ec); continue; --
[EGIT] [core/efl] master 01/02: eio: make poll backend pass eio_test_monitor.c test suite.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a4c588b1e40c8a68348d14a2c82f601847bdbb5c commit a4c588b1e40c8a68348d14a2c82f601847bdbb5c Author: Cedric BAILDate: Sun Oct 4 10:43:54 2015 +0200 eio: make poll backend pass eio_test_monitor.c test suite. Summary: The current poll backend code uses only filename when reporting changes, while eio tests (and presumably other backends) use absolute path. This makes poll backends behavior more consistent with other backends. Test Plan: Ran eio test suite with poll backend. Reviewers: cedric Reviewed By: cedric Subscribers: cedric Projects: #efl Differential Revision: https://phab.enlightenment.org/D3083 Signed-off-by: Cedric BAIL --- src/lib/eio/eio_monitor_poll.c | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/eio/eio_monitor_poll.c b/src/lib/eio/eio_monitor_poll.c index 6b7b5a8..fc4b70e 100644 --- a/src/lib/eio/eio_monitor_poll.c +++ b/src/lib/eio/eio_monitor_poll.c @@ -148,29 +148,29 @@ _eio_monitor_fallback_heavy_cb(void *data, Ecore_Thread *thread) if (!backend->initialised) { - eina_hash_add(backend->children, info->path + info->name_start, cmp); + eina_hash_add(backend->children, info->path, cmp); } else { - cmp = eina_hash_find(backend->children, info->path + info->name_start); + cmp = eina_hash_find(backend->children, info->path); if (!cmp) { /* New file or new directory added */ ecore_thread_main_loop_begin(); - _eio_monitor_send(backend->parent, info->path + info->name_start, + _eio_monitor_send(backend->parent, info->path, info->type != EINA_FILE_DIR ? EIO_MONITOR_FILE_CREATED : EIO_MONITOR_DIRECTORY_CREATED); ecore_thread_main_loop_end(); cmp = malloc(sizeof (Eio_Monitor_Stat)); memcpy(cmp, , sizeof (Eina_Stat)); - eina_hash_add(backend->children, info->path + info->name_start, cmp); + eina_hash_add(backend->children, info->path, cmp); } else if (memcmp(cmp, , sizeof (Eina_Stat)) != 0) { /* file has been modified */ ecore_thread_main_loop_begin(); - _eio_monitor_send(backend->parent, info->path + info->name_start, + _eio_monitor_send(backend->parent, info->path, info->type != EINA_FILE_DIR ? EIO_MONITOR_FILE_MODIFIED : EIO_MONITOR_DIRECTORY_MODIFIED); ecore_thread_main_loop_end(); --
[EGIT] [core/efl] master 02/02: evas_box: fix children size and position calculation when padding is used for horizontal flow layout
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4290567fd67cee39a3e36fddf0dc526190250724 commit 4290567fd67cee39a3e36fddf0dc526190250724 Author: Subodh KumarDate: Sun Oct 4 15:23:49 2015 +0200 evas_box: fix children size and position calculation when padding is used for horizontal flow layout Summary: Fix children size and position calculation when padding is used For each child size calculation padding is adjusted but box height should include padding. Secondly, x and y position of children should not include the vertical and horizonatal padding as child size has already included the given paddings. @fix Test Plan: Please modify test_box.c file in function test_box_vert2 as follows: bx = elm_box_add(win); evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, bx); elm_box_padding_set(bx, 50, 50); elm_box_layout_set(bx, evas_object_box_layout_flow_horizontal, NULL, NULL); evas_object_show(bx); Now, 1. open elementary_test 2. box 3. Box vert 2 (observe box is broken) 4. Try resizing the window (observe) Reviewers: raster, cedric Reviewed By: cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3049 Signed-off-by: Cedric BAIL --- src/lib/evas/canvas/evas_object_box.c | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_box.c b/src/lib/evas/canvas/evas_object_box.c index a33a9e4..3510fb0 100644 --- a/src/lib/evas/canvas/evas_object_box.c +++ b/src/lib/evas/canvas/evas_object_box.c @@ -1333,7 +1333,7 @@ _evas_box_layout_flow_horizontal(Eo *o, Evas_Object_Box_Data *priv, Evas_Object_ (priv, w, _count, row_max_h, row_break, row_width, _y, _w, _h); inc_y = 0; - remain_y = h - (offset_y + max_h); + remain_y = h - (priv->pad.v * row_count -1) - (offset_y + max_h); if (remain_y > 0) { @@ -1353,7 +1353,7 @@ _evas_box_layout_flow_horizontal(Eo *o, Evas_Object_Box_Data *priv, Evas_Object_ int row_size, remain_x; row_size = row_break[r] - i; -remain_x = (w - row_width[r]); +remain_x = (w - (row_width[r] - priv->pad.h)); if (priv->align.h < 0.0) { @@ -1403,6 +1403,9 @@ _evas_box_layout_flow_horizontal(Eo *o, Evas_Object_Box_Data *priv, Evas_Object_ evas_object_geometry_get(o, , NULL, NULL, NULL); min_h += row_max_h[r]; y += row_max_h[r] + inc_y; + +if (r > 0) + min_h += priv->pad.v; } evas_object_size_hint_min_set(o, min_w, min_h); --
[EGIT] [core/enlightenment] master 01/01: Add "(drag only)" to title for drag only edge bindings
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=1ea9d73d33b739ba18a94be491bb2196569ff76b commit 1ea9d73d33b739ba18a94be491bb2196569ff76b Author: Peter KjellerstedtDate: Sun Oct 4 11:53:31 2015 -0400 Add "(drag only)" to title for drag only edge bindings Reviewers: zmike Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3128 --- .../conf_bindings/e_int_config_edgebindings.c | 26 ++ 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/modules/conf_bindings/e_int_config_edgebindings.c b/src/modules/conf_bindings/e_int_config_edgebindings.c index 981a33d..3796b5b 100644 --- a/src/modules/conf_bindings/e_int_config_edgebindings.c +++ b/src/modules/conf_bindings/e_int_config_edgebindings.c @@ -35,7 +35,7 @@ static void _add_edge_binding_cb(void *data, void *data2); static void _modify_edge_binding_cb(void *data, void *data2); /* Helper */ -static char*_edge_binding_text_get(E_Zone_Edge edge, float delay, int mod); +static char*_edge_binding_text_get(E_Zone_Edge edge, float delay, int mod, int drag_only); static void _auto_apply_changes(E_Config_Dialog_Data *cfdata); static void _find_edge_binding_action(const char *action, const char *params, int *g, int *a, int *n); @@ -765,7 +765,7 @@ _update_edge_binding_list(E_Config_Dialog_Data *cfdata) bi = l->data; -b = _edge_binding_text_get(bi->edge, bi->delay, bi->modifiers); +b = _edge_binding_text_get(bi->edge, bi->delay, bi->modifiers, bi->drag_only); if (!b) continue; ic = edje_object_add(cfdata->evas); @@ -930,7 +930,7 @@ _edge_grab_wnd_show(E_Config_Dialog_Data *cfdata) if (cfdata->locals.edge) { -label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), cfdata->locals.modifiers); + label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), cfdata->locals.modifiers, cfdata->locals.drag_only); edje_object_part_text_set(cfdata->gui.o_selector, "e.text.selection", label); E_FREE(label); } @@ -978,7 +978,8 @@ _edge_grab_wnd_slider_changed_cb(void *data, Evas_Object *obj EINA_UNUSED) if (!cfdata->locals.edge) return; label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), - cfdata->locals.modifiers); + cfdata->locals.modifiers, + cfdata->locals.drag_only); edje_object_part_text_set(cfdata->gui.o_selector, "e.text.selection", label); E_FREE(label); } @@ -992,12 +993,12 @@ _edge_grab_wnd_check_changed_cb(void *data, Evas_Object *obj EINA_UNUSED) if (cfdata->locals.click) { if (cfdata->locals.edge && cfdata->locals.button) - label = _edge_binding_text_get(cfdata->locals.edge, -1.0 * cfdata->locals.button, cfdata->locals.modifiers); + label = _edge_binding_text_get(cfdata->locals.edge, -1.0 * cfdata->locals.button, cfdata->locals.modifiers, cfdata->locals.drag_only); } else { if (cfdata->locals.edge) - label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), cfdata->locals.modifiers); + label = _edge_binding_text_get(cfdata->locals.edge, ((float)cfdata->locals.delay), cfdata->locals.modifiers, cfdata->locals.drag_only); e_widget_disabled_set(cfdata->gui.o_slider, 0); } e_widget_disabled_set(cfdata->gui.o_slider, cfdata->locals.click); @@ -1087,7 +1088,8 @@ stop: label = _edge_binding_text_get(cfdata->locals.edge, cfdata->locals.click ? (-1.0 * cfdata->locals.button) : ((float)cfdata->locals.delay), - cfdata->locals.modifiers); + cfdata->locals.modifiers, + cfdata->locals.drag_only); edje_object_part_text_set(cfdata->gui.o_selector, "e.text.selection", label); E_FREE(label); } @@ -1204,7 +1206,7 @@ _edge_grab_wnd_selection_apply(E_Config_Dialog_Data *cfdata) { char *label; - label = _edge_binding_text_get(bi->edge, bi->delay, bi->modifiers); + label = _edge_binding_text_get(bi->edge, bi->delay, bi->modifiers, bi->drag_only); e_widget_ilist_nth_label_set(cfdata->gui.o_binding_list, n, label); free(label); } @@ -1357,7 +1359,7 @@ _find_edge_binding_action(const char *action, const char *params, int *g, int *a } static char * -_edge_binding_text_get(E_Zone_Edge edge, float delay, int mod) +_edge_binding_text_get(E_Zone_Edge edge, float delay, int mod, int drag_only) { char b[256] = ""; @@ -1439,6
[EGIT] [core/efl] master 01/02: Ecore pipe: clean up handling of already read information.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=625eba7d0fc0df4a1508a210fe0be19da306b2eb commit 625eba7d0fc0df4a1508a210fe0be19da306b2eb Author: Tom HacohenDate: Sun Oct 4 15:34:48 2015 +0100 Ecore pipe: clean up handling of already read information. Coverity was complaining about a possible integer overflow. This isn't actually possible, but coverity has no way to know that because we were in fact using a too big of a type. I fixed it to be the right type so now everything should work. CID 98384 @fix --- src/lib/ecore/ecore_pipe.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore/ecore_pipe.c b/src/lib/ecore/ecore_pipe.c index ba6c32b..ac000a6 100644 --- a/src/lib/ecore/ecore_pipe.c +++ b/src/lib/ecore/ecore_pipe.c @@ -92,7 +92,7 @@ struct _Ecore_Pipe Ecore_Pipe_Cb handler; unsigned int len; int handling; - size_talready_read; + unsigned int already_read; void *passed_data; int message; Eina_Bool delete_me : 1; @@ -656,12 +656,12 @@ _ecore_pipe_read(void *data, /* catch the non error case first */ /* if we read enough data to finish the message/buffer */ -if (ret == (ssize_t)(p->len - p->already_read)) +if (ret == (p->len - p->already_read)) _ecore_pipe_handler_call(p, p->passed_data, p->len); else if (ret > 0) { /* more data left to read */ - p->already_read += ret; + p->already_read += (unsigned int) ret; _ecore_pipe_unhandle(p); return ECORE_CALLBACK_RENEW; } --
[EGIT] [core/efl] master 01/01: ector: fix leak of dash info in Cairo backend.
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=77a732eb8b1378b1b5c9794b05c61319bf6603ea commit 77a732eb8b1378b1b5c9794b05c61319bf6603ea Author: Cedric BAILDate: Sun Oct 4 17:36:42 2015 +0200 ector: fix leak of dash info in Cairo backend. CID 1316270 --- src/lib/ector/cairo/ector_renderer_cairo_shape.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/lib/ector/cairo/ector_renderer_cairo_shape.c b/src/lib/ector/cairo/ector_renderer_cairo_shape.c index c598a2c..0f9193e 100644 --- a/src/lib/ector/cairo/ector_renderer_cairo_shape.c +++ b/src/lib/ector/cairo/ector_renderer_cairo_shape.c @@ -166,7 +166,7 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_draw(Eo *obj, Ector_Rend { int r, g, b, a; unsigned i; - double *dashinfo; + if (pd->path == NULL) return EINA_FALSE; USE(obj, cairo_save, EINA_FALSE); @@ -206,6 +206,8 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_draw(Eo *obj, Ector_Rend cairo_set_source_rgba(pd->parent->cairo, r/255.0, g/255.0, b/255.0, a/255.0); if (pd->shape->stroke.dash) { + double *dashinfo; + dashinfo = (double *) malloc(2 * pd->shape->stroke.dash_length * sizeof(double)); for (i = 0; i < pd->shape->stroke.dash_length; i++) { @@ -214,6 +216,7 @@ _ector_renderer_cairo_shape_ector_renderer_generic_base_draw(Eo *obj, Ector_Rend } USE(obj, cairo_set_dash, EINA_FALSE); cairo_set_dash(pd->parent->cairo, dashinfo, pd->shape->stroke.dash_length * 2, 0); + free(dashinfo); } } --
[EGIT] [core/elementary] master 01/01: Revert "Genlist: only get item data if needed."
tasn pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=d2bdd969aa30439d53fb68c9c3ef2bfd6b221fb4 commit d2bdd969aa30439d53fb68c9c3ef2bfd6b221fb4 Author: Tom HacohenDate: Sun Oct 4 17:51:29 2015 +0100 Revert "Genlist: only get item data if needed." This actually doesn't work for coverity, I guess we just need to mark it as false-positive, as it will never be null. This reverts commit 178e7e6ac9419742d1bbe583fd252fc6536e5649. --- src/lib/elm_genlist.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index a5a34ff..cb71fb9 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -3941,12 +3941,11 @@ _swipe_do(Elm_Gen_Item *it) { int i, sum = 0; Eina_Bool tmp; + ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); if (_is_no_select(it) || eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get())) return; - ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); - sd->swipe = EINA_FALSE; for (i = 0; i < sd->movements; i++) { --
[EGIT] [core/enlightenment] master 01/01: e fm: Use correct string length when copying path.
illogict pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2a3742a52ada09b75f8431d9a9941207c45f27d3 commit 2a3742a52ada09b75f8431d9a9941207c45f27d3 Author: Chidambar ZinnouryDate: Sun Oct 4 18:44:38 2015 +0200 e fm: Use correct string length when copying path. Sometimes, trying to go to the parent directory wouldn’t work and end up showing some garbage. Unfortunately, the code ended up not NULL-ending the path, which made searching for the path separator buggy. --- src/bin/e_fm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index e7661a0..34b173e 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -1451,7 +1451,7 @@ e_fm2_parent_go(Evas_Object *obj) char buf[PATH_MAX]; EFM_SMART_CHECK(); if (!sd->path) return; - path = memcpy(buf, sd->path, strlen(sd->path + 1)); + path = memcpy(buf, sd->path, strlen(sd->path) + 1); if ((p = strrchr(path, '/'))) *p = 0; if (*path) e_fm2_path_set(obj, sd->dev, path); --
[EGIT] [core/efl] master 01/01: evas-3d: fix primitives
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0dd60ced443f087a142a8fd0f5664af732a9b029 commit 0dd60ced443f087a142a8fd0f5664af732a9b029 Author: perepelits.mDate: Sun Oct 4 16:37:17 2015 +0200 evas-3d: fix primitives Summary: There were warnings after adding primitive in the same frame more then once, the check was added to avoid it @fix Reviewers: cedric, raster, Hermet Subscribers: cedric, artem.popov Differential Revision: https://phab.enlightenment.org/D3090 Signed-off-by: Cedric BAIL --- src/lib/evas/canvas/evas_canvas3d_mesh.c| 11 +++ src/lib/evas/canvas/evas_canvas3d_mesh.eo | 8 src/lib/evas/common3d/primitives/primitive_common.h | 14 -- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_canvas3d_mesh.c b/src/lib/evas/canvas/evas_canvas3d_mesh.c index 892ecd1..e7bc091 100644 --- a/src/lib/evas/canvas/evas_canvas3d_mesh.c +++ b/src/lib/evas/canvas/evas_canvas3d_mesh.c @@ -306,6 +306,17 @@ _evas_canvas3d_mesh_vertex_count_get(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Dat return pd->vertex_count; } +EOLIAN static Eina_Bool +_evas_canvas3d_mesh_frame_exist(Eo *obj EINA_UNUSED, Evas_Canvas3D_Mesh_Data *pd, int frame) +{ + Evas_Canvas3D_Mesh_Frame *f = evas_canvas3d_mesh_frame_find(pd, frame); + + if (f) + return EINA_TRUE; + + return EINA_FALSE; +} + EOLIAN static void _evas_canvas3d_mesh_frame_add(Eo *obj, Evas_Canvas3D_Mesh_Data *pd, int frame) { diff --git a/src/lib/evas/canvas/evas_canvas3d_mesh.eo b/src/lib/evas/canvas/evas_canvas3d_mesh.eo index aa1a23e..df01a85 100644 --- a/src/lib/evas/canvas/evas_canvas3d_mesh.eo +++ b/src/lib/evas/canvas/evas_canvas3d_mesh.eo @@ -156,6 +156,14 @@ class Evas.Canvas3D.Mesh (Evas.Canvas3D.Object, Evas.Common_Interface, Efl.File) ]] } + frame_exist { + [[Returns EINA_TRUE if frame was added and EINA_FALSE in other case.]] + params { +@in frame: int; [[Frame number.]] + } + return: Eina_Bool; + } + frame_add { [[Add a key frame to the given mesh. diff --git a/src/lib/evas/common3d/primitives/primitive_common.h b/src/lib/evas/common3d/primitives/primitive_common.h index 7f4e39d..50092d7 100644 --- a/src/lib/evas/common3d/primitives/primitive_common.h +++ b/src/lib/evas/common3d/primitives/primitive_common.h @@ -17,9 +17,14 @@ unsigned short *indices = malloc(sizeof(short) * icount); #define SET_VERTEX_DATA(frame) \ + Eina_Bool frame_exist; \ + eo_do(mesh, \ + frame_exist = evas_canvas3d_mesh_frame_exist(frame)); \ + if (!frame_exist) \ + eo_do(mesh, \ + evas_canvas3d_mesh_frame_add(frame)); \ eo_do(mesh, \ evas_canvas3d_mesh_vertex_count_set(vcount), \ - evas_canvas3d_mesh_frame_add(frame), \ evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \ icount, [0])); \ _set_vec3_vertex_data(mesh, frame, vcount, vertices, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION); \ @@ -29,9 +34,14 @@ free(indices); #define SET_VERTEX_DATA_FROM_ARRAY(mesh, frame, varray, vcount, indices, icount) \ + Eina_Bool frame_exist; \ + eo_do(mesh, \ + frame_exist = evas_canvas3d_mesh_frame_exist(frame)); \ + if (!frame_exist) \ + eo_do(mesh, \ + evas_canvas3d_mesh_frame_add(frame)); \ eo_do(mesh, \ evas_canvas3d_mesh_vertex_count_set(vcount), \ - evas_canvas3d_mesh_frame_add(frame), \ evas_canvas3d_mesh_index_data_copy_set(EVAS_CANVAS3D_INDEX_FORMAT_UNSIGNED_SHORT, \ icount, [0])); \ _set_vertex_data_from_array(mesh, frame, varray, EVAS_CANVAS3D_VERTEX_ATTRIB_POSITION, \ --
[EGIT] [core/efl] master 01/01: Ecore con: Prevent possible use of uninitialised buffer on the stack.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=681328feb54e92e8653f7d4913ed6d6b78e84437 commit 681328feb54e92e8653f7d4913ed6d6b78e84437 Author: Tom HacohenDate: Sun Oct 4 16:27:52 2015 +0100 Ecore con: Prevent possible use of uninitialised buffer on the stack. I'm not actually sure if it's a false, because finding the possible options is hard. Just to be safe, it's better to set buf to "" in the else case. I'm doing this instead of initialising the variable so the compiler/static analyser will be able to warn us if there are other code paths that should probably set buf, but don't. CID 1316016 @fix --- src/lib/ecore_con/ecore_con_local.c | 4 1 file changed, 4 insertions(+) diff --git a/src/lib/ecore_con/ecore_con_local.c b/src/lib/ecore_con/ecore_con_local.c index d3d3ada..c493cc5 100644 --- a/src/lib/ecore_con/ecore_con_local.c +++ b/src/lib/ecore_con/ecore_con_local.c @@ -303,6 +303,10 @@ ecore_con_local_listen( strncpy(buf, svr->name, sizeof(buf) - 1); buf[sizeof(buf) - 1] = 0; } + else + { +buf[0] = '\0'; + } pmode = umask(mask); start: --
[EGIT] [core/elementary] master 01/01: Genlist: only get item data if needed.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=178e7e6ac9419742d1bbe583fd252fc6536e5649 commit 178e7e6ac9419742d1bbe583fd252fc6536e5649 Author: Tom HacohenDate: Sun Oct 4 15:09:40 2015 +0100 Genlist: only get item data if needed. Moved the data fetching to be after the tests. This doesn't really matter and is mostly there to silence coverity. Coverity was complaining about "it" being dereferenced before the null check (implicit in EO_OBJ), so reordering it will fix it. CID 104 --- src/lib/elm_genlist.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index cb71fb9..a5a34ff 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -3941,11 +3941,12 @@ _swipe_do(Elm_Gen_Item *it) { int i, sum = 0; Eina_Bool tmp; - ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); if (_is_no_select(it) || eo_do_ret(EO_OBJ(it), tmp, elm_wdg_item_disabled_get())) return; + ELM_GENLIST_DATA_GET_FROM_ITEM(it, sd); + sd->swipe = EINA_FALSE; for (i = 0; i < sd->movements; i++) { --