Re: [E-devel] A nice git cheat sheet in graph form
+1 to Cedric BAIL! On Sun, Sep 7, 2014 at 4:42 AM, Cedric BAIL wrote: > On Sun, Sep 7, 2014 at 9:07 AM, Daniel Juyung Seo > wrote: > > +1 to Tom > > and > > +1 to JackDanielZ > > Hey ! They are as good to break efl like a ninja as I am ! Don't > underestimate them you fool ! :-P > > > Daniel Juyung Seo (SeoZ) > > > > > > On Sun, Sep 7, 2014 at 3:07 PM, Daniel Zaoui > > wrote: > > > >> Just awesome!!! Don't show it to Cedric, he could try to rewrite history > >> to fix a 2 weeks bug inside the bad commit! > >> > >> On 09/06/14 18:36, Tom Hacohen wrote: > >> > http://justinhileman.info/article/git-pretty/ > >> > > >> > Maybe some people here will find it helpful. > >> > > >> > -- > >> > Slashdot TV. > >> > Video for Nerds. Stuff that matters. > >> > http://tv.slashdot.org/ > >> > ___ > >> > enlightenment-devel mailing list > >> > enlightenment-devel@lists.sourceforge.net > >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > >> > > >> > >> > >> > >> > -- > >> Slashdot TV. > >> Video for Nerds. Stuff that matters. > >> http://tv.slashdot.org/ > >> ___ > >> enlightenment-devel mailing list > >> enlightenment-devel@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > >> > > > -- > > Slashdot TV. > > Video for Nerds. Stuff that matters. > > http://tv.slashdot.org/ > > ___ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > > -- > Cedric BAIL > > > -- > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: Eolian/Generator: support @empty and @auto.
jackdanielz pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=56bad2beb0e9c5606987eb91a1a6f4f71d3052a2 commit 56bad2beb0e9c5606987eb91a1a6f4f71d3052a2 Author: Daniel Zaoui Date: Thu Sep 4 13:22:31 2014 +0300 Eolian/Generator: support @empty and @auto. Local and base class functions are supported. When @empty is provided, dummy functions (initializing the parameters with default values if needed) are generated. When @auto is provided on properties, access to internal data variables is done. On set, it will assign parameters values to private data members. On get, parameters are set with private data members values. See the supplied tests as examples. @feature --- src/Makefile_Eolian.am | 3 +- src/bin/eolian/eo_generator.c| 158 +-- src/tests/eolian/data/base.eo| 9 ++ src/tests/eolian/data/class_simple_ref.c | 5 +- src/tests/eolian/data/override.eo| 28 ++ src/tests/eolian/data/override_ref.c | 82 src/tests/eolian/eolian_generation.c | 17 7 files changed, 249 insertions(+), 53 deletions(-) diff --git a/src/Makefile_Eolian.am b/src/Makefile_Eolian.am index 5df0ebf..128d32d 100644 --- a/src/Makefile_Eolian.am +++ b/src/Makefile_Eolian.am @@ -117,5 +117,6 @@ tests/eolian/data/enum.eo \ tests/eolian/data/free_func.eo \ tests/eolian/data/typedef_ref.c \ tests/eolian/data/struct_ref.c \ -tests/eolian/data/class_simple_ref.c +tests/eolian/data/class_simple_ref.c \ +tests/eolian/data/override_ref.c diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index 0a292f0..56e40ab 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -339,7 +339,7 @@ eo_header_generate(const Eolian_Class *class, Eina_Strbuf *buf) } static Eina_Bool -eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eolian_Function_Type ftype, Eina_Strbuf *buf, _eolian_class_vars *impl_env) +eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eolian_Function_Type ftype, Eina_Strbuf *buf, Eolian_Implement *impl, _eolian_class_vars *impl_env) { _eolian_class_func_vars func_env; const char *suffix = ""; @@ -351,6 +351,9 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eina_Iterator *itr; void *data, *data2; const Eolian_Expression *default_ret_val = NULL; + Eina_Bool is_empty = impl ? eolian_implement_is_empty(impl) : eolian_function_is_empty(funcid, ftype); + Eina_Bool is_auto = impl ? eolian_implement_is_auto(impl) : eolian_function_is_auto(funcid, ftype); + if (ftype != EOLIAN_PROP_GET && ftype != EOLIAN_PROP_SET) ftype = eolian_function_type_get(funcid); Eina_Bool need_implementation = EINA_TRUE; if (!impl_env && eolian_function_is_virtual_pure(funcid, ftype)) need_implementation = EINA_FALSE; @@ -363,7 +366,10 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, rettypet = eolian_function_return_type_get(funcid, ftype); if (rettypet) - default_ret_val = eolian_function_return_default_value_get(funcid, ftype); + { +is_auto = EINA_FALSE; /* We block auto when the function has to return something */ +default_ret_val = eolian_function_return_default_value_get(funcid, ftype); + } if (ftype == EOLIAN_PROP_GET) { suffix = "_get"; @@ -398,9 +404,9 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, Eina_Bool is_const = eolian_parameter_const_attribute_get(data, ftype == EOLIAN_PROP_GET); if (eina_strbuf_length_get(params)) eina_strbuf_append(params, ", "); eina_strbuf_append_printf(params, "%s", pname); -eina_strbuf_append_printf(full_params, ", %s%s %s", +eina_strbuf_append_printf(full_params, ", %s%s %s%s", is_const?"const ":"", - ptype, pname); + ptype, pname, is_empty || is_auto?" EINA_UNUSED":""); eina_stringshare_del(ptype); } eina_iterator_free(itr); @@ -410,6 +416,7 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, EINA_ITERATOR_FOREACH(itr, data) { Eolian_Function_Parameter *param = data; + const Eolian_Expression *dflt_value = eolian_parameter_default_value_get(param); const Eolian_Type *ptypet = eolian_parameter_type_get(param); const char *pname = eolian_parameter_name_get(param); const char *ptype = eolian_type_c_type_get(ptypet); @@ -419,30 +426,44 @@ eo_bind_func_generate(const Eolian_Class *class, const Eolian_Function *funcid, if (ftype == EOLIAN_UNRESOLVED || ftype == EOLIAN_METHOD) add_star = (pdir == EOLIAN_OUT_PARAM || pdir == EOLIAN_INOUT_PARAM); if (eina
[E-devel] Weekly news from the automated build and QA front
Hello. Summary: o Coverity finally catched up with most of the closed issues. :) This should give everyone an overview over what has happened in the last week on the QA front. The numbers in parentheses reflect the values from last week to give you a trend. CI: o Overall build statistic: 3.5% (3.54%) failed. https://build.enlightenment.org/ clang scan-build: o EFL scan-build reports 452 (452) issues. https://build.enlightenment.org/job/nightly_efl_clang_x86_64/lastSuccessfu lBuild/artifact/scan-build/build/ o Elementary scan-build reports 77 (77) issues. https://build.enlightenment.org/job/nightly_elm_clang_x86_64/lastSuccessfulBuild/artifact/scan-build/build Unit tests: o 327 (326) unit tests for efl and none failing Coverage: o EFL total coverage is at 32.2% (32.2%) lines and 35.7% (35.7%) functions https://build.enlightenment.org/view/Test%20Coverage/ Coverity: o EFL: Outstanding defects 65 (88) with a density of 0.10 (0.13) o Elm: Outstanding defects 0 (0) with a density of 0 (0) o Evas Generic Loaders: Outstanding defects 9 (9) with a density of 0.10 (0.10) o Emotion Generic Players : Outstanding defects 0 (0) with a density of 0 (0) o E: Outstanding defects 41 (62) with a density of 0.15 (0.23) o Terminology: Outstanding defects 0 (0) with a density of 0 (0) Phab: o Total bug count: 372 (360) o Pending patch reviews: 59 (50) regards Stefan Schmidt -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: autotools: abstract sockets are supported by Darwin
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=75fd5850f3b928eb8e0d2d2577f3755730099931 commit 75fd5850f3b928eb8e0d2d2577f3755730099931 Author: Jean Guyomarc'h Date: Mon Sep 8 10:55:49 2014 +0200 autotools: abstract sockets are supported by Darwin Reviewers: raster, raoulh, cedric Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1416 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index b04f85b..950235d 100644 --- a/configure.ac +++ b/configure.ac @@ -2433,7 +2433,7 @@ if test "${have_win32}" = "yes"; then want_ecore_con_abstract_sockets="no" elif test "${have_darwin}" = "yes"; then want_cares="no" - want_ecore_con_abstract_sockets="no" + want_ecore_con_abstract_sockets="yes" elif test "${have_ps3}" = "yes"; then want_cares="no" want_ecore_con_local_sockets="no" --
[EGIT] [core/efl] master 01/01: Documentation: Adding documentation for evas_object_textblock structures.
tasn pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=65ad94bac474969929273a04ec94a810677449f1 commit 65ad94bac474969929273a04ec94a810677449f1 Author: Srivardhan Hebbar Date: Mon Sep 8 12:18:53 2014 +0100 Documentation: Adding documentation for evas_object_textblock structures. Summary: This is a fix to one of the FIXME in the code, evas_object_textblock.c Signed-off-by: Srivardhan Hebbar Reviewers: herdsman, tasn Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1383 --- src/lib/evas/canvas/evas_object_textblock.c | 199 ++-- 1 file changed, 96 insertions(+), 103 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index bbe6bea..e0c286e 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -253,48 +253,47 @@ typedef struct _Evas_Object_Textblock_Format Evas_Object_Textblock_Format; (base[closer_len] == '=') || \ _is_white(base[closer_len]))) -/*FIXME: document the structs and struct items. */ struct _Evas_Object_Style_Tag_Base { - char *tag; - char *replace; - size_t tag_len; - size_t replace_len; + char *tag; /**< Format Identifier: b=Bold, i=Italic etc. */ + char *replace; /**< Replacement string. "font_weight=Bold", "font_style=Italic" etc. */ + size_t tag_len; /**< Strlen of tag. */ + size_t replace_len; /**< Strlen of replace. */ }; struct _Evas_Object_Style_Tag { EINA_INLIST; - Evas_Object_Style_Tag_Base tag; + Evas_Object_Style_Tag_Base tag; /**< Base style object for holding style information. */ }; struct _Evas_Object_Textblock_Node_Text { EINA_INLIST; - Eina_UStrbuf *unicode; - char *utf8; - Evas_Object_Textblock_Node_Format *format_node; - Evas_Object_Textblock_Paragraph*par; - Eina_Bool dirty : 1; - Eina_Bool is_new : 1; + Eina_UStrbuf *unicode; /**< Actual paragraph text. */ + char *utf8; /**< Text in utf8 format. */ + Evas_Object_Textblock_Node_Format *format_node; /**< Points to the last format node before the paragraph, or if there is none, to the first format node within the paragraph.*/ + Evas_Object_Textblock_Paragraph*par; /**< Points to the paragraph node of which this node is a part. */ + Eina_Bool dirty : 1; /**< EINA_TRUE if already handled/format changed, else EINA_FALSE. */ + Eina_Bool is_new : 1; /**< EINA_TRUE if its a new paragraph, else EINA_FALSE. */ }; struct _Evas_Object_Textblock_Node_Format { EINA_INLIST; - const char *format; - const char *orig_format; - Evas_Object_Textblock_Node_Text*text_node; - size_t offset; + const char *format; /**< Cached, parsed and translated version of orig_format. */ + const char *orig_format; /**< Original format information. */ + Evas_Object_Textblock_Node_Text*text_node; /**< The text node it's pointing to. */ + size_t offset; /**< Offset from the last format node of the same text. */ struct { unsigned char l, r, t, b; - } pad; - unsigned char anchor : 2; - Eina_Bool opener : 1; - Eina_Bool own_closer : 1; - Eina_Bool visible : 1; - Eina_Bool format_change : 1; - Eina_Bool is_new : 1; + } pad; /**< Amount of padding required. */ + unsigned char anchor : 2; /**< ANCHOR_NONE, ANCHOR_A or ANCHOR_ITEM. */ + Eina_Bool opener : 1; /**< EINA_TRUE if opener, else EINA_FALSE. */ + Eina_Bool own_closer : 1; /**< EINA_TRUE if own_closer, else EINA_FALSE. */ + Eina_Bool visible : 1; /**< EINA_TRUE if format is visible format, else EINA_FALSE. */ + Eina_Bool format_change : 1; /**< EINA_TRUE if the format of the textblock has changed, else EINA_FALSE. */ + Eina_Bool is_new : 1; /**< EINA_TRUE if its a new format node, else EINA_FALSE */ }; /* The default tags to use */ @@ -340,26 +339,26 @@ static const Evas_Object_Style_Tag_Base default_tags[] = { struct _Evas_Object_Textblock_Paragraph { EINA_INLIST; - Evas_Object_Textblock_Line*lines; - Evas_Object_Textblock_Node_Text *text_node; - Eina_List *logical_items; - Evas_BiDi_Paragraph_Props *bidi_props; /* Only valid during lay
[EGIT] [core/enlightenment] master 01/01: wl_desktop_shell: Added shell_surface_destroy API for destroying all surfaces
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3999e3996266fd3402e0e2f2ac32af5b58c4cd89 commit 3999e3996266fd3402e0e2f2ac32af5b58c4cd89 Author: vivek Date: Mon Sep 8 08:14:38 2014 -0400 wl_desktop_shell: Added shell_surface_destroy API for destroying all surfaces Summary: shell_surface_destroy function is a common destroy function to destroy all type of surfaces and to remove redundancy in code Signed-off-by: vivek Reviewers: devilhorns Reviewed By: devilhorns Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1421 --- src/modules/wl_desktop_shell/e_mod_main.c | 54 +++ 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 535e5d2..7438c41 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -92,8 +92,8 @@ _e_shell_surface_mouse_down_helper(E_Client *ec, E_Binding_Event_Mouse_Button *e e_focus_event_mouse_down(ec); } -static void -_e_shell_surface_cb_destroy(struct wl_resource *resource) +static void +_e_shell_surface_destroy(struct wl_resource *resource) { E_Client *ec; @@ -112,13 +112,26 @@ _e_shell_surface_cb_destroy(struct wl_resource *resource) (ec->comp_data->shell.unmap)) ec->comp_data->shell.unmap(ec->comp_data->shell.surface); } - + if (ec->parent) + { + ec->parent->transients = +eina_list_remove(ec->parent->transients, ec); + } + wl_resource_destroy(ec->comp_data->shell.surface); ec->comp_data->shell.surface = NULL; } } } -static void +static void +_e_shell_surface_cb_destroy(struct wl_resource *resource) +{ + /* DBG("Shell Surface Destroy: %d", wl_resource_get_id(resource)); */ + + _e_shell_surface_destroy(resource); +} + +static void _e_shell_surface_cb_pong(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t serial EINA_UNUSED) { E_Client *ec; @@ -621,17 +634,9 @@ _e_shell_cb_shell_surface_get(struct wl_client *client, struct wl_resource *reso static void _e_xdg_shell_surface_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) { - E_Client *ec; - /* DBG("XDG_SHELL: Surface Destroy"); */ - if ((ec = wl_resource_get_user_data(resource))) - { -/* eina_stringshare_del(ec->icccm.title); */ -/* eina_stringshare_del(ec->icccm.class); */ -wl_resource_destroy(ec->comp_data->shell.surface); -ec->comp_data->shell.surface = NULL; - } + _e_shell_surface_destroy(resource); } static void @@ -1233,30 +1238,9 @@ _e_xdg_shell_cb_surface_get(struct wl_client *client, struct wl_resource *resour static void _e_xdg_shell_popup_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource) { - E_Client *ec; - /* DBG("XDG_SHELL: Popup Destroy"); */ - if ((ec = wl_resource_get_user_data(resource))) - { -if (ec->comp_data) - { - if (ec->comp_data->mapped) - { - if ((ec->comp_data->shell.surface) && - (ec->comp_data->shell.unmap)) -ec->comp_data->shell.unmap(ec->comp_data->shell.surface); - } - - if (ec->parent) - { - ec->parent->transients = -eina_list_remove(ec->parent->transients, ec); - } - wl_resource_destroy(ec->comp_data->shell.surface); - ec->comp_data->shell.surface = NULL; - } - } + _e_shell_surface_destroy(resource); } static const struct xdg_popup_interface _e_xdg_popup_interface = --
[EGIT] [core/enlightenment] master 01/01: fix nocomp skipping for skippable objects
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=20a5b2bc1802f3a77dcfc2850887b78b42e0512d commit 20a5b2bc1802f3a77dcfc2850887b78b42e0512d Author: Mike Blumenkrantz Date: Mon Sep 8 09:11:56 2014 -0400 fix nocomp skipping for skippable objects fix T753 --- src/bin/e_comp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 584ed3a..4603ca4 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -97,6 +97,7 @@ _e_comp_visible_object_is(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coo Evas_Coord xx, yy, ww, hh; if ((!type) || (!e_util_strcmp(type, "e_comp_object"))) return EINA_FALSE; + if (evas_object_data_get(obj, "comp_skip")) return EINA_FALSE; evas_object_geometry_get(obj, &xx, &yy, &ww, &hh); if (E_INTERSECTS(x, y, w, h, xx, yy, ww, hh)) { --
[EGIT] [core/efl] master 01/01: evas/drm: Remove evas-drm handling of the drm fd
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=96b767ef775301a00a7983324a5db3f2c56b7304 commit 96b767ef775301a00a7983324a5db3f2c56b7304 Author: Stefan Schmidt Date: Mon Sep 8 13:22:20 2014 +0200 evas/drm: Remove evas-drm handling of the drm fd We now longer have a use case for opening the drm file descriptor in the evas engine itself. This is now all handled in ecore_drm or ecore evas. --- src/modules/evas/engines/drm/Evas_Engine_Drm.h | 1 - src/modules/evas/engines/drm/evas_engine.c | 34 -- 2 files changed, 35 deletions(-) diff --git a/src/modules/evas/engines/drm/Evas_Engine_Drm.h b/src/modules/evas/engines/drm/Evas_Engine_Drm.h index b67440e..f40ec87 100644 --- a/src/modules/evas/engines/drm/Evas_Engine_Drm.h +++ b/src/modules/evas/engines/drm/Evas_Engine_Drm.h @@ -20,7 +20,6 @@ struct _Evas_Engine_Info_Drm Eina_Bool vsync : 1; int fd; -Eina_Bool own_fd : 1; int output; int plane; diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index 34fd3af..e44ba6c 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -26,24 +26,6 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h) Render_Engine *re = NULL; Outbuf *ob; - /* if we have no drm device, get one */ - if (info->info.fd < 0) - { -if (!ecore_drm_init()) return NULL; - -/* try getting the default drm device */ -if (!(info->info.dev = ecore_drm_device_find(NULL, NULL))) - goto on_error; - -/* check if we already opened the drm device with ecore_evas */ -/* try to open the drm ourselfs (most likely because we get called from expedite) */ -if (!ecore_drm_device_open(info->info.dev)) - goto on_error; - -info->info.own_fd = EINA_TRUE; -info->info.fd = ecore_drm_device_fd_get(info->info.dev); - } - /* try to allocate space for our render engine structure */ if (!(re = calloc(1, sizeof(Render_Engine goto on_error; @@ -70,14 +52,6 @@ _output_setup(Evas_Engine_Info_Drm *info, int w, int h) on_error: if (re) evas_render_engine_software_generic_clean(&re->generic); - /* check if we already opened the card. if so, close it */ - if ((info->info.fd >= 0) && (info->info.own_fd)) - { -ecore_drm_device_close(info->info.dev); -info->info.fd = -1; -ecore_drm_device_free(info->info.dev); - } - free(re); return NULL; } @@ -185,14 +159,6 @@ eng_output_free(void *data) { Render_Engine *re = data; - /* check if we already opened the card. if so, close it */ - if ((re->info->info.fd >= 0) && (re->info->info.own_fd)) - { -ecore_drm_device_close(re->info->info.dev); -re->info->info.fd = -1; -ecore_drm_device_free(re->info->info.dev); - } - evas_render_engine_software_generic_clean(&re->generic); free(re); --
[EGIT] [core/efl] master 01/01: Ecore/Wayland: fix memory issue on exit.
jackdanielz pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=067753eb2eae9e09cdb54b11aa610fab3716419c commit 067753eb2eae9e09cdb54b11aa610fab3716419c Author: Daniel Zaoui Date: Mon Sep 8 13:44:07 2014 +0300 Ecore/Wayland: fix memory issue on exit. When the application exits, an event cancels the DnD, that invokes the Wayland release of data source but this was not setting an internal pointer to NULL. ecore_wl_shutdown was then trying to use the same Wayland API on the non-set internal pointer (via _ecore_wl_input_del), that was leading to a segmentation fault. This bug never occurred because some bug in Copy&Paste was preventing it to reach this part of code. --- src/lib/ecore_wayland/ecore_wl_dnd.c | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_wayland/ecore_wl_dnd.c b/src/lib/ecore_wayland/ecore_wl_dnd.c index 875cf5d..7136ba5 100644 --- a/src/lib/ecore_wayland/ecore_wl_dnd.c +++ b/src/lib/ecore_wayland/ecore_wl_dnd.c @@ -764,12 +764,17 @@ _ecore_wl_dnd_source_cb_send_free(void *data EINA_UNUSED, void *event) } static void -_ecore_wl_dnd_source_cb_cancelled(void *data EINA_UNUSED, struct wl_data_source *source) +_ecore_wl_dnd_source_cb_cancelled(void *data, struct wl_data_source *source) { + Ecore_Wl_Input *input; + LOGFN(__FILE__, __LINE__, __FUNCTION__); + if (!(input = data)) return; + /* FIXME: Raise an Ecore_Wl_Event here */ wl_data_source_destroy(source); + if (input->data_source == source) input->data_source = NULL; } static void --
Re: [E-devel] Blog about EO
On Sat, Aug 16, 2014 at 02:36:10PM +0900, Carsten Haitzler wrote: > About time i got back to blogging about EFL etc. > > https://phab.enlightenment.org/phame/live/1//post/yet_another_c_object_model_but_better/ > Hi, thanks for the explanations. Trying to reproduce the steps, the result of my tst.c differd a bit, though. I didn't get EOLIAN static void _tst_eo_base_constructor(Eo *obj, Tst_Data *pd) { eo_do_super(obj, TST_CLASS, eo_constructor()); } EOLIAN static void _tst_eo_base_destructor(Eo *obj, Tst_Data *pd) { eo_do_super(obj, TST_CLASS, eo_destructor()); } but instead EOLIAN static void _tst_class_constructor(Eo_Class *klass) { } EOLIAN static void _tst_class_destructor(Eo_Class *klass) { } Is there a more detailed documentation of the Eo-Syntax and API somewhere? Becuase the one on docs.enlightenment.org is not so verbose or maybe outdated. Is this because there will be more changes to Eo and things are not fixed yet? Thanks for your help, Jean Rene Dawin -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Rage 0.1.0 Release
Well, there is a very undesirable "feature" that has always been in rage. It resets the volume on every song change to nearly the max (~93%) here. It is the only player that I have seen doing this, or that I have been unable to configure to stop doing so. This is absolutely unwelcome in multiple aspects: - when I am wearing headphones, I don't want my ear to get blasted on every song change - when I am playing on speakers, again, I don't want the volume to change suddenly Questions: 1. Is there any way for rage to remember the last used volume? And not set it to nearly the max every time? 2. Alternatively, is there a way for rage to use a soft volume control? That way, I can manually set the system volume and I don't care about rage's own volume control - it can set the soft volume to max as it desires 3. What is the volume control inside rage? There seems to be none. Clicking on the volume icon or scrolling over it does nothing. On Sun, Aug 24, 2014 at 9:48 PM, Carsten Haitzler wrote: > So I have released the first version of Rage. Version **0.1.0** > > It is a simple video and audio player intended to be slick yet simplistic, > much > like Mplayer. You can provide 1 or more files to play on the command-line or > just DND files onto the rage window to insert them into the playlist. You can > get a visual representation of everything on the playlist by hitting the / > key, > or just hovering your mouse over the right side of the window. Mouse back over > the left side of the window ti dismiss it or press the key again. It has a > full > complement of key controls if you see the README for the full list. It will > automatically search for album art for music files, if not already cached, and > display that. It even generates thumbnails for the timeline of a video and > allows you to preview the position on mouseover of the position bar at the > bottom of the window. > > A feature list at this point: > > * Play video and audio files > * Support a playlist via command-line > * Insert to playlist via DND > * Controls hide on mouse idle, and appear on mouse movement > * Fullscreen mode support with automatic "no blank" support > * Playlist visual previews and controls > * Subtitle file support > * Supports Gstreamer 0.10, Gstreamer 1.x, Xine and VLC as media engines via > Emotion modules > * Selection of media back-end via command-line > * Album art fetch and caching > * Video thumbnail timeline generation and caching > * Works with any Evas engine (OpenGL acceleration, pure software etc.) > * Works in X11, Wayland and Framebuffer direct support > * Accelerated seek on keyboard fowrard/reverse > * Drag gestures for seeking > * Special different UI modes for pure audio and video > > If you want to see more go to the about page at > https://www.enlightenment.org/p.php?p=about/rage > > http://download.enlightenment.org/rel/apps/rage/rage-0.1.0.tar.gz > http://git.enlightenment.org/apps/rage.git > > -- > - Codito, ergo sum - "I code, therefore I am" -- > The Rasterman (Carsten Haitzler)ras...@rasterman.com > > > -- > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Blog about EO
Hi, On 09/08/14 16:16, Jean Rene Dawin wrote: > On Sat, Aug 16, 2014 at 02:36:10PM +0900, Carsten Haitzler wrote: >> About time i got back to blogging about EFL etc. >> >> https://phab.enlightenment.org/phame/live/1//post/yet_another_c_object_model_but_better/ >> > Hi, > > thanks for the explanations. Trying to reproduce the steps, the result of my > tst.c > differd a bit, though. I didn't get > > EOLIAN static void > _tst_eo_base_constructor(Eo *obj, Tst_Data *pd) > { >eo_do_super(obj, TST_CLASS, eo_constructor()); > } > > EOLIAN static void > _tst_eo_base_destructor(Eo *obj, Tst_Data *pd) > { >eo_do_super(obj, TST_CLASS, eo_destructor()); > } > > but instead > > EOLIAN static void > _tst_class_constructor(Eo_Class *klass) > { > } > EOLIAN static void > _tst_class_destructor(Eo_Class *klass) > { > } > > Is there a more detailed documentation of the Eo-Syntax and API somewhere? > Becuase the one on docs.enlightenment.org is not so verbose or maybe outdated. > Is this because there will be more changes to Eo and things are not fixed yet? > > Thanks for your help, > > Jean Rene Dawin > > -- > Want excitement? > Manually upgrade your production database. > When you want reliability, choose Perforce > Perforce version control. Predictably reliable. > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > You should try with Base.constructor instead of class.constructor (same for the destructor). You can look at https://phab.enlightenment.org/w/eolian/ for more docs on the syntax. One of all the EFL Daniels -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Blog about EO
ReHi, On 09/08/14 16:42, Daniel Zaoui wrote: > Hi, > > On 09/08/14 16:16, Jean Rene Dawin wrote: >> On Sat, Aug 16, 2014 at 02:36:10PM +0900, Carsten Haitzler wrote: >>> About time i got back to blogging about EFL etc. >>> >>> https://phab.enlightenment.org/phame/live/1//post/yet_another_c_object_model_but_better/ >>> >> Hi, >> >> thanks for the explanations. Trying to reproduce the steps, the result of my >> tst.c >> differd a bit, though. I didn't get >> >> EOLIAN static void >> _tst_eo_base_constructor(Eo *obj, Tst_Data *pd) >> { >>eo_do_super(obj, TST_CLASS, eo_constructor()); >> } >> >> EOLIAN static void >> _tst_eo_base_destructor(Eo *obj, Tst_Data *pd) >> { >>eo_do_super(obj, TST_CLASS, eo_destructor()); >> } >> >> but instead >> >> EOLIAN static void >> _tst_class_constructor(Eo_Class *klass) >> { >> } >> EOLIAN static void >> _tst_class_destructor(Eo_Class *klass) >> { >> } >> >> Is there a more detailed documentation of the Eo-Syntax and API somewhere? >> Becuase the one on docs.enlightenment.org is not so verbose or maybe >> outdated. >> Is this because there will be more changes to Eo and things are not fixed >> yet? >> >> Thanks for your help, >> >> Jean Rene Dawin >> >> -- >> Want excitement? >> Manually upgrade your production database. >> When you want reliability, choose Perforce >> Perforce version control. Predictably reliable. >> http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk >> ___ >> enlightenment-devel mailing list >> enlightenment-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> > You should try with Base.constructor instead of class.constructor (same > for the destructor). I meant Eo.Base.constructor. > > You can look at https://phab.enlightenment.org/w/eolian/ for more docs > on the syntax. > > One of all the EFL Daniels > > -- > Want excitement? > Manually upgrade your production database. > When you want reliability, choose Perforce > Perforce version control. Predictably reliable. > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
Re: [E-devel] Blog about EO
On 08/09/14 14:50, Daniel Zaoui wrote: > ReHi, > > On 09/08/14 16:42, Daniel Zaoui wrote: >> Hi, >> >> On 09/08/14 16:16, Jean Rene Dawin wrote: >>> On Sat, Aug 16, 2014 at 02:36:10PM +0900, Carsten Haitzler wrote: About time i got back to blogging about EFL etc. https://phab.enlightenment.org/phame/live/1//post/yet_another_c_object_model_but_better/ >>> Hi, >>> >>> thanks for the explanations. Trying to reproduce the steps, the result of >>> my tst.c >>> differd a bit, though. I didn't get >>> >>> EOLIAN static void >>> _tst_eo_base_constructor(Eo *obj, Tst_Data *pd) >>> { >>> eo_do_super(obj, TST_CLASS, eo_constructor()); >>> } >>> >>> EOLIAN static void >>> _tst_eo_base_destructor(Eo *obj, Tst_Data *pd) >>> { >>> eo_do_super(obj, TST_CLASS, eo_destructor()); >>> } >>> >>> but instead >>> >>> EOLIAN static void >>> _tst_class_constructor(Eo_Class *klass) >>> { >>> } >>> EOLIAN static void >>> _tst_class_destructor(Eo_Class *klass) >>> { >>> } >>> >>> Is there a more detailed documentation of the Eo-Syntax and API somewhere? >>> Becuase the one on docs.enlightenment.org is not so verbose or maybe >>> outdated. >>> Is this because there will be more changes to Eo and things are not fixed >>> yet? >>> >>> Thanks for your help, >>> >>> Jean Rene Dawin >>> >>> -- >>> Want excitement? >>> Manually upgrade your production database. >>> When you want reliability, choose Perforce >>> Perforce version control. Predictably reliable. >>> http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk >>> ___ >>> enlightenment-devel mailing list >>> enlightenment-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >>> >> You should try with Base.constructor instead of class.constructor (same >> for the destructor). > > I meant Eo.Base.constructor. One important thing to mention is that while we try not to, we change the Eolian syntax every now and then. Same goes with some of the class names and hierarchy, so the blog post may not be a 1-1 to what's currently in. -- Tom. -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/efl] master 01/01: eolian: builtin complex types
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7786b963592187509900f246268b746cf18b15fd commit 7786b963592187509900f246268b746cf18b15fd Author: Daniel Kolesa Date: Mon Sep 8 14:52:49 2014 +0100 eolian: builtin complex types From now on, there are 5 builtin complex types, particularly accessor, array, iterator, hash and list. All other types are simple - they can't have a complex part. Also, the <> now binds to the type itself, not the pointer. More builtin complex types will be added as needed. --- src/lib/ecore_con/ecore_con_server.eo| 2 +- src/lib/eolian/Eolian.h | 14 ++--- src/lib/eolian/database_type.c | 5 - src/lib/eolian/database_type_api.c | 6 +- src/lib/eolian/database_validate.c | 1 + src/lib/eolian/eo_lexer.c| 6 -- src/lib/eolian/eo_lexer.h| 2 ++ src/lib/eolian/eo_parser.c | 36 +++- src/tests/eolian/data/complex_type.eo| 6 +++--- src/tests/eolian/data/object_impl.eo | 4 ++-- src/tests/eolian/data/object_impl_add.eo | 2 +- src/tests/eolian/data/typedef.eo | 2 +- src/tests/eolian/eolian_parsing.c| 5 + 13 files changed, 54 insertions(+), 37 deletions(-) diff --git a/src/lib/ecore_con/ecore_con_server.eo b/src/lib/ecore_con/ecore_con_server.eo index 83151cc..8f14bb3 100644 --- a/src/lib/ecore_con/ecore_con_server.eo +++ b/src/lib/ecore_con/ecore_con_server.eo @@ -51,7 +51,7 @@ class Ecore.Con.Server (Ecore.Con.Base) { get { } values { -const(Eina_List ) *clients; /*@ The list of clients on this server. */ +const(list) *clients; /*@ The list of clients on this server. */ } } connection_type { diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index ec1296a..320a2cb 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -143,6 +143,7 @@ typedef enum EOLIAN_TYPE_REGULAR, EOLIAN_TYPE_REGULAR_STRUCT, EOLIAN_TYPE_REGULAR_ENUM, + EOLIAN_TYPE_COMPLEX, EOLIAN_TYPE_POINTER, EOLIAN_TYPE_FUNCTION, EOLIAN_TYPE_STRUCT, @@ -1258,8 +1259,7 @@ EAPI Eina_Iterator *eolian_type_arguments_get(const Eolian_Type *tp); * @brief Get an iterator to all subtypes of a type. * * @param[in] tp the type. - * @return the iterator when @c tp is a regular/regular struct/class/pointer - * type. + * @return the iterator when @c tp is a complex type. * * @ingroup Eolian */ @@ -1505,11 +1505,11 @@ EAPI Eina_Stringshare *eolian_type_c_type_get(const Eolian_Type *tp); /* * @brief Get the name of the given type. You have to manually delete - * the stringshare. For EOLIAN_TYPE_REGULAR and EOLIAN_TYPE_REGULAR_STRUCT, - * this is for example "int". For EOLIAN_TYPE_STRUCT, EOLIAN_TYPE_STRUCT_OPAQUE - * and EOLIAN_TYPE_ALIAS, this is the name of the alias or of the struct. For - * EOLIAN_TYPE_CLASS, this can be "Button". Keep in mind that the name doesn't - * include namespaces for structs and aliases. + * the stringshare. For regular or complex types, this is for example "int". + * For EOLIAN_TYPE_STRUCT, EOLIAN_TYPE_STRUCT_OPAQUE and EOLIAN_TYPE_ALIAS, + * this is the name of the alias or of the struct. For EOLIAN_TYPE_CLASS, this + * can be "Button". Keep in mind that the name doesn't include namespaces for + * structs and aliases. * * @param[in] tp the type. * @return the name. diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c index efbd5ad..b74f080 100644 --- a/src/lib/eolian/database_type.c +++ b/src/lib/eolian/database_type.c @@ -216,6 +216,7 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name) return; } if ((tp->type == EOLIAN_TYPE_REGULAR + || tp->type == EOLIAN_TYPE_COMPLEX || tp->type == EOLIAN_TYPE_REGULAR_STRUCT || tp->type == EOLIAN_TYPE_REGULAR_ENUM || tp->type == EOLIAN_TYPE_VOID @@ -225,6 +226,7 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf *buf, const char *name) eina_strbuf_append(buf, "const "); } if (tp->type == EOLIAN_TYPE_REGULAR +|| tp->type == EOLIAN_TYPE_COMPLEX || tp->type == EOLIAN_TYPE_CLASS || tp->type == EOLIAN_TYPE_REGULAR_STRUCT || tp->type == EOLIAN_TYPE_REGULAR_ENUM) @@ -297,7 +299,8 @@ database_type_print(Eolian_Type *tp) printf("own("); if (tp->is_const) printf("const("); - if (tp->type == EOLIAN_TYPE_REGULAR || tp->type == EOLIAN_TYPE_CLASS) + if (tp->type == EOLIAN_TYPE_REGULAR || tp->type == EOLIAN_TYPE_COMPLEX +|| tp->type == EOLIAN_TYPE_CLASS) printf("%s", tp->full_name); else if (tp->type == EOLIAN_TYPE_VOID) printf("void"); diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index e80455d..f874ea8 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eo
[EGIT] [core/elementary] master 01/01: update according to latest eolian changes
q66 pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=b86f51f2797e785ac60d45185e4a0c53d50c93cb commit b86f51f2797e785ac60d45185e4a0c53d50c93cb Author: Daniel Kolesa Date: Mon Sep 8 14:58:57 2014 +0100 update according to latest eolian changes --- src/lib/elm_box.eo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elm_box.eo b/src/lib/elm_box.eo index 97ad15c..465e8b4 100644 --- a/src/lib/elm_box.eo +++ b/src/lib/elm_box.eo @@ -149,7 +149,7 @@ class Elm_Box (Elm_Widget) You must free this list with eina_list_free() once you are done with it. @ingroup Box */ -return: own(Eina_List *); +return: own(list*); } } } --
[EGIT] [core/elementary] master 01/01: CnP/Wayland: Fix window check for Wayland invocations.
jackdanielz pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=e2e569dfc7da3165af203ff3e45e5bb75175acf3 commit e2e569dfc7da3165af203ff3e45e5bb75175acf3 Author: Daniel Zaoui Date: Mon Sep 8 13:51:56 2014 +0300 CnP/Wayland: Fix window check for Wayland invocations. This was leading to never enter the cnp functions dedicated to Wayland, as the given object was not a window. The Copy And Paste test was not working for this reason. --- src/lib/elm_cnp.c | 36 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/lib/elm_cnp.c b/src/lib/elm_cnp.c index 3bd0af9..6aadc71 100644 --- a/src/lib/elm_cnp.c +++ b/src/lib/elm_cnp.c @@ -3838,7 +3838,7 @@ elm_cnp_selection_set(Evas_Object *obj, Elm_Sel_Type selection, return _x11_elm_cnp_selection_set(xwin, obj, selection, format, selbuf, buflen); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - if (elm_win_wl_window_get(obj)) + if (_wl_elm_widget_window_get(obj)) return _wl_elm_cnp_selection_set(obj, selection, format, selbuf, buflen); #endif return _local_elm_cnp_selection_set(obj, selection, format, selbuf, buflen); @@ -3856,7 +3856,7 @@ elm_cnp_selection_loss_callback_set(Evas_Object *obj, Elm_Sel_Type selection, _x11_elm_cnp_selection_loss_callback_set(obj, selection, func, data); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - if (elm_win_wl_window_get(obj)) + if (_wl_elm_widget_window_get(obj)) _wl_elm_cnp_selection_loss_callback_set(obj, selection, func, data); #endif _local_elm_cnp_selection_loss_callback_set(obj, selection, func, data); @@ -3872,7 +3872,7 @@ elm_object_cnp_selection_clear(Evas_Object *obj, Elm_Sel_Type selection) return _x11_elm_object_cnp_selection_clear(obj, selection); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - if (elm_win_wl_window_get(obj)) + if (_wl_elm_widget_window_get(obj)) return _wl_elm_cnp_selection_clear(obj, selection); #endif return _local_elm_object_cnp_selection_clear(obj, selection); @@ -3890,7 +3890,7 @@ elm_cnp_selection_get(Evas_Object *obj, Elm_Sel_Type selection, return _x11_elm_cnp_selection_get(xwin, obj, selection, format, datacb, udata); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - if (elm_win_wl_window_get(obj)) + if (_wl_elm_widget_window_get(obj)) return _wl_elm_cnp_selection_get(obj, selection, format, datacb, udata); #endif return _local_elm_cnp_selection_get(obj, selection, format, datacb, udata); @@ -3916,9 +3916,10 @@ elm_drop_target_add(Evas_Object *obj, Elm_Sel_Format format, dropcb, dropdata); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - return _wl_elm_drop_target_add(obj, format, entercb, enterdata, - leavecb, leavedata, poscb, posdata, - dropcb, dropdata); + if (_wl_elm_widget_window_get(obj)) + return _wl_elm_drop_target_add(obj, format, entercb, enterdata, +leavecb, leavedata, poscb, posdata, +dropcb, dropdata); #endif return _local_elm_drop_target_add(obj, format, entercb, enterdata, leavecb, leavedata, poscb, posdata, @@ -3939,8 +3940,9 @@ elm_drop_target_del(Evas_Object *obj, Elm_Sel_Format format, leavecb, leavedata, poscb, posdata, dropcb, dropdata); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - return _wl_elm_drop_target_del(obj, format, entercb, enterdata, - leavecb, leavedata, poscb, posdata, dropcb, dropdata); + if (_wl_elm_widget_window_get(obj)) + return _wl_elm_drop_target_del(obj, format, entercb, enterdata, + leavecb, leavedata, poscb, posdata, dropcb, dropdata); #endif return _local_elm_drop_target_del(obj); } @@ -3963,11 +3965,12 @@ elm_drag_start(Evas_Object *obj, Elm_Sel_Format format, const char *data, dragdone, donecbdata); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - return _wl_elm_drag_start(obj, format, data, action, - createicon, createdata, - dragpos, dragdata, - acceptcb, acceptdata, - dragdone, donecbdata); + if (_wl_elm_widget_window_get(obj)) + return _wl_elm_drag_start(obj, format, data, action, + createicon, createdata, + dragpos, dragdata, + acceptcb, acceptdata, + dragdone, donecbdata); #endif return _local_elm_drag_start(obj, format, data, action, createicon, createdata, @@ -3985,7 +3988,8 @@ elm_drag_action_set(Evas_Object *obj, Elm_Xdnd_Action action) return _x11_elm_drag_action_set(obj, action); #endif #ifdef HAVE_ELEMENTARY_WAYLAND - return _wl_elm_drag_action_set(obj, action); + if (_wl_elm_widge
[EGIT] [core/efl] master 02/02: ecore_evas/drm: Clarify error message if given device is not found.
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=dc7910a7efaef2cdad999c2e46d92f551924cf5e commit dc7910a7efaef2cdad999c2e46d92f551924cf5e Author: Stefan Schmidt Date: Mon Sep 8 16:16:57 2014 +0200 ecore_evas/drm: Clarify error message if given device is not found. While it is bad that the given device is not found we fall back here to the default one. Still good to mention it in the error message as it can be confusing when we read that the device could not be found be it still works. --- src/modules/ecore_evas/engines/drm/ecore_evas_drm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index e60516a..a312b77 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -453,7 +453,7 @@ _ecore_evas_drm_init(const char *device) /* try to find the device */ if (!(dev = ecore_drm_device_find(device, NULL))) { -ERR("Could not find drm device with name: %s", device); +ERR("Could not find drm device with name: %s. Falling back to default device.", device); /* try getting the default drm device */ if (!(dev = ecore_drm_device_find(NULL, NULL))) --
[EGIT] [core/efl] master 01/02: evas-drm: Remove unused function prototype.
stefan pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fd1b0053d704a3775a3657d30047f164842cf71a commit fd1b0053d704a3775a3657d30047f164842cf71a Author: Stefan Schmidt Date: Mon Sep 8 15:46:13 2014 +0200 evas-drm: Remove unused function prototype. --- src/modules/evas/engines/drm/evas_engine.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index e44ba6c..0d8582f 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -10,9 +10,6 @@ struct _Render_Engine Evas_Engine_Info_Drm *info; }; -/* local function prototypes */ -static void *_output_setup(Evas_Engine_Info_Drm *info, int w, int h); - /* function tables - filled in later (func and parent func) */ static Evas_Func func, pfunc; --
Re: [E-devel] Rage 0.1.0 Release
Volume reset issue was with Emotions gstreamer backends, fixed recently in EFL git by raster. 2014-09-08 16:36 GMT+03:00 P Purkayastha : > Well, there is a very undesirable "feature" that has always been in > rage. It resets the volume on every song change to nearly the max > (~93%) here. It is the only player that I have seen doing this, or > that I have been unable to configure to stop doing so. This is > absolutely unwelcome in multiple aspects: > - when I am wearing headphones, I don't want my ear to get blasted on > every song change > - when I am playing on speakers, again, I don't want the volume to > change suddenly > > Questions: > > 1. Is there any way for rage to remember the last used volume? And not > set it to nearly the max every time? > 2. Alternatively, is there a way for rage to use a soft volume > control? That way, I can manually set the system volume and I don't > care about rage's own volume control - it can set the soft volume to > max as it desires > 3. What is the volume control inside rage? There seems to be none. > Clicking on the volume icon or scrolling over it does nothing. > > > On Sun, Aug 24, 2014 at 9:48 PM, Carsten Haitzler > wrote: >> So I have released the first version of Rage. Version **0.1.0** >> >> It is a simple video and audio player intended to be slick yet simplistic, >> much >> like Mplayer. You can provide 1 or more files to play on the command-line or >> just DND files onto the rage window to insert them into the playlist. You can >> get a visual representation of everything on the playlist by hitting the / >> key, >> or just hovering your mouse over the right side of the window. Mouse back >> over >> the left side of the window ti dismiss it or press the key again. It has a >> full >> complement of key controls if you see the README for the full list. It will >> automatically search for album art for music files, if not already cached, >> and >> display that. It even generates thumbnails for the timeline of a video and >> allows you to preview the position on mouseover of the position bar at the >> bottom of the window. >> >> A feature list at this point: >> >> * Play video and audio files >> * Support a playlist via command-line >> * Insert to playlist via DND >> * Controls hide on mouse idle, and appear on mouse movement >> * Fullscreen mode support with automatic "no blank" support >> * Playlist visual previews and controls >> * Subtitle file support >> * Supports Gstreamer 0.10, Gstreamer 1.x, Xine and VLC as media engines via >> Emotion modules >> * Selection of media back-end via command-line >> * Album art fetch and caching >> * Video thumbnail timeline generation and caching >> * Works with any Evas engine (OpenGL acceleration, pure software etc.) >> * Works in X11, Wayland and Framebuffer direct support >> * Accelerated seek on keyboard fowrard/reverse >> * Drag gestures for seeking >> * Special different UI modes for pure audio and video >> >> If you want to see more go to the about page at >> https://www.enlightenment.org/p.php?p=about/rage >> >> http://download.enlightenment.org/rel/apps/rage/rage-0.1.0.tar.gz >> http://git.enlightenment.org/apps/rage.git >> >> -- >> - Codito, ergo sum - "I code, therefore I am" -- >> The Rasterman (Carsten Haitzler)ras...@rasterman.com >> >> >> -- >> Slashdot TV. >> Video for Nerds. Stuff that matters. >> http://tv.slashdot.org/ >> ___ >> enlightenment-devel mailing list >> enlightenment-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > -- > Want excitement? > Manually upgrade your production database. > When you want reliability, choose Perforce > Perforce version control. Predictably reliable. > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk > ___ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
[EGIT] [core/enlightenment] master 01/01: i10n: Fix copy and paste bug in error translation. We fail SVG here not PNG.
stefan pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=827e66ba2605a7586fc544a6e4bd3a6ff9a2ba7b commit 827e66ba2605a7586fc544a6e4bd3a6ff9a2ba7b Author: Stefan Schmidt Date: Mon Sep 8 17:55:03 2014 +0200 i10n: Fix copy and paste bug in error translation. We fail SVG here not PNG. This was really confusing. I always wondered why a message showed up in my E startup that it was not able to load PNG files. It clearly could do so. Even more confusing was that E did not shutdown immediately when detecting the PNG problem. Turns out that that it was simply a wrong translation. SVG failed. --- po/de.po | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/po/de.po b/po/de.po index 0d0c323..074814a 100644 --- a/po/de.po +++ b/po/de.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: Enlightenment DR17\n" "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n" -"POT-Creation-Date: 2014-06-23 08:15+0900\n" +"POT-Creation-Date: 2014-09-08 18:30+0200\n" "PO-Revision-Date: 2012-12-21 13:52+0100\n" "Last-Translator: Thomas Gstädtner \n" "Language-Team: E17-de\n" @@ -3941,13 +3941,13 @@ msgstr "" "Enlightenment entdeckte, dass Evas keine Buffercanvas erstellen konnte.\n" "Bitte überprüfen Sie Evas auf Softwarebufferengine-Unterstützung.\n" -#: src/bin/e_main.c:1466 +#: src/bin/e_main.c:1479 msgid "" "Enlightenment found Evas can't load SVG files. Check Evas has SVG loader " "support.\n" msgstr "" -"Enlightenment stellte fest, dass Evas keine PNG-Dateien laden kann.\n" -"Bitte überprüfen Sie Evas auf PNG-Loader-Unterstützung.\n" +"Enlightenment stellte fest, dass Evas keine SVG-Dateien laden kann.\n" +"Bitte überprüfen Sie Evas auf SVG-Loader-Unterstützung.\n" #: src/bin/e_main.c:1476 msgid "" --
[EGIT] [apps/terminology] master 01/04: Add debug messages
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=adb2d8404294dd986aa8b14dcdf84ab7c239f5e3 commit adb2d8404294dd986aa8b14dcdf84ab7c239f5e3 Author: Anisse Astier Date: Fri Sep 5 18:00:08 2014 +0200 Add debug messages --- src/bin/options_behavior.c | 1 - src/bin/termptysave.c | 10 -- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/bin/options_behavior.c b/src/bin/options_behavior.c index 6a9204b..88f88c2 100644 --- a/src/bin/options_behavior.c +++ b/src/bin/options_behavior.c @@ -548,7 +548,6 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) elm_slider_indicator_format_function_set(o, sback_indicator_units_format, (void(*)(char*))eina_stringshare_del); - elm_slider_min_max_set(o, 0, 1); /* http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogFloat */ union { float v; diff --git a/src/bin/termptysave.c b/src/bin/termptysave.c index db670a4..19615c7 100644 --- a/src/bin/termptysave.c +++ b/src/bin/termptysave.c @@ -60,7 +60,10 @@ _alloc_new(int size, unsigned char gen) } } // out of slots for new blocks - no null blocks - if (firstnull < 0) return NULL; + if (firstnull < 0) { + ERR("Cannot find new null blocks"); + return NULL; + } // so allocate a new block size = MEM_BLOCK_PAGES * MEM_PAGE_SIZE; @@ -69,7 +72,10 @@ _alloc_new(int size, unsigned char gen) // get mmaped anonymous memory so when freed it goes away from the system ptr = mmap(NULL, sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (ptr == MAP_FAILED) return NULL; + if (ptr == MAP_FAILED) { + ERR("Cannot allocate more memory with mmap MAP_ANONYMOUS"); + return NULL; + } // note - we SHOULD memset to 0, but we are assuming mmap anon give 0 pages //memset(ptr, 0, newsize); --
[EGIT] [apps/terminology] master 02/04: fix scrollback option
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=f1cb4c85a9d14190d05cb7b389059be59a73d528 commit f1cb4c85a9d14190d05cb7b389059be59a73d528 Author: Boris Faure Date: Sun Sep 7 16:36:44 2014 +0200 fix scrollback option --- src/bin/options_behavior.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/options_behavior.c b/src/bin/options_behavior.c index 88f88c2..1ae8138 100644 --- a/src/bin/options_behavior.c +++ b/src/bin/options_behavior.c @@ -555,8 +555,8 @@ options_behavior(Evas_Object *opbox, Evas_Object *term) } u; u.v = config->scrollback; u.c = (u.c >> 23) - 127; - elm_slider_value_set(o, u.c); elm_slider_min_max_set(o, 0.0, 19.0); + elm_slider_value_set(o, u.c); elm_box_pack_end(bx, o); evas_object_show(o); evas_object_smart_callback_add(o, "delay,changed", --
[EGIT] [apps/terminology] master 03/04: scrollback_save: cleanup
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=527bd7358e0401b0d52dde83c5cb486fa4a67737 commit 527bd7358e0401b0d52dde83c5cb486fa4a67737 Author: Boris Faure Date: Mon Sep 8 20:52:07 2014 +0200 scrollback_save: cleanup --- src/bin/termptyops.c | 5 +- src/bin/termptysave.c | 137 -- 2 files changed, 78 insertions(+), 64 deletions(-) diff --git a/src/bin/termptyops.c b/src/bin/termptyops.c index 8a13482..c901212 100644 --- a/src/bin/termptyops.c +++ b/src/bin/termptyops.c @@ -46,10 +46,7 @@ termpty_text_save_top(Termpty *ty, Termcell *cells, ssize_t w_max) if (!ty->back) ty->back = calloc(1, sizeof(Termsave *) * ty->backmax); if (ty->back[ty->backpos]) { -Termsave *ts2; - -ts2 = termpty_save_extract(ty->back[ty->backpos]); -termpty_save_free(ts2); +termpty_save_free(ty->back[ty->backpos]); ty->back[ty->backpos] = NULL; } ty->back[ty->backpos] = ts; diff --git a/src/bin/termptysave.c b/src/bin/termptysave.c index 19615c7..227b655 100644 --- a/src/bin/termptysave.c +++ b/src/bin/termptysave.c @@ -11,33 +11,62 @@ # endif #endif -#define MEM_PAGE_SIZE4096 #define MEM_ALLOC_ALIGN 16 -#define MEM_BLOCK_PAGES 32 #define MEM_BLOCKS 1024 +#define TS_MMAP_SIZE 131072 +#define TS_ALLOC_MASK (TS_MMAP_SIZE - 1) + typedef struct _Alloc Alloc; struct _Alloc { - int size, last, count; + unsigned int size, last, count, allocated; short slot; unsigned char gen; unsigned char __pad; }; +static int _blocks = 0; +static uint64_t _allocated = 0; static unsigned char cur_gen = 0; static Alloc *alloc[MEM_BLOCKS] = { 0 }; +static int +roundup_block_size(int sz) +{ + return MEM_ALLOC_ALIGN * ((sz + MEM_ALLOC_ALIGN - 1) / MEM_ALLOC_ALIGN); +} + +static Alloc * +_alloc_find(void *mem) +{ + unsigned char *memptr = mem; + int i; + + for (i = 0; i < MEM_BLOCKS; i++) + { +unsigned char *al; + +al = (unsigned char *)alloc[i]; +if (!al) continue; +if (memptr < al) continue; +if ((al + TS_MMAP_SIZE) <= memptr) continue; +return alloc[i]; + } + return NULL; +} + static void * _alloc_new(int size, unsigned char gen) { Alloc *al; unsigned char *ptr; - int newsize, sz, i, firstnull = -1; + unsigned int newsize, sz; + int i, firstnull = -1; // allocations sized up to nearest size alloc alignment - newsize = MEM_ALLOC_ALIGN * ((size + MEM_ALLOC_ALIGN - 1) / MEM_ALLOC_ALIGN); + newsize = roundup_block_size(size); for (i = 0; i < MEM_BLOCKS; i++) { if (!alloc[i]) @@ -55,26 +84,26 @@ _alloc_new(int size, unsigned char gen) ptr += alloc[i]->last; alloc[i]->last += newsize; alloc[i]->count++; + alloc[i]->allocated += newsize; + _allocated += newsize; return ptr; } } } // out of slots for new blocks - no null blocks if (firstnull < 0) { - ERR("Cannot find new null blocks"); - return NULL; +ERR("Cannot find new null blocks"); +return NULL; } // so allocate a new block - size = MEM_BLOCK_PAGES * MEM_PAGE_SIZE; - // size up to page size - sz = MEM_PAGE_SIZE * ((size + MEM_PAGE_SIZE - 1) / MEM_PAGE_SIZE); + sz = TS_MMAP_SIZE; // get mmaped anonymous memory so when freed it goes away from the system ptr = mmap(NULL, sz, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (ptr == MAP_FAILED) { - ERR("Cannot allocate more memory with mmap MAP_ANONYMOUS"); - return NULL; +ERR("Cannot allocate more memory with mmap MAP_ANONYMOUS"); +return NULL; } // note - we SHOULD memset to 0, but we are assuming mmap anon give 0 pages @@ -84,66 +113,54 @@ _alloc_new(int size, unsigned char gen) al->size = sz; al->last = sizeof(Alloc) + newsize; al->count = 1; + al->allocated = newsize; al->slot = firstnull; al->gen = gen; + _allocated += newsize; alloc[al->slot] = al; ptr = (unsigned char *)al; ptr += sizeof(Alloc); return ptr; } -static void -_alloc_free(Alloc *al) -{ - al->count--; - if (al->count > 0) return; - alloc[al->slot] = NULL; - munmap(al, al->size); -} - -static Alloc * -_alloc_find(void *mem) -{ - unsigned char *memptr = mem; - int i; - - for (i = 0; i < MEM_BLOCKS; i++) - { -unsigned char *ptr; - -ptr = (unsigned char *)alloc[i]; -if (!ptr) continue; -if (memptr < ptr) continue; -if ((memptr - ptr) > 0x0fff) continue; -if (((size_t)memptr - (size_t)ptr) < (size_t)(alloc[i]->size)) - return alloc[i]; - } - return NULL; -} - static void * -_mem_new(int size) +_ts_new(int size) { void *ptr; - + i
[EGIT] [apps/terminology] master 04/04: do not crash when the scrollback mempool is OOM
billiob pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=815a357ad9a13772a8dcaaf0f8a26c358f559359 commit 815a357ad9a13772a8dcaaf0f8a26c358f559359 Author: Boris Faure Date: Mon Sep 8 21:27:33 2014 +0200 do not crash when the scrollback mempool is OOM --- src/bin/termpty.c| 57 +++- src/bin/termptyops.c | 2 ++ 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/bin/termpty.c b/src/bin/termpty.c index 186cde8..c16f6f9 100644 --- a/src/bin/termpty.c +++ b/src/bin/termpty.c @@ -613,7 +613,7 @@ termpty_line_length(const Termcell *cells, ssize_t nb_cells) } static int -termpty_line_find_top(Termpty *ty, int y_end) +termpty_line_find_top(Termpty *ty, int y_end, int *top) { int y_start = y_end; Termsave *ts; @@ -623,25 +623,34 @@ termpty_line_find_top(Termpty *ty, int y_end) if (TERMPTY_SCREEN(ty, ty->w - 1, y_start - 1).att.autowrapped) y_start--; else - return y_start; + { + *top = y_start; + return 0; + } } while (-y_start < ty->backscroll_num) { ts = termpty_save_extract(ty->back[(y_start + ty->backpos - 1 + ty->backmax) % ty->backmax]); +if (!ts) + return -1; ty->back[(y_start + ty->backpos - 1 + ty->backmax) % ty->backmax] = ts; if (ts->cell[ts->w - 1].att.autowrapped) y_start--; else - return y_start; + { + *top = y_start; + return 0; + } } - return y_start; + *top = y_start; + return 0; } static int termpty_line_rewrap(Termpty *ty, int y_start, int y_end, Termcell *screen2, Termsave **back2, -int w2, int y2_end) +int w2, int y2_end, int *new_y_start) { int x, x2, y, y2, y2_start; int len, len_last, len_remaining, copy_width, ts2_width; @@ -656,6 +665,8 @@ termpty_line_rewrap(Termpty *ty, int y_start, int y_end, { ts = termpty_save_extract(ty->back[(y_end + ty->backpos + ty->backmax) % ty->backmax]); +if (!ts) + return -1; ty->back[(y_end + ty->backpos + ty->backmax) % ty->backmax] = ts; len_last = ts->w; } @@ -668,7 +679,11 @@ termpty_line_rewrap(Termpty *ty, int y_start, int y_end, else { if (y2_start < 0) - back2[y2_start + ty->backmax] = termpty_save_new(0); + { + back2[y2_start + ty->backmax] = termpty_save_new(0); + if (!back2[y2_start + ty->backmax]) + return -1; + } return y2_start; } if (-y2_start > ty->backmax) @@ -696,6 +711,8 @@ termpty_line_rewrap(Termpty *ty, int y_start, int y_end, { ts = termpty_save_extract(ty->back[(y + ty->backpos + ty->backmax) % ty->backmax]); + if (!ts) + return -1; ty->back[(y + ty->backpos + ty->backmax) % ty->backmax] = ts; line = ts->cell; } @@ -717,6 +734,8 @@ termpty_line_rewrap(Termpty *ty, int y_start, int y_end, { ts2_width = MIN(len_remaining, w2); ts2 = termpty_save_new(ts2_width); + if (!ts2) + return -1; line2 = ts2->cell; back2[y2 + ty->backmax] = ts2; } @@ -738,15 +757,16 @@ termpty_line_rewrap(Termpty *ty, int y_start, int y_end, x = 0; y++; } - return y2_start; + *new_y_start = y2_start; + return 0; } void termpty_resize(Termpty *ty, int new_w, int new_h) { - Termcell *new_screen; - Termsave **new_back; + Termcell *new_screen = NULL; + Termsave **new_back = NULL; int y_start, y_end, new_y_start = 0, new_y_end; int i, altbuf = 0; @@ -773,8 +793,7 @@ termpty_resize(Termpty *ty, int new_w, int new_h) if (!ty->screen2) { ERR("memerr"); -free(new_screen); -return; +goto bad; } new_back = calloc(sizeof(Termsave *), ty->backmax); @@ -782,9 +801,14 @@ termpty_resize(Termpty *ty, int new_w, int new_h) new_y_end = new_h - 1; while ((y_end >= -ty->backscroll_num) && (new_y_end >= -ty->backmax)) { -y_start = termpty_line_find_top(ty, y_end); -new_y_start = termpty_line_rewrap(ty, y_start, y_end, new_screen, -new_back, new_w, new_y_end); +if (termpty_line_find_top(ty, y_end, &y_start) < 0) + goto bad; +if (termpty_line_rewrap(ty, y_start, y_end, new_screen, +new_back, new_w, new_y_end, +&new_y_start) < 0)
[EGIT] [core/efl] master 01/01: eet: call LOCK_CACHE before altering Eet_File
jeyzu pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2e5a5d6656e9fca4ee756819dcd17e875225e447 commit 2e5a5d6656e9fca4ee756819dcd17e875225e447 Author: Jérémy Zurcher Date: Mon Sep 8 21:38:01 2014 +0200 eet: call LOCK_CACHE before altering Eet_File even if not necessary in this particular case, do as in eet_mmap() and eet_open(), lock the cache before altering Eet_File struct. fix CID 1039366 1039367 1039368 1039369 --- src/lib/eet/eet_lib.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/eet/eet_lib.c b/src/lib/eet/eet_lib.c index 69d8bca..daa6d3b 100644 --- a/src/lib/eet/eet_lib.c +++ b/src/lib/eet/eet_lib.c @@ -1397,6 +1397,9 @@ eet_memopen_read(const void *data, if (!ef) return NULL; + /* eet_internal_read expects the cache lock to be held when it is called */ + LOCK_CACHE; + INIT_FILE(ef); ef->ed = NULL; ef->path = NULL; @@ -1413,8 +1416,6 @@ eet_memopen_read(const void *data, ef->sha1_length = 0; ef->readfp_owned = EINA_FALSE; - /* eet_internal_read expects the cache lock to be held when it is called */ - LOCK_CACHE; ef = eet_internal_read(ef); UNLOCK_CACHE; return ef; --
[E-devel] [Emotion] version 1.7 on the Arm device
Dear All, Hello. I have tried to play a video file using the emotion_basic_example with gstreamer module. It seems that the _emotion_open_done(); should be called which changes the sd->open, but it is not called. So the emotion_object_play_set(); could not call the module's play method. There would be a reason why I could not open a file. Is there anything that I have to check, or know? As the title, I'm using old Emotion on the arm device. Thank you for response in advance. Sincerely, Shinwoo Kim. -- Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk ___ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel