[EGIT] [core/efl] master 01/01: eo: Rename efl_ref_get to efl_ref_count
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d5dbcdabd14c1ddf01f22b4865487ecce272c055 commit d5dbcdabd14c1ddf01f22b4865487ecce272c055 Author: Andy Williams Date: Wed Nov 8 09:30:42 2017 + eo: Rename efl_ref_get to efl_ref_count --- src/bindings/cxx/eo_cxx/eo_ops.hh | 2 +- src/lib/ecore/efl_io_copier.c | 6 +- src/lib/ecore_con/efl_net_dialer_http.c| 2 +- src/lib/ecore_con/efl_net_server_fd.c | 2 +- src/lib/ecore_con/efl_net_server_simple.c | 2 +- src/lib/ecore_con/efl_net_server_ssl.c | 2 +- src/lib/ecore_con/efl_net_server_windows.c | 2 +- src/lib/eio/eio_model.c| 2 +- src/lib/elementary/elm_atspi_bridge.c | 2 +- src/lib/eo/Eo.h| 8 +-- src/lib/eo/eo.c| 4 +- src/lib/evas/canvas/evas_main.c| 12 ++-- src/tests/elementary/elm_test_win.c| 4 +- src/tests/eo/suite/eo_test_general.c | 88 +++--- 14 files changed, 69 insertions(+), 69 deletions(-) diff --git a/src/bindings/cxx/eo_cxx/eo_ops.hh b/src/bindings/cxx/eo_cxx/eo_ops.hh index 8d385fd212..1f08d8d738 100644 --- a/src/bindings/cxx/eo_cxx/eo_ops.hh +++ b/src/bindings/cxx/eo_cxx/eo_ops.hh @@ -42,7 +42,7 @@ unref(const Eo *obj) inline int ref_get(const Eo *obj) { - return ::efl_ref_get(obj); + return ::efl_ref_count(obj); } inline Eina_Bool diff --git a/src/lib/ecore/efl_io_copier.c b/src/lib/ecore/efl_io_copier.c index dc4d1e17dd..e9d7d2313b 100644 --- a/src/lib/ecore/efl_io_copier.c +++ b/src/lib/ecore/efl_io_copier.c @@ -42,7 +42,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("copier={%p %s, refs=%d, closed=%d, done=%d, buf=%zd}", \ o, \ efl_class_name_get(efl_class_get(o)), \ -efl_ref_get(o), \ +efl_ref_count(o), \ efl_io_closer_closed_get(o), \ pd->done, \ pd->buf ? eina_binbuf_length_get(pd->buf): 0); \ @@ -52,7 +52,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("source={%p %s, refs=%d, can_read=%d, eos=%d, closed=%d}", \ pd->source, \ efl_class_name_get(efl_class_get(pd->source)), \ - efl_ref_get(pd->source), \ + efl_ref_count(pd->source), \ efl_io_reader_can_read_get(pd->source), \ efl_io_reader_eos_get(pd->source), \ efl_isa(pd->source, EFL_IO_CLOSER_MIXIN) ? \ @@ -63,7 +63,7 @@ static void _efl_io_copier_read(Eo *o, Efl_Io_Copier_Data *pd); DBG("destination={%p %s, refs=%d, can_write=%d, closed=%d}", \ pd->destination, \ efl_class_name_get(efl_class_get(pd->destination)), \ - efl_ref_get(pd->destination), \ + efl_ref_count(pd->destination), \ efl_io_writer_can_write_get(pd->destination), \ efl_isa(pd->destination, EFL_IO_CLOSER_MIXIN) ? \ efl_io_closer_closed_get(pd->destination) : 0); \ diff --git a/src/lib/ecore_con/efl_net_dialer_http.c b/src/lib/ecore_con/efl_net_dialer_http.c index cbc3e033e8..d553bad134 100644 --- a/src/lib/ecore_con/efl_net_dialer_http.c +++ b/src/lib/ecore_con/efl_net_dialer_http.c @@ -820,7 +820,7 @@ _efl_net_dialer_http_curl_safe_end(Eo *o, Efl_Net_Dialer_Http_Data *pd, CURL *ea Eina_Future *f; int refs; - refs = efl_ref_get(o); + refs = efl_ref_count(o); if (refs >= 2) { pd->in_curl_callback--; diff --git a/src/lib/ecore_con/efl_net_server_fd.c b/src/lib/ecore_con/efl_net_server_fd.c index c04b6c2186..5fede8d0f7 100644 --- a/src/lib/ecore_con/efl_net_server_fd.c +++ b/src/lib/ecore_con/efl_net_server_fd.c @@ -513,7 +513,7 @@ _efl_net_server_fd_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Fd_Data return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); diff --git a/src/lib/ecore_con/efl_net_server_simple.c b/src/lib/ecore_con/efl_net_server_simple.c index 0dba2f6a83..479948b2e0 100644 --- a/src/lib/ecore_con/efl_net_server_simple.c +++ b/src/lib/ecore_con/efl_net_server_simple.c @@ -46,7 +46,7 @@ _efl_net_server_simple_efl_net_server_client_announce(Eo *o, Efl_Net_Server_Simp return EINA_TRUE; } - if (efl_ref_get(client) == 1) /* users must take a reference themselves */ + if (efl_ref_count(client) == 1) /* users must take a reference themselves */ { DBG("client %s was not handled, closing it...", efl_net_socket_address_remote_get(client)); d
[EGIT] [tools/examples] master 01/01: Update to efl_ref_count
ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/examples.git/commit/?id=b3f6e19657378eafa77f031cc2ed05c6126896ac commit b3f6e19657378eafa77f031cc2ed05c6126896ac Author: Andy Williams Date: Wed Nov 8 09:34:28 2017 + Update to efl_ref_count --- c-eo-intro/src/eo_intro_main.c | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/c-eo-intro/src/eo_intro_main.c b/c-eo-intro/src/eo_intro_main.c index 55fef85..cd5d51e 100644 --- a/c-eo-intro/src/eo_intro_main.c +++ b/c-eo-intro/src/eo_intro_main.c @@ -16,7 +16,7 @@ static const char* _parent_name_get(Eo *obj) { // Object has been destroyed - if (efl_ref_get(obj) == 0) return "-"; + if (efl_ref_count(obj) == 0) return "-"; // Object has no parent if (efl_parent_get(obj) == NULL) return "none"; // Otherwise, return parent's name @@ -29,9 +29,9 @@ _status_print() { printf("Object: %6s %6s %6s\n", "ROOT", "CHILD1", "CHILD2"); printf("Refcount: %6d %6d %6d\n", - efl_ref_get(_root_ref), - efl_ref_get(_child1_ref), - efl_ref_get(_child2_ref)); + efl_ref_count(_root_ref), + efl_ref_count(_child1_ref), + efl_ref_count(_child2_ref)); printf("Parent: %6s %6s %6s\n\n", _parent_name_get(_root_ref), _parent_name_get(_child1_ref), --
[EGIT] [core/efl] master 01/02: Efl: add class interfaces (color/text/size)
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=2f838acd4ef0f3f914bb5d03081aef2fd1f412b5 commit 2f838acd4ef0f3f914bb5d03081aef2fd1f412b5 Author: Jee-Yong Um Date: Wed Nov 8 19:04:26 2017 +0900 Efl: add class interfaces (color/text/size) Summary: implement Efl.Gfx.Class interface Reviewers: jpeg, cedric Subscribers: taxi2se, herdsman Differential Revision: https://phab.enlightenment.org/D4403 --- src/Makefile_Edje.am | 1 + src/Makefile_Efl.am | 3 + src/lib/edje/Edje_Eo.h| 1 + src/lib/edje/Edje_Legacy.h| 143 +++- src/lib/edje/edje_global.eo | 12 ++ src/lib/edje/edje_main.c | 5 + src/lib/edje/edje_object.eo | 226 ++--- src/lib/edje/edje_private.h | 2 + src/lib/edje/edje_smart.c | 10 ++ src/lib/edje/edje_types.eot | 9 - src/lib/edje/edje_util.c | 231 ++ src/lib/efl/Efl.h | 3 + src/lib/efl/interfaces/efl_gfx_color_class.eo | 85 ++ src/lib/efl/interfaces/efl_gfx_size_class.eo | 49 ++ src/lib/efl/interfaces/efl_gfx_text_class.eo | 43 + src/lib/efl/interfaces/efl_gfx_types.eot | 8 + src/lib/efl/interfaces/efl_interfaces_main.c | 4 + src/lib/efl/interfaces/efl_text_properties.eo | 4 +- 18 files changed, 545 insertions(+), 294 deletions(-) diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index b4299f171e..cf7d9f2655 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -5,6 +5,7 @@ edje_eolian_files = \ lib/edje/efl_canvas_layout_calc.eo \ lib/edje/efl_canvas_layout_signal.eo \ lib/edje/efl_canvas_layout_group.eo \ + lib/edje/edje_global.eo \ lib/edje/edje_object.eo \ lib/edje/efl_canvas_layout_part.eo \ lib/edje/efl_canvas_layout_part_box.eo \ diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am index c4e866aaa3..f9cdc7fe3c 100644 --- a/src/Makefile_Efl.am +++ b/src/Makefile_Efl.am @@ -76,6 +76,9 @@ efl_eolian_files = \ lib/efl/interfaces/efl_ui_menu.eo \ lib/efl/interfaces/efl_ui_autorepeat.eo \ lib/efl/interfaces/efl_ui_format.eo \ + lib/efl/interfaces/efl_gfx_color_class.eo \ + lib/efl/interfaces/efl_gfx_text_class.eo \ + lib/efl/interfaces/efl_gfx_size_class.eo \ $(efl_eolian_legacy_files) \ $(NULL) diff --git a/src/lib/edje/Edje_Eo.h b/src/lib/edje/Edje_Eo.h index 877f3bea07..37c5db5ce0 100644 --- a/src/lib/edje/Edje_Eo.h +++ b/src/lib/edje/Edje_Eo.h @@ -3,6 +3,7 @@ #include "efl_canvas_layout_calc.eo.h" #include "efl_canvas_layout_signal.eo.h" #include "efl_canvas_layout_group.eo.h" +#include "edje_global.eo.h" #include "edje_object.eo.h" #include "edje_edit.eo.h" diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h index 24a913675f..edd30e25da 100644 --- a/src/lib/edje/Edje_Legacy.h +++ b/src/lib/edje/Edje_Legacy.h @@ -1213,6 +1213,147 @@ EAPI Eina_Bool edje_object_color_class_set(Evas_Object *obj, const char * color_ EAPI Eina_Bool edje_object_color_class_get(const Evas_Object *obj, const char * color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); /** + * @brief Delete the object color class. + * + * This function deletes any values at the object level for the specified + * object and color class. + * + * Deleting the color class will revert it to the values defined by + * edje_color_class_set() or the color class defined in the theme file. + * + * Deleting the color class will emit the signal "color_class,del" for the + * given Edje object. + * + * @param[in] color_class The color class to be deleted. + * + * @ingroup Edje_Object + */ +EAPI void edje_object_color_class_del(Evas_Object *obj, const char *color_class); + +/** + * @brief Delete all color classes defined in object level. + * + * This function deletes any color classes defined in object level. + * Clearing color classes will revert the color of all edje parts to + * the values defined in global level or theme file. + * + * @return @c true, on success or @c false, on error + * + * @since 1.17.0 + * + * @ingroup Edje_Object + */ +EAPI Eina_Bool edje_object_color_class_clear(const Evas_Object *obj); + +/** + * @brief Sets Edje text class. + * + * This function sets the text class for the Edje. + * + * @param[in] text_class The text class name + * @param[in] font Font name + * @param[in] size Font Size + * + * @return @c true, on success or @c false, on error + * + * @ingroup Edje_Object + */ +EAPI Eina_Bool edje_object_text_class_set(Evas_Object *obj, const char * text_class, const char *font, Evas_Font_Size size); + +/** + * @brief Gets font and font size from edje
[EGIT] [core/efl] master 02/02: edje: Hide edje_global from the rest of the world
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cc1ed7183c9ccab57ffd010338e781744fa424ad commit cc1ed7183c9ccab57ffd010338e781744fa424ad Author: Jean-Philippe Andre Date: Wed Nov 8 19:29:13 2017 +0900 edje: Hide edje_global from the rest of the world Call provider_find on the loop (or basically any object) with the color/text/size class interface instead, to find it. The main loop is the main holder of those objects. Note: This makes use of provider_find instead of direct access to the variable, in order to self-test the code. In theory release builds will not do this and user directly the variable. --- src/Makefile_Edje.am| 2 +- src/lib/ecore/ecore_main.c | 2 +- src/lib/edje/edje_global.eo | 4 src/lib/edje/edje_main.c| 21 +++-- src/lib/edje/edje_private.h | 16 ++-- src/lib/edje/edje_smart.c | 9 - src/lib/edje/edje_util.c| 28 +--- 7 files changed, 52 insertions(+), 30 deletions(-) diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index cf7d9f2655..e1a1973430 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -5,7 +5,6 @@ edje_eolian_files = \ lib/edje/efl_canvas_layout_calc.eo \ lib/edje/efl_canvas_layout_signal.eo \ lib/edje/efl_canvas_layout_group.eo \ - lib/edje/edje_global.eo \ lib/edje/edje_object.eo \ lib/edje/efl_canvas_layout_part.eo \ lib/edje/efl_canvas_layout_part_box.eo \ @@ -19,6 +18,7 @@ edje_eolian_type_files = \ lib/edje/edje_types.eot edje_eolian_priv_files = \ + lib/edje/edje_global.eo \ $(NULL) edje_eolian_c = $(edje_eolian_files:%.eo=%.eo.c) diff --git a/src/lib/ecore/ecore_main.c b/src/lib/ecore/ecore_main.c index 4b7c93d79c..f85d2cdc0d 100644 --- a/src/lib/ecore/ecore_main.c +++ b/src/lib/ecore/ecore_main.c @@ -3056,7 +3056,7 @@ _efl_loop_efl_object_constructor(Eo *obj, Efl_Loop_Data *pd) efl_event_callback_array_add(obj, event_catcher_watch(), pd); - pd->providers = eina_hash_pointer_new((void*) efl_unref); + pd->providers = eina_hash_pointer_new(EINA_FREE_CB(efl_unref)); return obj; } diff --git a/src/lib/edje/edje_global.eo b/src/lib/edje/edje_global.eo index 07ebba5130..f5001f2e73 100644 --- a/src/lib/edje/edje_global.eo +++ b/src/lib/edje/edje_global.eo @@ -1,5 +1,9 @@ class Edje.Global (Efl.Object, Efl.Gfx.Color_Class, Efl.Gfx.Text_Class, Efl.Gfx.Size_Class) { + [[An internal object that manages global color, text and size classes for + the whole application. Individual edje objects also support the same + features. + ]] data: null; implements { Efl.Gfx.Color_Class.color_class { get; set; } diff --git a/src/lib/edje/edje_main.c b/src/lib/edje/edje_main.c index f5980cc67e..bd96acca4b 100644 --- a/src/lib/edje/edje_main.c +++ b/src/lib/edje/edje_main.c @@ -13,6 +13,8 @@ Eina_Mempool *_edje_real_part_state_mp = NULL; Eina_Cow *_edje_calc_params_map_cow = NULL; Eina_Cow *_edje_calc_params_physics_cow = NULL; +Edje_Global *_edje_global_obj = NULL; + static const Edje_Calc_Params_Map default_calc_map = { { 0, 0, 0 }, { 0.0, 0.0, 0.0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0.0, 0.0 }, NULL, 0 }; @@ -82,6 +84,11 @@ edje_init(void) _edje_scale = FROM_DOUBLE(1.0); _edje_global_obj = efl_add(EDJE_GLOBAL_CLASS, NULL); + if (!_edje_global_obj || + !efl_loop_register(ecore_main_loop_get(), EFL_GFX_COLOR_CLASS_INTERFACE, _edje_global_obj) || + !efl_loop_register(ecore_main_loop_get(), EFL_GFX_TEXT_CLASS_INTERFACE, _edje_global_obj) || + !efl_loop_register(ecore_main_loop_get(), EFL_GFX_SIZE_CLASS_INTERFACE, _edje_global_obj)) + goto shutdown_efreet; _edje_edd_init(); _edje_text_init(); @@ -141,8 +148,15 @@ shutdown_all: _edje_text_class_hash_free(); _edje_size_class_hash_free(); _edje_edd_shutdown(); - efl_del(_edje_global_obj); - _edje_global_obj = NULL; + if (_edje_global_obj) + { +efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_COLOR_CLASS_INTERFACE, _edje_global_obj); +efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_TEXT_CLASS_INTERFACE, _edje_global_obj); +efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_SIZE_CLASS_INTERFACE, _edje_global_obj); +efl_del(_edje_global_obj); +_edje_global_obj = NULL; + } +shutdown_efreet: efreet_shutdown(); shutdown_evas: evas_shutdown(); @@ -195,6 +209,9 @@ _edje_shutdown_core(void) _edje_text_class_hash_free(); _edje_size_class_hash_free(); _edje_edd_shutdown(); + efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_COLOR_CLASS_INTERFACE, _edje_global_obj); + efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_TEXT_CLASS_INTERFACE, _edje_global_obj); + efl_loop_unregister(ecore_main_loop_get(), EFL_GFX_SIZE_CLASS_INTERFACE, _edje_global_obj); efl_del(_ed
[EGIT] [core/efl] master 01/01: edje: Oops. Remove edje_global include as well.
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=10b6eb627abe7f0419b1c76ff73faf90274e940b commit 10b6eb627abe7f0419b1c76ff73faf90274e940b Author: Jean-Philippe Andre Date: Wed Nov 8 20:16:28 2017 +0900 edje: Oops. Remove edje_global include as well. --- src/lib/edje/Edje_Eo.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/edje/Edje_Eo.h b/src/lib/edje/Edje_Eo.h index 37c5db5ce0..877f3bea07 100644 --- a/src/lib/edje/Edje_Eo.h +++ b/src/lib/edje/Edje_Eo.h @@ -3,7 +3,6 @@ #include "efl_canvas_layout_calc.eo.h" #include "efl_canvas_layout_signal.eo.h" #include "efl_canvas_layout_group.eo.h" -#include "edje_global.eo.h" #include "edje_object.eo.h" #include "edje_edit.eo.h" --
[EGIT] [core/efl] master 01/01: elput - re-enable switches (power buttons, lid etc.)
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7a7abb043add0af083c46305824d8c341daf2374 commit 7a7abb043add0af083c46305824d8c341daf2374 Author: Carsten Haitzler (Rasterman) Date: Tue Nov 7 11:04:03 2017 +0900 elput - re-enable switches (power buttons, lid etc.) this is needed for devices that no longer produce aspi events for these. otherwise good luck getting any event on lid open/close or on pressing the power button. this also stops hiding switch events from libinput and now you can get switch events to find lid or tablet mode switching changes. @fix --- src/lib/elput/Elput.h | 27 +++ src/lib/elput/elput.c | 3 +++ src/lib/elput/elput_evdev.c | 37 - 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/lib/elput/Elput.h b/src/lib/elput/Elput.h index b05536130b..db62c52d10 100644 --- a/src/lib/elput/Elput.h +++ b/src/lib/elput/Elput.h @@ -38,6 +38,7 @@ typedef enum ELPUT_DEVICE_CAPS_TABLET_TOOL = (1 << 3), ELPUT_DEVICE_CAPS_TABLET_PAD = (1 << 4), ELPUT_DEVICE_CAPS_GESTURE = (1 << 5), + ELPUT_DEVICE_CAPS_SWITCH = (1 << 6), } Elput_Device_Caps; /* opaque structure to represent an input manager */ @@ -112,6 +113,29 @@ typedef struct Elput_Event_Pointer_Motion double dy_unaccel; } Elput_Event_Pointer_Motion; +/** @since 1.21 */ +typedef enum +{ + ELPUT_SWITCH_TYPE_LID = 1, + ELPUT_SWITCH_TYPE_TABLET_MODE, +} Elput_Switch_Type; + +/** @since 1.21 */ +typedef enum +{ + ELPUT_SWITCH_STATE_OFF = 0, + ELPUT_SWITCH_STATE_ON = 1, +} Elput_Switch_State; + +/** @since 1.21 */ +typedef struct _Elput_Event_Switch +{ + Elput_Device *device; + uint64_t time_usec; + Elput_Switch_Type type; + Elput_Switch_State state; +} Elput_Event_Switch; + EAPI extern int ELPUT_EVENT_SEAT_CAPS; EAPI extern int ELPUT_EVENT_SEAT_FRAME; @@ -122,6 +146,9 @@ EAPI extern int ELPUT_EVENT_SESSION_ACTIVE; /** @since 1.19 */ EAPI extern int ELPUT_EVENT_POINTER_MOTION; +/** @since 1.21 */ +EAPI extern int ELPUT_EVENT_SWITCH; + /** * @file * @brief Ecore functions for dealing with libinput diff --git a/src/lib/elput/elput.c b/src/lib/elput/elput.c index 9519129759..f3cda411ea 100644 --- a/src/lib/elput/elput.c +++ b/src/lib/elput/elput.c @@ -13,6 +13,7 @@ EAPI int ELPUT_EVENT_MODIFIERS_SEND = 0; EAPI int ELPUT_EVENT_DEVICE_CHANGE = 0; EAPI int ELPUT_EVENT_SESSION_ACTIVE = 0; EAPI int ELPUT_EVENT_POINTER_MOTION = 0; +EAPI int ELPUT_EVENT_SWITCH = 0; EAPI int elput_event_session_ready = 0; EAPI int @@ -41,6 +42,7 @@ elput_init(void) ELPUT_EVENT_DEVICE_CHANGE = ecore_event_type_new(); ELPUT_EVENT_SESSION_ACTIVE = ecore_event_type_new(); ELPUT_EVENT_POINTER_MOTION = ecore_event_type_new(); +ELPUT_EVENT_SWITCH = ecore_event_type_new(); elput_event_session_ready = ecore_event_type_new(); } @@ -71,6 +73,7 @@ elput_shutdown(void) ELPUT_EVENT_DEVICE_CHANGE, ELPUT_EVENT_SESSION_ACTIVE, ELPUT_EVENT_POINTER_MOTION, + ELPUT_EVENT_SWITCH, elput_event_session_ready); eina_log_domain_unregister(_elput_log_dom); diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c index 09d75932f8..afa42df68c 100644 --- a/src/lib/elput/elput_evdev.c +++ b/src/lib/elput/elput_evdev.c @@ -1595,6 +1595,20 @@ _tablet_tool_tip(struct libinput_device *idev, struct libinput_event_tablet_tool _pointer_button_send(dev, press[state]); } +static void +_switch_toggle(struct libinput_device *idev, struct libinput_event_switch *event) +{ + Elput_Event_Switch *ev; + + ev = calloc(1, sizeof(Elput_Event_Switch)); + if (!ev) return; + ev->device = libinput_device_get_user_data(idev); + ev->time_usec = libinput_event_switch_get_time_usec(event); + ev->type = (Elput_Switch_Type)libinput_event_switch_get_switch(event); + ev->state = (Elput_Switch_State)libinput_event_switch_get_switch_state(event); + ecore_event_add(ELPUT_EVENT_SWITCH, ev, NULL, NULL); +} + int _evdev_event_process(struct libinput_event *event) { @@ -1642,6 +1656,9 @@ _evdev_event_process(struct libinput_event *event) case LIBINPUT_EVENT_TABLET_TOOL_TIP: /* is this useful? */ _tablet_tool_tip(idev, libinput_event_get_tablet_tool_event(event)); break; + case LIBINPUT_EVENT_SWITCH_TOGGLE: +_switch_toggle(idev, libinput_event_get_switch_event(event)); +break; default: ret = 0; break; @@ -1670,7 +1687,6 @@ _evdev_device_create(Elput_Seat *seat, struct libinput_device *device) edev->refs = 1; edev->seat = seat; edev->device = device; - edev->caps = 0; edev->ow = seat->manager->output_w; edev->oh = seat->manager->output_h; @@ -1679,13 +1695,14 @@ _evdev_device_create(Elput_Se
[EGIT] [website/www-content] master 01/01: Wiki media playground:evasgl-graphics-pipeline.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=0f400cd98b1114909a37dce61b1cf45a4739 commit 0f400cd98b1114909a37dce61b1cf45a4739 Author: Gareth Halfacree Date: Wed Nov 8 05:54:53 2017 -0800 Wiki media playground:evasgl-graphics-pipeline.png uploaded by Gareth Halfacree --- media/playground/evasgl-graphics-pipeline.png | Bin 0 -> 51464 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/evasgl-graphics-pipeline.png b/media/playground/evasgl-graphics-pipeline.png new file mode 100644 index ..614c9856 Binary files /dev/null and b/media/playground/evasgl-graphics-pipeline.png differ --
[EGIT] [website/www-content] master 01/01: Wiki media playground:evasgl-rasterization.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=4aa65c54aa88e0cf4f413107aecabd5b52f6483c commit 4aa65c54aa88e0cf4f413107aecabd5b52f6483c Author: Gareth Halfacree Date: Wed Nov 8 05:58:07 2017 -0800 Wiki media playground:evasgl-rasterization.png uploaded by Gareth Halfacree --- media/playground/evasgl-rasterization.png | Bin 0 -> 3831 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/evasgl-rasterization.png b/media/playground/evasgl-rasterization.png new file mode 100644 index ..8b035ced Binary files /dev/null and b/media/playground/evasgl-rasterization.png differ --
[EGIT] [website/www-content] master 01/01: Wiki media playground:evasgl-triangle-assembly.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=81cde0e48a056a5a2a9e0e8e15c73037bc2d6214 commit 81cde0e48a056a5a2a9e0e8e15c73037bc2d6214 Author: Gareth Halfacree Date: Wed Nov 8 05:57:54 2017 -0800 Wiki media playground:evasgl-triangle-assembly.png uploaded by Gareth Halfacree --- media/playground/evasgl-triangle-assembly.png | Bin 0 -> 16726 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/evasgl-triangle-assembly.png b/media/playground/evasgl-triangle-assembly.png new file mode 100644 index ..a21c9e46 Binary files /dev/null and b/media/playground/evasgl-triangle-assembly.png differ --
[EGIT] [core/enlightenment] master 01/01: more E_BITFIELD conversions
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=99db9e2557f94464b490fd7af3c90d1e3a65c111 commit 99db9e2557f94464b490fd7af3c90d1e3a65c111 Author: Mike Blumenkrantz Date: Wed Nov 8 09:22:24 2017 -0500 more E_BITFIELD conversions --- src/bin/e_bryce.c | 12 ++--- src/bin/e_client.c | 2 +- src/bin/e_comp_object.c| 56 +-- src/bin/e_comp_wl_extensions.c | 6 +-- src/bin/e_comp_x.c | 2 +- src/bin/e_dbusmenu.c | 2 +- src/bin/e_deskmirror.c | 8 +-- src/bin/e_exec.c | 2 +- src/bin/e_flowlayout.c | 20 +++ src/bin/e_fm.c | 62 +++--- src/bin/e_gadcon.c | 8 +-- src/bin/e_gadget.c | 4 +- src/bin/e_gadget_runner.c | 4 +- src/bin/e_icon.c | 14 ++--- src/bin/e_ilist.c | 8 +-- src/bin/e_int_config_comp.c| 4 +- src/bin/e_int_config_modules.c | 2 +- src/bin/e_layout.c | 2 +- src/bin/e_msg.c| 2 +- src/bin/e_pixmap.c | 6 +-- src/bin/e_powersave.c | 2 +- src/bin/e_scrollframe.c| 22 src/bin/e_slidecore.c | 2 +- src/bin/e_slider.c | 2 +- src/bin/e_slidesel.c | 4 +- src/bin/e_thumb.c | 6 +-- src/bin/e_video.c | 2 +- src/bin/e_widget.c | 8 +-- src/bin/e_widget_bgpreview.c | 4 +- src/bin/e_widget_filepreview.c | 24 - src/bin/e_widget_fsel.c| 4 +- src/bin/e_widget_toolbar.c | 6 +-- src/bin/e_win.c| 14 ++--- src/bin/e_xsettings.c | 2 +- src/bin/e_zoomap.c | 6 +-- .../conf_bindings/e_int_config_keybindings.c | 2 +- src/modules/conf_intl/e_int_config_intl.c | 2 +- src/modules/conf_theme/e_int_config_theme.c| 2 +- src/modules/connman/agent.c| 2 +- src/modules/everything/evry_view.c | 14 ++--- src/modules/fileman/e_fwin.c | 4 +- src/modules/ibar/e_mod_main.c | 14 ++--- src/modules/ibox/e_mod_main.c | 4 +- src/modules/lokker/lokker.c| 6 +-- src/modules/pager/e_mod_main.c | 22 src/modules/pager/gadget/pager.c | 24 - src/modules/pager_plain/e_mod_main.c | 22 src/modules/sysinfo/batman/batman_fallback.c | 4 +- src/modules/tasks/e_mod_main.c | 8 +-- src/modules/teamwork/e_mod_tw.c| 6 +-- src/modules/tiling/e_mod_tiling.c | 6 +-- src/modules/winlist/e_winlist.c| 4 +- src/modules/wireless/connman.c | 10 ++-- src/modules/wireless/wireless.c| 2 +- src/modules/xwayland/dnd.c | 2 +- 55 files changed, 247 insertions(+), 247 deletions(-) diff --git a/src/bin/e_bryce.c b/src/bin/e_bryce.c index 4369e3140..74871ac4a 100644 --- a/src/bin/e_bryce.c +++ b/src/bin/e_bryce.c @@ -43,12 +43,12 @@ typedef struct Bryce Eina_Bool autohide; unsigned int version; - Eina_Bool hidden : 1; - Eina_Bool animating : 1; - Eina_Bool mouse_in : 1; - Eina_Bool noshadow : 1; - Eina_Bool size_changed : 1; - Eina_Bool editing : 1; + Eina_Bool hidden E_BITFIELD; + Eina_Bool animating E_BITFIELD; + Eina_Bool mouse_in E_BITFIELD; + Eina_Bool noshadow E_BITFIELD; + Eina_Bool size_changed E_BITFIELD; + Eina_Bool editing E_BITFIELD; } Bryce; typedef struct Bryces diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 6ea96054c..aa35610d5 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3238,7 +3238,7 @@ e_client_res_change_geometry_restore(E_Client *ec) { struct { - unsigned char valid : 1; + unsigned char valid E_BITFIELD; int x, y, w, h; struct { diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index d7130d2cc..c1a7941c7 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -101,34 +101,34 @@ typedef struct _E_Comp_Object unsigned int ani
[EGIT] [website/www-content] master 01/01: Wiki page eo-intro.md changed with summary [created] by Xavi Artigas
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=5f68f4fff9e42f3be019f1abcfa72315b5eee3c0 commit 5f68f4fff9e42f3be019f1abcfa72315b5eee3c0 Author: Xavi Artigas Date: Wed Nov 8 06:34:20 2017 -0800 Wiki page eo-intro.md changed with summary [created] by Xavi Artigas --- pages/develop/tutorial/c/eo-intro.md.txt | 289 +++ 1 file changed, 289 insertions(+) diff --git a/pages/develop/tutorial/c/eo-intro.md.txt b/pages/develop/tutorial/c/eo-intro.md.txt new file mode 100644 index ..072ad6ab --- /dev/null +++ b/pages/develop/tutorial/c/eo-intro.md.txt @@ -0,0 +1,289 @@ +--- +~~Title: Introduction to Eo~~ +--- + +# Introduction to Eo: Creating and destroying objects # + +The Eo generic object system was designed to provide **Object-Oriented capabilities** to the EFL. Eo objects are at the core of almost every EFL entity (like Windows, Buttons or Timers), providing lifecycle management and inheritance abilities, for example. + +This tutorial will show you the basics of creating and destroying Eo objects, along with **Reference Counting**, the technique at the heart of the Eo object lifecycle management. + +Due to its fundamental nature, this tutorial is more theoretic than the average. The concepts being explained are crucial, though, so its reading is highly encouraged. If you are familiar with Reference Counting, it should be a breeze. + +## Prerequisites ## + +* Read the [Setting up the Development Environment](/develop/setup/c/) guide so you are able to build and run EFL applications. +* Read the [Hello World tutorial](hello-word.md) so you know the basics of building an EFL application. + +## Step One: Object Creation and Destruction ## + +Start with the basic EFL application skeleton from the [Hello World tutorial](hello-word.md) and add some placeholder methods that will be filled later on: + +```c +#define EFL_EO_API_SUPPORT 1 +#define EFL_BETA_API_SUPPORT 1 + +#include +#include +#include + +// Create our test hierarchy +static void +_obj_create() +{ +} + +// Destroy the test hierarchy +static void +_obj_destroy() +{ +} + +EAPI_MAIN void +efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) +{ + // Create all objects + _obj_create(); + + // Destroy all objects + _obj_destroy(); + + // Exit + efl_exit(0); +} +EFL_MAIN() +``` + +Sensibly enough, the objects will be created in ``_obj_create()``, and will be destroyed in ``_obj_destroy()``. + +Also define some global pointers to keep track of the created objects. In a real application you won't be using global variables, but they help keep these first tutorials as simple as possible. Put this line after the includes: + +```c +Eo *_root; +``` + +This tutorial will use generic ``Eo *`` pointers to store the objects; your programs can use them too, or use more specific types like ``Efl_Ui_Win *`` or ``Efl_Ui_Button *``. EFL methods will accept both types (generic and specific) and perform runtime checks to ensure that you provide objects of the type a method is expecting. + +Now, fill-in the object creation method: + +```c +static void +_obj_create() +{ + // First create a root element + _root = efl_add(EFL_MODEL_ITEM_CLASS, NULL, + efl_name_set(efl_added, "Root")); +} +``` + +``efl_add()`` is one of the most commonly-used methods in EFL so it requires careful inspection. It mainly does **three** separate things: + +* Creates a new object of the type (**class**) specified in the first parameter. +* Sets the new object as a child of the already existing object specified in the second parameter. +* Calls a list of methods to further initialize or configure the new object. + +In the code snippet above, an object of type ``EFL_MODEL_ITEM_CLASS`` is being created, set as a child of no one (the ``NULL`` parameter) and ``efl_name_set()`` is used to configure the object (as explained below). + +The particular kind of object being created in this tutorial (``EFL_MODEL_ITEM_CLASS``) is irrelevant. It was chosen because it does not need configuration and is therefore easier to use. + +You can use as many configuration calls inside ``efl_add()`` as you need, since it accepts an infinite number of parameters. Also, configuration calls can use the special symbol ``efl_added`` which refers to the object being created. Together, these two powerful features make object creation code smaller and more compact: You could create an object, configure it and add it to a scene without even requiring a variable to store it! + +In this example, ``efl_name_set()`` is used to name the new object "Root" (note the ``efl_added`` parameter being used). + +Finally, the return value of ``efl_add()`` is the new object, with type ``Eo *`` which you can safely assign to a pointer of the specific type you requested, or keep the generic ``Eo *``, as you prefer. In this case, the pointer is st
[EGIT] [website/www-content] master 01/01: Wiki page eo-intro.md changed with summary [] by Xavi Artigas
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=3c2287e95f476f1a2e60e9ec388f83ab614054ca commit 3c2287e95f476f1a2e60e9ec388f83ab614054ca Author: Xavi Artigas Date: Wed Nov 8 07:03:40 2017 -0800 Wiki page eo-intro.md changed with summary [] by Xavi Artigas --- pages/develop/tutorial/c/eo-intro.md.txt | 20 ++-- 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/pages/develop/tutorial/c/eo-intro.md.txt b/pages/develop/tutorial/c/eo-intro.md.txt index 072ad6ab..dcfc5e2c 100644 --- a/pages/develop/tutorial/c/eo-intro.md.txt +++ b/pages/develop/tutorial/c/eo-intro.md.txt @@ -2,11 +2,11 @@ ~~Title: Introduction to Eo~~ --- -# Introduction to Eo: Creating and destroying objects # +# Introduction to Eo: Creating and Destroying Objects # -The Eo generic object system was designed to provide **Object-Oriented capabilities** to the EFL. Eo objects are at the core of almost every EFL entity (like Windows, Buttons or Timers), providing lifecycle management and inheritance abilities, for example. +The Eo generic object system was designed to provide *Object-Oriented capabilities* to the EFL. Eo objects are at the core of almost every EFL entity (like Windows, Buttons or Timers), providing lifecycle management and inheritance abilities, for example. -This tutorial will show you the basics of creating and destroying Eo objects, along with **Reference Counting**, the technique at the heart of the Eo object lifecycle management. +This tutorial will show you the basics of creating and destroying Eo objects, along with *Reference Counting*, the technique at the heart of the Eo object lifecycle management. Due to its fundamental nature, this tutorial is more theoretic than the average. The concepts being explained are crucial, though, so its reading is highly encouraged. If you are familiar with Reference Counting, it should be a breeze. @@ -105,7 +105,7 @@ A common approach to this problem is to use the **Reference Counting** technique The advantage of this technique is that objects can be automatically destroyed when their internal reference counter reaches 0, because it means that nobody is using them anymore. -### Reference Counting and ``efl_add()`` ### +### Reference Counting and efl_add() ### Eo objects created through ``efl_add()`` have a starting reference count of 1, meaning that there is one piece of code using them. **It is very important to understand which one is this piece of code**, because it will be responsible for returning the reference. It is easy, though: @@ -175,7 +175,7 @@ efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED) EFL_MAIN() ``` -## Step Two: A more complex hierarchy ## +## Step Two: A More Complex Hierarchy ## In this second step more objects will be added forming a hierarchy. This will give you more hands-on training with the concepts you acquired in the previous step. @@ -284,6 +284,14 @@ At the end of this tutorial you have learned: * ``efl_add()`` creates objects with **one reference**, which belongs to their parent. You don't have to do anything to destroy the objects. * If you do not provide a parent to ``efl_add()`` then the reference belongs to **you**, and you have to return it when you are done working with the object using ``efl_unref()``. +The following tutorial builds on top of this one, adding instrumentation calls to display the actual values of the different reference counters. + ## Further Reading ## +[Introduction to Eo 2](eo-intro-2.md) +:Part two of this tutorial + +[Setting up the Development Environment](/develop/setup/c/) +:Read this before trying to develop with the EFL -[The following tutorial](eo-intro-2.md) builds on top of this one, adding instrumentation calls to display the actual values of the different reference counters. \ No newline at end of file +[Hello World tutorial](hello-word.md) +:Teaches the basic EFL application skeleton --
[EGIT] [core/efl] master 02/02: eolian: enable cyclic imports of eo files
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=70ee11af84bf81a16eefdf577ce4e4ecb62dcdef commit 70ee11af84bf81a16eefdf577ce4e4ecb62dcdef Author: Daniel Kolesa Date: Wed Nov 8 16:46:14 2017 +0100 eolian: enable cyclic imports of eo files --- src/lib/eolian/eo_parser.c | 16 +--- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index db8878a5c7..a231e722e1 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -2176,21 +2176,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) } else is_eo = EINA_TRUE; } - if (eina_hash_find(_parsingeos, found)) - { -pop_strbuf(ls); -snprintf(errbuf, sizeof(errbuf), - "cyclic import '%s'", ls->t.value.s); -eo_lexer_syntax_error(ls, errbuf); - } - pop_strbuf(ls); - if (!eo_parser_database_fill(found, !is_eo, NULL)) - { -pop_strbuf(ls); -snprintf(errbuf, sizeof(errbuf), - "error while parsing import '%s'", ls->t.value.s); -eo_lexer_syntax_error(ls, errbuf); - } + eina_hash_set(_defereos, eina_strbuf_string_get(buf), found); pop_strbuf(ls); eo_lexer_get(ls); check_next(ls, ';'); --
[EGIT] [core/efl] master 01/02: eolian: simplify dependency parsing and cut down on hash lookups
q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5c2611d93a58bff942e49202053cad3e0090540d commit 5c2611d93a58bff942e49202053cad3e0090540d Author: Daniel Kolesa Date: Wed Nov 8 16:12:40 2017 +0100 eolian: simplify dependency parsing and cut down on hash lookups --- src/lib/eolian/eo_parser.c | 35 +++ src/lib/eolian/eo_parser.h | 2 +- src/lib/eolian/eolian_database.c | 8 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index da03709c38..db8878a5c7 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -672,18 +672,20 @@ parse_struct_attrs(Eo_Lexer *ls, Eina_Bool is_enum, Eina_Bool *is_extern, } } -static void +static Eolian_Class * _parse_dep(Eo_Lexer *ls, const char *fname, const char *name) { if (eina_hash_find(_parsingeos, fname)) - return; - if (!eo_parser_database_fill(fname, EINA_FALSE)) + return NULL; + Eolian_Class *cl = NULL; + if (!eo_parser_database_fill(fname, EINA_FALSE, &cl) || !cl) { char buf[PATH_MAX]; eo_lexer_context_restore(ls); snprintf(buf, sizeof(buf), "error parsing dependency '%s'", name); eo_lexer_syntax_error(ls, buf); } + return cl; } static Eolian_Type * @@ -1515,13 +1517,12 @@ parse_part(Eo_Lexer *ls) char *fnm = database_class_to_filename(nm); if (!compare_class_file(bnm, fnm)) { +Eolian_Class *dep = NULL; const char *fname = eina_hash_find(_filenames, fnm); eina_stringshare_del(bnm); free(fnm); if (fname) - _parse_dep(ls, fname, nm); -/* FIXME: pass unit properly */ -Eolian_Class *dep = (Eolian_Class *)eolian_class_get_by_name(NULL, nm); + dep = _parse_dep(ls, fname, nm); if (!dep) { char ebuf[PATH_MAX]; @@ -2031,9 +2032,7 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool check_inherit, snprintf(ebuf, sizeof(ebuf), "unknown inherit '%s'", iname); eo_lexer_syntax_error(ls, ebuf); } - _parse_dep(ls, fname, iname); - /* FIXME: pass unit properly */ - Eolian_Class *dep = (Eolian_Class *)eolian_class_get_by_name(NULL, iname); + Eolian_Class *dep = _parse_dep(ls, fname, iname); if (!dep) { char ebuf[PATH_MAX]; @@ -2185,7 +2184,7 @@ parse_unit(Eo_Lexer *ls, Eina_Bool eot) eo_lexer_syntax_error(ls, errbuf); } pop_strbuf(ls); - if (!eo_parser_database_fill(found, !is_eo)) + if (!eo_parser_database_fill(found, !is_eo, NULL)) { pop_strbuf(ls); snprintf(errbuf, sizeof(errbuf), @@ -2498,10 +2497,14 @@ end: } Eina_Bool -eo_parser_database_fill(const char *filename, Eina_Bool eot) +eo_parser_database_fill(const char *filename, Eina_Bool eot, Eolian_Class **fcl) { - if (eina_hash_find(_parsedeos, filename)) - return EINA_TRUE; + Eolian_Class *cl = eina_hash_find(_parsedeos, filename); + if (cl) + { +if (!eot && fcl) *fcl = cl; +return EINA_TRUE; + } eina_hash_set(_parsingeos, filename, (void *)EINA_TRUE); @@ -2521,8 +2524,6 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot) parse_chunk(ls, eot); if (eot) goto done; - Eolian_Class *cl; - if (!(cl = ls->tmp.kls)) { _eolian_log("eolian: no class for file '%s'", filename); @@ -2539,8 +2540,10 @@ eo_parser_database_fill(const char *filename, Eina_Bool eot) eina_hash_set(_classes, cl->full_name, cl); eina_hash_set(_classesf, cl->base.file, cl); + if (fcl) *fcl = cl; + done: - eina_hash_set(_parsedeos, filename, (void *)EINA_TRUE); + eina_hash_set(_parsedeos, filename, eot ? (void *)EINA_TRUE : cl); eina_hash_set(_parsingeos, filename, (void *)EINA_FALSE); eo_lexer_free(ls); diff --git a/src/lib/eolian/eo_parser.h b/src/lib/eolian/eo_parser.h index 08f5142388..7179107803 100644 --- a/src/lib/eolian/eo_parser.h +++ b/src/lib/eolian/eo_parser.h @@ -3,6 +3,6 @@ #include "eo_lexer.h" -Eina_Bool eo_parser_database_fill(const char *filename, Eina_Bool eot); +Eina_Bool eo_parser_database_fill(const char *filename, Eina_Bool eot, Eolian_Class **cl); #endif /* __EO_PARSER_H__ */ \ No newline at end of file diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index eacc5b94fb..0141450275 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -682,11 +682,11 @@ _eolian_file_parse_nodep(const char *filepath) if (!(eopath = eina_hash_find(is_eo ? _filenames : _tfilenames, filepath))) { char *vpath = eina_file_path_sanitize(filepath); -Eina_Bool ret = eo_parser_database_fill(vpath, !is_eo); +Eina_Bool ret = eo_parser_database_fill(vpath, !is_eo, NULL); free(vp
[EGIT] [core/enlightenment] enlightenment-0.22 01/20: create wl output resource when running in wl nested
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=efa975eb4e3a08ac36c00be5fc56f953751f69b6 commit efa975eb4e3a08ac36c00be5fc56f953751f69b6 Author: Mike Blumenkrantz Date: Fri Nov 3 12:15:30 2017 -0400 create wl output resource when running in wl nested --- src/modules/wl_wl/e_mod_main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/wl_wl/e_mod_main.c b/src/modules/wl_wl/e_mod_main.c index 850032631..9bad95953 100644 --- a/src/modules/wl_wl/e_mod_main.c +++ b/src/modules/wl_wl/e_mod_main.c @@ -16,6 +16,9 @@ _cb_sync_done(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) if ((w < 1) || (h < 1)) return ECORE_CALLBACK_PASS_ON; e_comp_canvas_resize(w * 2 / 3, h * 2 / 3); + e_comp_wl_output_init(NULL, NULL, NULL, + 0, 0, w * 2 / 3, h * 2 / 3, + 0, 0, 0, 0, 0, 0); if (!ecore_wl2_display_dmabuf_get(e_comp_wl->wl.client_disp)) e_comp_wl->dmabuf_disable = EINA_TRUE; --
[EGIT] [core/enlightenment] enlightenment-0.22 15/20: do not add iconify provider for luncher when creating a demo gadget
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2fbcb807aa25e9efd87f3deb98c747283d01e27f commit 2fbcb807aa25e9efd87f3deb98c747283d01e27f Author: Mike Blumenkrantz Date: Mon Nov 6 09:22:24 2017 -0500 do not add iconify provider for luncher when creating a demo gadget --- src/modules/luncher/bar.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c index a411493ef..58c0f07c1 100644 --- a/src/modules/luncher/bar.c +++ b/src/modules/luncher/bar.c @@ -1880,8 +1880,9 @@ _bar_created_cb(void *data, Evas_Object *obj, void *event_data EINA_UNUSED) if (inst->cfg->type != E_LUNCHER_MODULE_LAUNCH_ONLY) { -inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify", -_bar_iconify_start, inst); +if (inst->cfg->id != -1) + inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify", + _bar_iconify_start, inst); } _bar_fill(inst); --
[EGIT] [core/enlightenment] enlightenment-0.22 12/20: improve meson build module disabling
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2b2d2c00add7783735313be06c5c3b3c10051fb1 commit 2b2d2c00add7783735313be06c5c3b3c10051fb1 Author: Mike Blumenkrantz Date: Mon Nov 6 06:32:19 2017 -0500 improve meson build module disabling ref 61ddcb25e6075e5e6a5436dc6f981e45317c5d7d --- src/modules/meson.build | 8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/meson.build b/src/modules/meson.build index 01e335fc7..65f0b2fb8 100644 --- a/src/modules/meson.build +++ b/src/modules/meson.build @@ -78,6 +78,7 @@ mods = [ foreach m: mods desktop_only = false + disable = false no_icon = false cargs= '' data = [] @@ -87,13 +88,14 @@ foreach m: mods _dir_bin = join_paths(_dir, module_arch) opt = '-'.join(m.split('_')) - disable = get_option(opt) - if disable == true + if get_option(opt) == true subdir(m) + else +disable = true endif - if disable == true + if disable == false _inc2 = [] foreach i: inc --
[EGIT] [core/enlightenment] enlightenment-0.22 06/20: check meson module option state before executing subdir
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2e956cb089bc8abab2e222fd0ae6b28fb180ad78 commit 2e956cb089bc8abab2e222fd0ae6b28fb180ad78 Author: Mike Blumenkrantz Date: Fri Nov 3 14:35:43 2017 -0400 check meson module option state before executing subdir fix module disabling --- src/modules/meson.build | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/meson.build b/src/modules/meson.build index 337ce9c4c..01e335fc7 100644 --- a/src/modules/meson.build +++ b/src/modules/meson.build @@ -79,7 +79,6 @@ mods = [ foreach m: mods desktop_only = false no_icon = false - disable = false cargs= '' data = [] deps = [] @@ -87,11 +86,14 @@ foreach m: mods _dir = join_paths(dir_module_e, m) _dir_bin = join_paths(_dir, module_arch) - subdir(m) - opt = '-'.join(m.split('_')) + disable = get_option(opt) + + if disable == true +subdir(m) + endif - if get_option(opt) == true and disable == false + if disable == true _inc2 = [] foreach i: inc --
[EGIT] [core/enlightenment] enlightenment-0.22 18/20: prevent double shutdown of x11 compositor in xwayland mode
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=7a9a4b085502014acd44c5b5e225093a1ebe672c commit 7a9a4b085502014acd44c5b5e225093a1ebe672c Author: Mike Blumenkrantz Date: Mon Nov 6 13:58:53 2017 -0500 prevent double shutdown of x11 compositor in xwayland mode only do shutdown in xwl module if not actively shutting down --- src/modules/xwayland/e_mod_main.c | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/modules/xwayland/e_mod_main.c b/src/modules/xwayland/e_mod_main.c index f3826c3cd..7848595b3 100644 --- a/src/modules/xwayland/e_mod_main.c +++ b/src/modules/xwayland/e_mod_main.c @@ -451,8 +451,11 @@ xwl_shutdown(void) if (exs->sig_hdlr) ecore_event_handler_del(exs->sig_hdlr); free(exs); - if (e_comp_util_has_x()) e_comp_x_shutdown(); - ecore_x_shutdown(); + if (!stopping) + { +if (e_comp_util_has_x()) e_comp_x_shutdown(); +ecore_x_shutdown(); + } e_util_env_set("DISPLAY", NULL); } --
[EGIT] [core/enlightenment] enlightenment-0.22 04/20: make wl_pointer cursor handling state-based to correctly handle cursor visuals
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e4cf048112c3006cf279fc20d213fb9784ea810a commit e4cf048112c3006cf279fc20d213fb9784ea810a Author: Mike Blumenkrantz Date: Fri Nov 3 13:23:26 2017 -0400 make wl_pointer cursor handling state-based to correctly handle cursor visuals this fixes a lot of corner cases such as apps which set their cursor before receiving pointer.enter events --- src/bin/e_comp_wl.c | 24 --- src/bin/e_comp_wl.h | 9 ++ src/bin/e_comp_wl_input.c | 74 +-- src/bin/e_comp_wl_input.h | 2 ++ 4 files changed, 71 insertions(+), 38 deletions(-) diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index 141132c77..320830451 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -211,11 +211,15 @@ _e_comp_wl_mouse_in(E_Client *ec, Evas_Event_Mouse_In *ev) serial = wl_display_next_serial(e_comp_wl->wl.disp); EINA_LIST_FOREACH(e_comp_wl->ptr.resources, l, res) { +E_Comp_Wl_Pointer *ptr = wl_resource_get_user_data(res); + if (!e_comp_wl_input_pointer_check(res)) continue; if (wl_resource_get_client(res) != wc) continue; +ptr->entered = 1; wl_pointer_send_enter(res, serial, ec->comp_data->surface, wl_fixed_from_int(ev->canvas.x - ec->client.x), wl_fixed_from_int(ev->canvas.y - ec->client.y)); +e_comp_wl_input_pointer_cursor_update(ptr); } } @@ -267,8 +271,10 @@ _e_comp_wl_mouse_out(E_Client *ec) serial = wl_display_next_serial(e_comp_wl->wl.disp); EINA_LIST_FOREACH(e_comp_wl->ptr.resources, l, res) { +E_Comp_Wl_Pointer *ptr = wl_resource_get_user_data(res); if (!e_comp_wl_input_pointer_check(res)) continue; if (wl_resource_get_client(res) != wc) continue; +ptr->entered = 0; wl_pointer_send_leave(res, serial, ec->comp_data->surface); } } @@ -2591,11 +2597,21 @@ _e_comp_wl_client_cb_del(void *data EINA_UNUSED, E_Client *ec) _e_comp_wl_mouse_out(ec); else if (ec->comp_data->cursor) { -Evas_Object *o; +Eina_List *l; +struct wl_resource *res; + +EINA_LIST_FOREACH(e_comp_wl->ptr.resources, l, res) + { + E_Comp_Wl_Pointer *ptr = wl_resource_get_user_data(res); -ecore_evas_cursor_get(e_comp->ee, &o, NULL, NULL, NULL); -if (o == ec->frame) - e_pointer_object_set(e_comp->pointer, NULL, 0, 0); + if (ptr->cursor_set && (ptr->cursor == ec)) + { + ptr->cursor = NULL; + ptr->cursor_set = 0; + if (ptr->entered) +e_comp_wl_input_pointer_cursor_update(ptr); + } + } } if (ec->comp_data->aux_hint.hints) diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h index 199923a45..84212850d 100644 --- a/src/bin/e_comp_wl.h +++ b/src/bin/e_comp_wl.h @@ -5,6 +5,7 @@ typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data; typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State; typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data; typedef struct _E_Comp_Wl_Output E_Comp_Wl_Output; +typedef struct _E_Comp_Wl_Pointer E_Comp_Wl_Pointer; typedef struct E_Shell_Data E_Shell_Data; typedef struct Tizen_Extensions Tizen_Extensions; typedef void (*E_Comp_Wl_Grab_End_Cb)(E_Client*); @@ -394,6 +395,14 @@ struct _E_Comp_Wl_Output void *data; }; +struct _E_Comp_Wl_Pointer +{ + E_Client *cursor; + Evas_Point offset; + Eina_Bool entered : 1; + Eina_Bool cursor_set : 1; +}; + E_API Eina_Bool e_comp_wl_init(void); EINTERN void e_comp_wl_shutdown(void); diff --git a/src/bin/e_comp_wl_input.c b/src/bin/e_comp_wl_input.c index b1d50e959..e9f1bd385 100644 --- a/src/bin/e_comp_wl_input.c +++ b/src/bin/e_comp_wl_input.c @@ -43,39 +43,18 @@ _e_comp_wl_input_cb_resource_destroy(struct wl_client *client EINA_UNUSED, struc } static void -_e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client, struct wl_resource *resource EINA_UNUSED, uint32_t serial EINA_UNUSED, struct wl_resource *surface_resource, int32_t x, int32_t y) +_e_comp_wl_input_pointer_cb_cursor_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t serial EINA_UNUSED, struct wl_resource *surface_resource, int32_t x, int32_t y) { E_Client *ec; - Eina_Bool got_mouse = EINA_FALSE; - - E_CLIENT_FOREACH(ec) - { - if (e_object_is_del(E_OBJECT(ec))) continue; - if (e_pixmap_type_get(ec->pixmap) != E_PIXMAP_TYPE_WL) continue; - if (!ec->comp_data->surface) continue; - if (client != wl_resource_get_client(ec->comp_data->surface)) continue; - if (ec->mouse.in) - { -if (e_client_has_xwindow(ec)) - got_mouse = E_INSIDE(ec->mouse.current.m
[EGIT] [core/enlightenment] enlightenment-0.22 10/20: e sys - frix warning for less noise
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=24257c718a89d4225c93284e5911b45975fd1bbb commit 24257c718a89d4225c93284e5911b45975fd1bbb Author: Carsten Haitzler (Rasterman) Date: Mon Nov 6 10:24:37 2017 +0900 e sys - frix warning for less noise though act will not be set unless mnt is also true... this means less noise from compiler wanrings so we can focus on real errors. --- src/bin/e_sys_main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/bin/e_sys_main.c b/src/bin/e_sys_main.c index acd1f038d..9043b5854 100644 --- a/src/bin/e_sys_main.c +++ b/src/bin/e_sys_main.c @@ -115,7 +115,7 @@ main(int argc, char *output = NULL; #ifdef HAVE_EEZE_MOUNT Eina_Bool mnt = EINA_FALSE; - const char *act; + const char *act = NULL; #endif gid_t gid, gl[65536], egid; @@ -355,6 +355,7 @@ main(int argc, const char *mp = NULL; Eina_Strbuf *buf = NULL; +if (!act) exit(40); if (!mount_args_check(argc, argv, act)) exit(40); /* all options are deemed safe at this point, so away we go! */ if (!strcmp(act, "mount")) --
[EGIT] [core/enlightenment] enlightenment-0.22 07/20: meson: make those scripts executable
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=cc0ac5cf72cd209b1646f255423bb3dbc547358d commit cc0ac5cf72cd209b1646f255423bb3dbc547358d Author: Marcel Hollerbach Date: Sat Nov 4 10:40:55 2017 + meson: make those scripts executable A missing executable bit here brings old meson version down while building e. --- meson/clean_check.sh | 0 meson/meson_inst.sh| 0 meson/meson_modules.sh | 0 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/meson/clean_check.sh b/meson/clean_check.sh old mode 100644 new mode 100755 diff --git a/meson/meson_inst.sh b/meson/meson_inst.sh old mode 100644 new mode 100755 diff --git a/meson/meson_modules.sh b/meson/meson_modules.sh old mode 100644 new mode 100755 --
[EGIT] [core/enlightenment] enlightenment-0.22 11/20: hits: silence warnings about possible null string for strcmp
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=b78cbb40ad48e75b85394d6e07e66b7b04bf0279 commit b78cbb40ad48e75b85394d6e07e66b7b04bf0279 Author: Carsten Haitzler (Rasterman) Date: Mon Nov 6 11:19:39 2017 +0900 hits: silence warnings about possible null string for strcmp --- src/bin/e_hints.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e_hints.c b/src/bin/e_hints.c index 067dc0b9a..c5f842772 100644 --- a/src/bin/e_hints.c +++ b/src/bin/e_hints.c @@ -1782,7 +1782,7 @@ e_hints_aux_hint_add_with_pixmap(E_Pixmap *cp, int32_t id, const char *name, con E_Comp_Wl_Aux_Hint *hint; Eina_List *l; - if (!cp) return EINA_FALSE; + if ((!cp) || (!val) || (!name)) return EINA_FALSE; cdata = (E_Comp_Wl_Client_Data*)e_pixmap_cdata_get(cp); if (!cdata) return EINA_FALSE; @@ -1836,7 +1836,7 @@ e_hints_aux_hint_change_with_pixmap(E_Pixmap *cp, int32_t id, const char *val, i E_Comp_Wl_Aux_Hint *hint; Eina_Bool found = EINA_FALSE; - if (!cp) return EINA_FALSE; + if ((!cp) || (!val)) return EINA_FALSE; cdata = (E_Comp_Wl_Client_Data*)e_pixmap_cdata_get(cp); if (!cdata) return EINA_FALSE; --
[EGIT] [core/enlightenment] enlightenment-0.22 09/20: Adding danish strings to desktop files
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=94d937b848671960d99b53dfb8edf5d09713bcf0 commit 94d937b848671960d99b53dfb8edf5d09713bcf0 Author: maxerba Date: Sun Nov 5 13:54:49 2017 +0100 Adding danish strings to desktop files --- data/desktop/enlightenment_filemanager.desktop | 2 ++ data/favorites/desktop.desktop | 2 ++ data/session/enlightenment.desktop.in | 1 + 3 files changed, 5 insertions(+) diff --git a/data/desktop/enlightenment_filemanager.desktop b/data/desktop/enlightenment_filemanager.desktop index d99a93805..06e493b30 100644 --- a/data/desktop/enlightenment_filemanager.desktop +++ b/data/desktop/enlightenment_filemanager.desktop @@ -3,6 +3,7 @@ Encoding=UTF-8 Type=Application Name=Enlightenment File Manager Name[ca]=Gestor d'arxius Enlightenment +Name[da]=Enlightenment-filhåndtering Name[de]=Enlightenment-Dateiverwaltung Name[eo]=Dosieradministrilo de Enlightenment Name[es]=Administrador de archivos de Enlightenment @@ -21,6 +22,7 @@ Name[sr]=Управник датотека Просвећења Name[tr]=Enlightenment Dosya Yöneticisi Comment=File Manager provided by Enlightenment Comment[ca]=Gestor d'arxius proveït per Enlightenment +Comment[da]=Filhåndtering leveret af Enlightenment Comment[de]=Die Dateiverwaltung bereitgestellt von Enlightenment Comment[eo]=La dosieradministrilo provizita de Enlightenment Comment[es]=El administrador de ficheros proporcionado por Enlightenment diff --git a/data/favorites/desktop.desktop b/data/favorites/desktop.desktop index bb07339c4..826d2c55f 100644 --- a/data/favorites/desktop.desktop +++ b/data/favorites/desktop.desktop @@ -3,6 +3,7 @@ Encoding=UTF-8 Type=Link Name=Desktop Name[ca]=Escriptori +Name[da]=Skrivebord Name[de]=Schreibtisch Name[el]=Επιφάνεια Εργασίας Name[eo]=Labortablo @@ -20,6 +21,7 @@ Name[sr]=Радна површ Name[tr]=Masaüstü Comment=Files on your Desktop Comment[ca]=Fitxers a l'escriptori +Comment[da]=Filer på dit skrivebord Comment[de]=Dateien auf dem Schreibtisch Comment[eo]=Dosieroj sur via labortablo Comment[es]=Los archivos en su escritorio diff --git a/data/session/enlightenment.desktop.in b/data/session/enlightenment.desktop.in index ce233b3a2..85d4908e5 100644 --- a/data/session/enlightenment.desktop.in +++ b/data/session/enlightenment.desktop.in @@ -18,6 +18,7 @@ Name[sr]=Просвећење Name[tr]=Enlightenment Comment=Log in using Enlightenment (Version @VERSION@) Comment[ca]=Iniciar sessió amb Enlightenment (Versió @VERSION@) +Comment[da]=Log ind med Enlightenment (Version @VERSION@) Comment[de]=Anmelden und Enlightenment verwenden (Version @VERSION@) Comment[el]=Είσοδος με το Enlightenment (Έκδοση @VERSION@) Comment[eo]=Ensaluti pere de Enlightenment (Versio @VERSION@) --
[EGIT] [core/enlightenment] enlightenment-0.22 03/20: show internal pointer cursor whenever resetting to internal cursor
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=8e66ba180831350ae9d54afda2ac49b9abba commit 8e66ba180831350ae9d54afda2ac49b9abba Author: Mike Blumenkrantz Date: Fri Nov 3 13:23:26 2017 -0400 show internal pointer cursor whenever resetting to internal cursor don't rely on efl internals for this --- src/bin/e_pointer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bin/e_pointer.c b/src/bin/e_pointer.c index ef6163853..4f3648bc8 100644 --- a/src/bin/e_pointer.c +++ b/src/bin/e_pointer.c @@ -806,6 +806,7 @@ e_pointer_object_set(E_Pointer *ptr, Evas_Object *obj, int x, int y) { ecore_evas_cursor_unset(ptr->ee); ecore_evas_object_cursor_set(ptr->ee, ptr->o_ptr, E_LAYER_MAX - 1, ptr->hot.x, ptr->hot.y); +evas_object_show(ptr->o_ptr); } ptr->client.ec = ec; ptr->client.x = x; --
[EGIT] [core/enlightenment] enlightenment-0.22 02/20: unset wayland cursor for all pointers when running nested in wl
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=a5423c9aa609f22568761495e69a0b76f9d43e4a commit a5423c9aa609f22568761495e69a0b76f9d43e4a Author: Mike Blumenkrantz Date: Fri Nov 3 13:23:26 2017 -0400 unset wayland cursor for all pointers when running nested in wl --- src/modules/wl_wl/e_mod_main.c | 6 ++ 1 file changed, 6 insertions(+) diff --git a/src/modules/wl_wl/e_mod_main.c b/src/modules/wl_wl/e_mod_main.c index 9bad95953..16a0ef20e 100644 --- a/src/modules/wl_wl/e_mod_main.c +++ b/src/modules/wl_wl/e_mod_main.c @@ -7,6 +7,8 @@ _cb_sync_done(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) { Ecore_Wl2_Event_Sync_Done *ev; int w = 0, h = 0; + Eina_Iterator *it; + Ecore_Wl2_Input *input; ev = event; if (ev->display != e_comp_wl->wl.client_disp) @@ -19,6 +21,10 @@ _cb_sync_done(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) e_comp_wl_output_init(NULL, NULL, NULL, 0, 0, w * 2 / 3, h * 2 / 3, 0, 0, 0, 0, 0, 0); + it = ecore_wl2_display_inputs_get(ecore_wl2_window_display_get(ecore_evas_wayland2_window_get(e_comp->ee))); + EINA_ITERATOR_FOREACH(it, input) + ecore_wl2_input_pointer_set(input, NULL, 0, 0); + eina_iterator_free(it); if (!ecore_wl2_display_dmabuf_get(e_comp_wl->wl.client_disp)) e_comp_wl->dmabuf_disable = EINA_TRUE; --
[EGIT] [core/enlightenment] enlightenment-0.22 14/20: destroy luncher iconify provider on gadget delete
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=185bdaf2a410fb855ff9d92f6d4071047192c4a8 commit 185bdaf2a410fb855ff9d92f6d4071047192c4a8 Author: Mike Blumenkrantz Date: Mon Nov 6 09:20:37 2017 -0500 destroy luncher iconify provider on gadget delete this is removed on object delete, not config delete fix T6258 --- src/modules/luncher/bar.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c index 2cfb1a5f8..a411493ef 100644 --- a/src/modules/luncher/bar.c +++ b/src/modules/luncher/bar.c @@ -1656,8 +1656,6 @@ _bar_removed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_data) if (e_user_dir_snprintf(buf, sizeof(buf), "applications/bar/%s", inst->cfg->dir) >= sizeof(buf)) return; - E_FREE_FUNC(inst->iconify_provider, e_comp_object_effect_mover_del); - luncher_config->items = eina_list_remove(luncher_config->items, inst->cfg); eina_stringshare_del(inst->cfg->dir); E_FREE(inst->cfg); @@ -1670,6 +1668,7 @@ _bar_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_data EIN Ecore_Event_Handler *handler; evas_object_smart_callback_del_full(e_gadget_site_get(obj), "gadget_removed", _bar_removed_cb, inst); + E_FREE_FUNC(inst->iconify_provider, e_comp_object_effect_mover_del); inst->main_del = EINA_TRUE; _bar_empty(inst); e_object_del(E_OBJECT(inst->order)); --
[EGIT] [core/enlightenment] enlightenment-0.22 17/20: avoid performing client rescales during shutdown
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2a1c23ed4bff11135a539bc4ffa863811efba295 commit 2a1c23ed4bff11135a539bc4ffa863811efba295 Author: Mike Blumenkrantz Date: Mon Nov 6 13:58:16 2017 -0500 avoid performing client rescales during shutdown --- src/bin/e_client.c | 2 ++ src/bin/e_comp.c | 1 + src/bin/e_zone.c | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/e_client.c b/src/bin/e_client.c index 7c68bc407..6ea96054c 100644 --- a/src/bin/e_client.c +++ b/src/bin/e_client.c @@ -3331,6 +3331,8 @@ e_client_rescale(E_Client *ec) { Eina_Bool shaded; int shade_dir; + + if (stopping) return; E_OBJECT_CHECK(ec); E_OBJECT_TYPE_CHECK(ec, E_CLIENT_TYPE); diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 650e4a978..42a47736c 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1813,6 +1813,7 @@ e_comp_clients_rescale(void) { int i; + if (stopping) return; for (i = 0; i < 11; i++) { Eina_List *tmp = NULL; diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index 4a24ed540..0d769b876 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -1312,7 +1312,8 @@ e_zone_useful_geometry_dirty(E_Zone *zone) e_object_ref(E_OBJECT(ev->zone)); ecore_event_add(E_EVENT_ZONE_USEFUL_GEOMETRY_CHANGED, ev, _e_zone_event_generic_free, NULL); - e_comp_clients_rescale(); + if (!stopping) + e_comp_clients_rescale(); } E_API E_Zone_Obstacle * --
[EGIT] [core/enlightenment] enlightenment-0.22 20/20: use last client from E_Exec_Instance list when updating luncher popups
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=2f3d1473cf25b861dd27b1830f71adeefafd6c86 commit 2f3d1473cf25b861dd27b1830f71adeefafd6c86 Author: Mike Blumenkrantz Date: Mon Nov 6 14:21:11 2017 -0500 use last client from E_Exec_Instance list when updating luncher popups the last client is the most recently-added fix T6288 --- src/modules/luncher/bar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/luncher/bar.c b/src/modules/luncher/bar.c index 58c0f07c1..68b2057a2 100644 --- a/src/modules/luncher/bar.c +++ b/src/modules/luncher/bar.c @@ -1403,7 +1403,7 @@ _bar_cb_exec_new(void *data EINA_UNUSED, int type, E_Exec_Instance *ex) if (type == E_EVENT_EXEC_NEW_CLIENT) { -ec = eina_list_data_get(ex->clients); +ec = eina_list_last_data_get(ex->clients); if (ec->netwm.state.skip_taskbar || e_client_util_is_popup(ec)) skip = EINA_TRUE; else --
[EGIT] [core/enlightenment] enlightenment-0.22 16/20: requeue client for render if show animation completes and damages exist
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=bbabdb11b2d3ac05c8d4c110c84c9a61b9b83fda commit bbabdb11b2d3ac05c8d4c110c84c9a61b9b83fda Author: Mike Blumenkrantz Date: Mon Nov 6 10:31:58 2017 -0500 requeue client for render if show animation completes and damages exist attempt to catch clients which have a render queued prior to the image becoming visible --- src/bin/e_comp_object.c | 6 +- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 2fb36f415..01a86f3a0 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -827,7 +827,11 @@ _e_comp_object_done_defer(void *data, Evas_Object *obj EINA_UNUSED, const char * if (cw->defer_hide && ((!strcmp(emission, "e,action,hide,done")) || (!strcmp(emission, "e,action,done" evas_object_hide(cw->smart_obj); else - e_comp_shape_queue(); + { +e_comp_shape_queue(); +if (cw->visible && cw->updates_exist) + e_comp_object_render_update_add(cw->smart_obj); + } } /* run a visibility compositor effect if available, return false if object is dead */ --
[EGIT] [core/enlightenment] enlightenment-0.22 19/20: always emit E_EVENT_COMP_OBJECT_ADD events
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=3fc4e337e73c20cbf41a41f64a4b4be7cedf49ef commit 3fc4e337e73c20cbf41a41f64a4b4be7cedf49ef Author: Mike Blumenkrantz Date: Mon Nov 6 14:08:33 2017 -0500 always emit E_EVENT_COMP_OBJECT_ADD events fix T6322 --- src/bin/e_comp_object.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c index 01a86f3a0..755538b17 100644 --- a/src/bin/e_comp_object.c +++ b/src/bin/e_comp_object.c @@ -172,7 +172,6 @@ _e_comp_object_event_add(Evas_Object *obj) E_Event_Comp_Object *ev; E_Client *ec; - if (stopping) return; ev = E_NEW(E_Event_Comp_Object, 1); evas_object_ref(obj); ev->comp_object = obj; --
[EGIT] [core/enlightenment] enlightenment-0.22 13/20: add field width limits to all fscanf params in e_intlc.
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=29ad9c85d9e3923c724ff4fdf8c6e5b2a1e10390 commit 29ad9c85d9e3923c724ff4fdf8c6e5b2a1e10390 Author: Mike Blumenkrantz Date: Mon Nov 6 08:34:24 2017 -0500 add field width limits to all fscanf params in e_intlc. fix T6316 --- src/bin/e_intl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bin/e_intl.c b/src/bin/e_intl.c index 3cb7deaee..57198d925 100644 --- a/src/bin/e_intl.c +++ b/src/bin/e_intl.c @@ -585,7 +585,7 @@ _e_intl_locale_alias_hash_get(void) char alias[4096], locale[4096]; /* read locale alias lines */ - while (fscanf(f, "%4090s %[^\n]\n", alias, locale) == 2) + while (fscanf(f, "%4095s %4095[^\n]\n", alias, locale) == 2) { /* skip comments */ if ((alias[0] == '!') || (alias[0] == '#')) @@ -873,7 +873,7 @@ _e_intl_locale_system_locales_get(void) if (output) { char line[32]; -while (fscanf(output, "%[^\n]\n", line) == 1) +while (fscanf(output, "%31[^\n]\n", line) == 1) locales = eina_list_append(locales, strdup(line)); pclose(output); --
[EGIT] [core/enlightenment] enlightenment-0.22 08/20: meson: this version is enough for the things we use in the moment
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=d710cf5bb0fb59853e177b5baf274eb452372d36 commit d710cf5bb0fb59853e177b5baf274eb452372d36 Author: Marcel Hollerbach Date: Sat Nov 4 10:43:10 2017 + meson: this version is enough for the things we use in the moment this makes meson build work on ubuntu 17.04 --- meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build index c5ccdf4fe..dde40a8ba 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ project('enlightenment', 'c', version: '0.22.0', license: 'BSD 2 clause', default_options: [ 'c_std=gnu99', 'warning_level=2' ], -meson_version : '>= 0.40.0') +meson_version : '>= 0.39.0') # convenience variables for later proj = meson.project_name() --
[EGIT] [website/www-content] master 01/01: Wiki media playground:scalability-scale-relative.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=3b2d814eb5cdcd62947b26bb3881b66ab7e7dfb8 commit 3b2d814eb5cdcd62947b26bb3881b66ab7e7dfb8 Author: Gareth Halfacree Date: Wed Nov 8 08:04:48 2017 -0800 Wiki media playground:scalability-scale-relative.png uploaded by Gareth Halfacree --- media/playground/scalability-scale-relative.png | Bin 0 -> 6313 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/scalability-scale-relative.png b/media/playground/scalability-scale-relative.png new file mode 100644 index ..8a033c32 Binary files /dev/null and b/media/playground/scalability-scale-relative.png differ --
[EGIT] [core/enlightenment] enlightenment-0.22 05/20: update README with meson instructions
discomfitor pushed a commit to branch enlightenment-0.22. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fc3f0dd4a9a377499bf04be6f9aedb690f57181d commit fc3f0dd4a9a377499bf04be6f9aedb690f57181d Author: Mike Blumenkrantz Date: Fri Nov 3 14:10:07 2017 -0400 update README with meson instructions --- README | 16 +++- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README b/README index 53ab8de47..033c2df0f 100644 --- a/README +++ b/README @@ -1,6 +1,6 @@ Please report bugs and send patches to phab.enlightenment.org -Enlightenment 0.19.0 +Enlightenment Requirements: - @@ -14,12 +14,18 @@ Heavily suggested: evas_generic_loaders (all loaders) NOTE: Users of DR16 will need to rename the $prefix/bin/enlightenment -file prior to installing DR19 or it will be overwritten. +file prior to installing this release or it will be overwritten. -You can also use the configure --prefix option to put enlightenment in a separate tree -of its own (recommended) like: +MESON BUILD: + meson . build +optional: + mesonconf --options OR meson configure --options - ./configure --prefix=/usr/local/e19 + cd build && sudo ninja install + +AUTOTOOLS BUILD: + ./configure --prefix=/usr/local/e + sudo make install You will, as usual, need to add the subsequent bin dir to your $PATH etc. --
[EGIT] [website/www-content] master 01/01: Wiki media playground:scalability-scale-fixed.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=482bc580fd4cede457bc8c9d8ecc5419613926ee commit 482bc580fd4cede457bc8c9d8ecc5419613926ee Author: Gareth Halfacree Date: Wed Nov 8 08:06:24 2017 -0800 Wiki media playground:scalability-scale-fixed.png uploaded by Gareth Halfacree --- media/playground/scalability-scale-fixed.png | Bin 0 -> 5861 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/scalability-scale-fixed.png b/media/playground/scalability-scale-fixed.png new file mode 100644 index ..6e59df13 Binary files /dev/null and b/media/playground/scalability-scale-fixed.png differ --
[EGIT] [website/www-content] master 01/01: Wiki media playground:scalability-scale-flexible-height.png uploaded by Gareth Halfacree
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=6feebf2d6decde29969e63cf7e85f3a8cdb35931 commit 6feebf2d6decde29969e63cf7e85f3a8cdb35931 Author: Gareth Halfacree Date: Wed Nov 8 08:09:04 2017 -0800 Wiki media playground:scalability-scale-flexible-height.png uploaded by Gareth Halfacree --- media/playground/scalability-scale-flexible-height.png | Bin 0 -> 5389 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/media/playground/scalability-scale-flexible-height.png b/media/playground/scalability-scale-flexible-height.png new file mode 100644 index ..ed7a890c Binary files /dev/null and b/media/playground/scalability-scale-flexible-height.png differ --
[EGIT] [core/efl] master 02/02: build: improve configure accessibility
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1cda9fe749636484b1328e694a8dbbe4f9d0c31d commit 1cda9fe749636484b1328e694a8dbbe4f9d0c31d Author: Mike Blumenkrantz Date: Wed Nov 8 12:07:25 2017 -0500 build: improve configure accessibility as decided by unanimous vote, the community does not want builds to pause or stop when various features are disabled. warnings for disabling features have been left intact ref V30 @feature --- configure.ac | 21 - 1 file changed, 21 deletions(-) diff --git a/configure.ac b/configure.ac index 7ac39ef34a..fe9be24fd9 100644 --- a/configure.ac +++ b/configure.ac @@ -5226,19 +5226,6 @@ AC_ARG_ENABLE([always-build-examples], [want_always_build_examples="no"]) AM_CONDITIONAL([ALWAYS_BUILD_EXAMPLES], [test "${want_always_build_examples}" = "yes"]) -BARF_OK="xno" -# Harfbuzz -AC_ARG_ENABLE([i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-abb], - [ You will be told when this is needed ], - [ -if test "x${enableval}" = "xyes" ; then - BARF_OK="" -else - BARF_OK="xno" -fi - ], - [ BARF_OK="xno" ]) - Ecore_Buffer build_ecore_buffer_x11_dri2="no" build_ecore_buffer_x11_dri3="no" @@ -6111,14 +6098,6 @@ if test -n "$CFOPT_WARNING"; then echo "==-- WARNING --==" echo "" echo "_" - if test -n "$BARF_OK"; then -echo "Please add the following option to acknowledge this:" -echo " --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-abb" -echo "_" -rm -f Makefile -exit 1 - fi - sleep 10 fi if test "x$prefix" != "x/usr"; then --
[EGIT] [core/efl] master 01/02: quicklaunch: add support for quicklaunch domains
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e99183c33b734a7914e9934cbbe972fd094f226c commit e99183c33b734a7914e9934cbbe972fd094f226c Author: Mike Blumenkrantz Date: Wed Nov 8 11:48:39 2017 -0500 quicklaunch: add support for quicklaunch domains this allows quicklaunch to be used independently of the DISPLAY value --- src/bin/elementary/quicklaunch.c | 11 --- src/bin/elementary/run.c | 11 --- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/bin/elementary/quicklaunch.c b/src/bin/elementary/quicklaunch.c index b7fec56740..6370f6d683 100644 --- a/src/bin/elementary/quicklaunch.c +++ b/src/bin/elementary/quicklaunch.c @@ -181,7 +181,7 @@ main(int argc, char **argv) struct linger lin; char buf[PATH_MAX]; struct sigaction action; - const char *disp; + const char *domain; int ret = 0; if (!eina_init()) @@ -197,7 +197,12 @@ main(int argc, char **argv) _log_dom = EINA_LOG_DOMAIN_GLOBAL; } - if (!(disp = getenv("DISPLAY"))) disp = "unknown"; + if (!(domain = getenv("ELM_QUICKLAUNCH_DOMAIN"))) + { +domain = getenv("WAYLAND_DISPLAY"); +if (!domain) domain = getenv("DISPLAY"); +if (!domain) domain = "unknown"; + } snprintf(buf, sizeof(buf), "/tmp/elm-ql-%i", getuid()); if (stat(buf, &st) < 0) { @@ -208,7 +213,7 @@ main(int argc, char **argv) exit(-1); } } - snprintf(buf, sizeof(buf), "/tmp/elm-ql-%i/%s", getuid(), disp); + snprintf(buf, sizeof(buf), "/tmp/elm-ql-%i/%s", getuid(), domain); unlink(buf); sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock < 0) diff --git a/src/bin/elementary/run.c b/src/bin/elementary/run.c index a3ad3a4cab..6d547ad16a 100644 --- a/src/bin/elementary/run.c +++ b/src/bin/elementary/run.c @@ -32,7 +32,7 @@ main(int argc, char **argv) struct stat st; char *exe; int we_are_elementary_run = 0; - char *disp; + char *domain; char *cwd; int sargc, slen, envnum; @@ -45,8 +45,13 @@ main(int argc, char **argv) exit(-1); } cwd = strdup(buf); - if (!(disp = getenv("DISPLAY"))) disp = "unknown"; - snprintf(buf, sizeof(buf), "/tmp/elm-ql-%i/%s", getuid(), disp); + if (!(domain = getenv("ELM_QUICKLAUNCH_DOMAIN"))) + { +domain = getenv("WAYLAND_DISPLAY"); +if (!domain) domain = getenv("DISPLAY"); +if (!domain) domain = "unknown"; + } + snprintf(buf, sizeof(buf), "/tmp/elm-ql-%i/%s", getuid(), domain); if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { perror("elementary_quicklaunch: socket(AF_UNIX, SOCK_STREAM, 0)"); --
[EGIT] [core/efl] master 08/11: wayland_shm: Remove useless function
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b5674b788539b9e0aa5ed1e11fe4d38de9a4772c commit b5674b788539b9e0aa5ed1e11fe4d38de9a4772c Author: Derek Foreman Date: Wed Nov 8 11:15:04 2017 -0600 wayland_shm: Remove useless function This serves no purpose anymore. --- src/modules/evas/engines/wayland_shm/evas_engine.h | 2 -- src/modules/evas/engines/wayland_shm/evas_outbuf.c | 8 +--- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_engine.h b/src/modules/evas/engines/wayland_shm/evas_engine.h index a3da8fbf75..3744599ed3 100644 --- a/src/modules/evas/engines/wayland_shm/evas_engine.h +++ b/src/modules/evas/engines/wayland_shm/evas_engine.h @@ -155,6 +155,4 @@ void _evas_outbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int void _evas_surface_damage(struct wl_surface *s, int compositor_version, int w, int h, Eina_Rectangle *rects, unsigned int count); void _evas_outbuf_redraws_clear(Outbuf *ob); -Eina_Bool _evas_surface_init(Surface *s, int w, int h, int num_buf); - #endif diff --git a/src/modules/evas/engines/wayland_shm/evas_outbuf.c b/src/modules/evas/engines/wayland_shm/evas_outbuf.c index c962e37905..8cdd70da18 100644 --- a/src/modules/evas/engines/wayland_shm/evas_outbuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_outbuf.c @@ -9,12 +9,6 @@ #define GREEN_MASK 0x00ff00 #define BLUE_MASK 0xff -Eina_Bool -_evas_surface_init(Surface *s, int w, int h, int num_buf) -{ - return _evas_dmabuf_surface_create(s, w, h, num_buf); -} - static Surface * _evas_surface_create(Evas_Engine_Info_Wayland *info, int w, int h, Outbuf *ob) { @@ -26,7 +20,7 @@ _evas_surface_create(Evas_Engine_Info_Wayland *info, int w, int h, Outbuf *ob) out->info = info; out->ob = ob; - if (_evas_surface_init(out, w, h, ob->num_buff)) return out; + if (_evas_dmabuf_surface_create(out, w, h, ob->num_buff)) return out; free(out); return NULL; --
[EGIT] [core/efl] master 04/11: wayland_shm: Track size of buffer
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=d346ac7b2e609ed459148bf56cfd14bd6ecb8fbc commit d346ac7b2e609ed459148bf56cfd14bd6ecb8fbc Author: Derek Foreman Date: Mon Nov 6 17:01:16 2017 -0600 wayland_shm: Track size of buffer --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index a956b6a2d1..813d7b2d92 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -53,6 +53,7 @@ struct _Dmabuf_Buffer { Dmabuf_Surface *surface; struct wl_buffer *wl_buffer; + int size; int w, h; int age; unsigned long stride; @@ -694,6 +695,7 @@ _evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) } out->w = w; out->h = h; + out->size = out->stride * h; out->wl_buffer = _buffer_manager_buf_to_wl_buffer(s->surface->ob->ewd, out); --
[EGIT] [core/efl] master 07/11: wayland_shm: Remove dmabuf fallback
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=566c3f328a2cdeb55f78b5efa0efb8698ec6ae3b commit 566c3f328a2cdeb55f78b5efa0efb8698ec6ae3b Author: Derek Foreman Date: Wed Nov 8 13:57:20 2017 -0600 wayland_shm: Remove dmabuf fallback Now that we're dependent on create_immed there's no possibility of falling back to non dmabuf allocation. The only failing case we really need to handle is failing the first allocation, which is currently broken and I'll be adding an advance test for it shortly. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 62 ++ 1 file changed, 3 insertions(+), 59 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index de1c3fc124..ffa65e9ff2 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -462,6 +462,7 @@ _buffer_manager_deref(void) close(drm_fd); } +/* Currently no callers, but that will change... static void _buffer_manager_destroy(void) { @@ -469,7 +470,7 @@ _buffer_manager_destroy(void) buffer_manager->destroyed = EINA_TRUE; _buffer_manager_deref(); } - +*/ static Buffer_Handle * _buffer_manager_alloc(const char *name, int w, int h, unsigned long *stride, int32_t *fd) @@ -513,57 +514,6 @@ _buffer_manager_discard(Dmabuf_Buffer *buf) } static void -_fallback(Dmabuf_Surface *s, int w, int h) -{ - Dmabuf_Buffer *b; - Surface *surf; - Eina_Bool recovered; - unsigned char *new_data, *old_data; - int y; - - dmabuf_totally_hosed = EINA_TRUE; - surf = s->surface; - if (!surf) goto out; - - recovered = _evas_surface_init(surf, w, h, s->nbuf); - if (!recovered) - { -ERR("Fallback from dmabuf to shm attempted and failed."); -abort(); - } - - /* Since a buffer may have been filled before we realized we can't -* display it, we need to make sure any async render on it is finished, -* then copy the contents into one of the newly allocated shm buffers -*/ - - b = s->pre; - if (!b) b = s->current; - if (!b) goto out; - - if (!b->mapping) b->mapping = _buffer_manager_map(b); - - b->busy = EINA_FALSE; - - if (!b->mapping) goto out; - - evas_thread_queue_wait(); - - old_data = b->mapping; - surf->funcs.assign(surf); - new_data = surf->funcs.data_get(surf, NULL, NULL); - for (y = 0; y < h; y++) - memcpy(new_data + y * w * 4, old_data + y * b->stride, w * 4); - surf->funcs.post(surf, NULL, 0); - _buffer_manager_unmap(b); - b->mapping = NULL; - -out: - _internal_evas_dmabuf_surface_destroy(s); - _buffer_manager_destroy(); -} - -static void _evas_dmabuf_buffer_unlock(Dmabuf_Buffer *b) { _buffer_manager_unmap(b); @@ -616,12 +566,7 @@ _evas_dmabuf_surface_reconfigure(Surface *s, int w, int h, uint32_t flags EINA_U _evas_dmabuf_buffer_destroy(b); } buf = _evas_dmabuf_buffer_init(surface, w, h); -if (!buf) - { - if (surface) _fallback(surface, w, h); - s->surf.dmabuf = NULL; - return; - } +if (!buf) return; surface->buffer[i] = buf; } } @@ -777,7 +722,6 @@ _evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) if (!out->bh) { free(out); -_fallback(s, w, h); return NULL; } out->w = w; --
[EGIT] [core/efl] master 05/11: wayland_shm: Add wl_shm to dmabuf
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c54a12aca60f169a7f2a8536d9a5c4cd71bb86b7 commit c54a12aca60f169a7f2a8536d9a5c4cd71bb86b7 Author: Derek Foreman Date: Mon Nov 6 17:05:25 2017 -0600 wayland_shm: Add wl_shm to dmabuf wl_shm and dmabuf only really need to differ in how they allocate a buffer, but right now we've got them in separate files. This dramatically reduces the complexity of the wl_shm code and shares much more implementation with the dmabuf code. This throws away at least one "optimization" wl_shm used - over-allocating buffers so that window resizing doesn't always require a new buffer allocation. If people feel that window resizing has become too slow now this can be added to the dmabuf code to the benefit of both allocators. Disabling dmabuf by env var still uses the old wl_shm implementation for now, but soon that code will be removed entirely and the env var disable will use this path. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 84 ++ 1 file changed, 84 insertions(+) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 813d7b2d92..9947cb5e51 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -322,6 +322,89 @@ err: return EINA_FALSE; } +static Buffer_Handle * +_wl_shm_alloc(Buffer_Manager *self EINA_UNUSED, const char *name EINA_UNUSED, int w, int h, unsigned long *stride, int32_t *fd) +{ + Efl_Vpath_File *file_obj; + Eina_Tmpstr *fullname; + size_t size = w * h * 4; + void *out = NULL; + + file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, + "(:run:)/evas-wayland_shm-XX"); + *fd = eina_file_mkstemp(efl_vpath_file_result_get(file_obj), &fullname); + efl_del(file_obj); + if (*fd < 0) return NULL; + + unlink(fullname); + eina_tmpstr_del(fullname); + + *stride = w * 4; + if (ftruncate(*fd, size) < 0) goto err; + + out = mmap(NULL, size, (PROT_READ | PROT_WRITE), MAP_SHARED, *fd, 0); + if (out == MAP_FAILED) goto err; + + return out; + +err: + close(*fd); + return NULL; +} + +static void * +_wl_shm_map(Dmabuf_Buffer *buf) +{ + return buf->bh; +} + +static void +_wl_shm_unmap(Dmabuf_Buffer *buf EINA_UNUSED) +{ + /* wl_shm is mapped for its lifetime */ +} + +static void +_wl_shm_discard(Dmabuf_Buffer *buf) +{ + munmap(buf->bh, buf->size); +} + +static void +_wl_shm_manager_destroy() +{ + /* Nop. */ +} + +static struct wl_buffer * +_wl_shm_to_buffer(Ecore_Wl2_Display *ewd, Dmabuf_Buffer *db) +{ + struct wl_buffer *buf; + struct wl_shm_pool *pool; + struct wl_shm *shm; + + shm = ecore_wl2_display_shm_get(ewd); + pool = wl_shm_create_pool(shm, db->fd, db->size); + buf = wl_shm_pool_create_buffer(pool, 0, db->w, db->h, db->stride, 0); + wl_shm_pool_destroy(pool); + close(db->fd); + db->fd = -1; + wl_buffer_add_listener(buf, &buffer_listener, db); + return buf; +} + +static Eina_Bool +_wl_shm_buffer_manager_setup(int fd EINA_UNUSED) +{ + buffer_manager->alloc = _wl_shm_alloc; + buffer_manager->to_buffer = _wl_shm_to_buffer; + buffer_manager->map = _wl_shm_map; + buffer_manager->unmap = _wl_shm_unmap; + buffer_manager->discard = _wl_shm_discard; + buffer_manager->manager_destroy = _wl_shm_manager_destroy; + return EINA_TRUE; +} + static Buffer_Manager * _buffer_manager_get(void) { @@ -342,6 +425,7 @@ _buffer_manager_get(void) success = _intel_buffer_manager_setup(fd); if (!success) success = _exynos_buffer_manager_setup(fd); + if (!success) success = _wl_shm_buffer_manager_setup(fd); if (!success) goto err_bm; drm_fd = fd; --
[EGIT] [core/efl] master 01/11: wayland_shm: Factor out wl_buffer creation code
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7e1805ada13cf9e851e02ab1cf34b24886db7e4a commit 7e1805ada13cf9e851e02ab1cf34b24886db7e4a Author: Derek Foreman Date: Mon Nov 6 13:10:59 2017 -0600 wayland_shm: Factor out wl_buffer creation code --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 33 ++ 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index b3446b03fe..0194b62133 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -98,6 +98,8 @@ static void *(*sym_exynos_bo_map)(struct exynos_bo *bo) = NULL; static void (*sym_exynos_bo_destroy)(struct exynos_bo *bo) = NULL; static void (*sym_exynos_device_destroy)(struct exynos_device *) = NULL; +static struct wl_buffer * _evas_dmabuf_wl_buffer_from_dmabuf(Ecore_Wl2_Display *disp, Dmabuf_Buffer *db); + static Buffer_Handle * _intel_alloc(Buffer_Manager *self, const char *name, int w, int h, unsigned long *stride, int32_t *fd) { @@ -645,15 +647,30 @@ _evas_dmabuf_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count) ecore_wl2_window_commit(s->info->info.wl2_win, EINA_TRUE); } -static Dmabuf_Buffer * -_evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) +static struct wl_buffer * +_evas_dmabuf_wl_buffer_from_dmabuf(Ecore_Wl2_Display *ewd, Dmabuf_Buffer *db) { struct wl_buffer *buf; - Dmabuf_Buffer *out; struct zwp_linux_dmabuf_v1 *dmabuf; struct zwp_linux_buffer_params_v1 *dp; uint32_t flags = 0; + dmabuf = ecore_wl2_display_dmabuf_get(ewd); + dp = zwp_linux_dmabuf_v1_create_params(dmabuf); + zwp_linux_buffer_params_v1_add(dp, db->fd, 0, 0, db->stride, 0, 0); + buf = zwp_linux_buffer_params_v1_create_immed(dp, db->w, db->h, + DRM_FORMAT_ARGB, flags); + wl_buffer_add_listener(buf, &buffer_listener, db); + zwp_linux_buffer_params_v1_destroy(dp); + + return buf; +} + +static Dmabuf_Buffer * +_evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) +{ + Dmabuf_Buffer *out; + out = calloc(1, sizeof(Dmabuf_Buffer)); if (!out) return NULL; @@ -669,14 +686,8 @@ _evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) out->w = w; out->h = h; - dmabuf = ecore_wl2_display_dmabuf_get(s->surface->ob->ewd); - dp = zwp_linux_dmabuf_v1_create_params(dmabuf); - zwp_linux_buffer_params_v1_add(dp, out->fd, 0, 0, out->stride, 0, 0); - buf = zwp_linux_buffer_params_v1_create_immed(dp, out->w, out->h, - DRM_FORMAT_ARGB, flags); - wl_buffer_add_listener(buf, &buffer_listener, out); - zwp_linux_buffer_params_v1_destroy(dp); - out->wl_buffer = buf; + out->wl_buffer = _evas_dmabuf_wl_buffer_from_dmabuf(s->surface->ob->ewd, + out); ecore_wl2_display_flush(s->surface->info->info.wl2_display); return out; --
[EGIT] [core/efl] master 03/11: wayland_shm: move buffer release callback to top of file
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=381bb0e7988a6d59f4527b971574ab044f052a51 commit 381bb0e7988a6d59f4527b971574ab044f052a51 Author: Derek Foreman Date: Mon Nov 6 17:00:46 2017 -0600 wayland_shm: move buffer release callback to top of file Code motion with no functional changes. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 28 +++--- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 5f9de0e7e4..a956b6a2d1 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -101,6 +101,20 @@ static void (*sym_exynos_device_destroy)(struct exynos_device *) = NULL; static struct wl_buffer * _evas_dmabuf_wl_buffer_from_dmabuf(Ecore_Wl2_Display *disp, Dmabuf_Buffer *db); +static void +buffer_release(void *data, struct wl_buffer *buffer EINA_UNUSED) +{ + Dmabuf_Buffer *b = data; + + b->busy = EINA_FALSE; + if (b->orphaned) _evas_dmabuf_buffer_destroy(b); +} + +static const struct wl_buffer_listener buffer_listener = +{ + buffer_release +}; + static Buffer_Handle * _intel_alloc(Buffer_Manager *self, const char *name, int w, int h, unsigned long *stride, int32_t *fd) { @@ -411,20 +425,6 @@ _buffer_manager_discard(Dmabuf_Buffer *buf) } static void -buffer_release(void *data, struct wl_buffer *buffer EINA_UNUSED) -{ - Dmabuf_Buffer *b = data; - - b->busy = EINA_FALSE; - if (b->orphaned) _evas_dmabuf_buffer_destroy(b); -} - -static const struct wl_buffer_listener buffer_listener = -{ - buffer_release -}; - -static void _fallback(Dmabuf_Surface *s, int w, int h) { Dmabuf_Buffer *b; --
[EGIT] [core/efl] master 10/11: wayland_shm: Return oldest buffer for new renders
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a5c7fbd006b5e4e578e2a938a609c2aa79315fc2 commit a5c7fbd006b5e4e578e2a938a609c2aa79315fc2 Author: Derek Foreman Date: Wed Nov 8 14:15:52 2017 -0600 wayland_shm: Return oldest buffer for new renders This is what the old shm code has been doing, and it's probably better than what the dmabuf code was doing. We currently allocate 3 buffers. The usual case has us swapping between two of those buffers and saving that third buffer for emergencies - if we ever need that third buffer it'll require a full redraw. If we return the oldest available buffer the usual case requires a little more damage but we should never hit the full redraw case, which can cause a frame drop on slow hardware. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 28 +++--- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 2d263de0c1..77849a4e46 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -600,29 +600,19 @@ _evas_dmabuf_surface_data_get(Surface *s, int *w, int *h) static Dmabuf_Buffer * _evas_dmabuf_surface_wait(Dmabuf_Surface *s) { - int iterations = 0, i; - struct wl_display *disp; + int i = 0, best = -1, best_age = -1; - disp = ecore_wl2_display_get(s->surface->info->info.wl2_display); - - while (iterations++ < 10) + for (i = 0; i < s->nbuf; i++) { -for (i = 0; i < s->nbuf; i++) - if (!s->buffer[i]->locked && - !s->buffer[i]->busy) -return s->buffer[i]; - -wl_display_dispatch_pending(disp); +if (s->buffer[i]->locked || s->buffer[i]->busy) continue; +if (s->buffer[i]->age > best_age) + { + best = i; + best_age = s->buffer[i]->age; + } } - /* May be we have a possible render target that just hasn't been -* given a wl_buffer yet - draw there and let the success handler -* figure it out. -*/ - for (i = 0; i < s->nbuf; i++) - if (!s->buffer[i]->locked && !s->buffer[i]->busy) - return s->buffer[i]; - + if (best >= 0) return s->buffer[best]; return NULL; } --
[EGIT] [core/efl] master 02/11: wayland_shm: make creating a wayland buffer back end specific
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=ef1279465fb61a01ff39a474c5d0cb47ba9475a3 commit ef1279465fb61a01ff39a474c5d0cb47ba9475a3 Author: Derek Foreman Date: Mon Nov 6 13:31:25 2017 -0600 wayland_shm: make creating a wayland buffer back end specific This way we can have shm and dmabuf share the same framework. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 12 ++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 0194b62133..5f9de0e7e4 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -36,6 +36,7 @@ typedef struct _Buffer_Manager Buffer_Manager; struct _Buffer_Manager { Buffer_Handle *(*alloc)(Buffer_Manager *self, const char *name, int w, int h, unsigned long *stride, int32_t *fd); + struct wl_buffer *(*to_buffer)(Ecore_Wl2_Display *ewd, Dmabuf_Buffer *db); void *(*map)(Dmabuf_Buffer *buf); void (*unmap)(Dmabuf_Buffer *buf); void (*discard)(Dmabuf_Buffer *buf); @@ -187,6 +188,7 @@ _intel_buffer_manager_setup(int fd) if (!buffer_manager->priv) goto err; buffer_manager->alloc = _intel_alloc; + buffer_manager->to_buffer = _evas_dmabuf_wl_buffer_from_dmabuf; buffer_manager->map = _intel_map; buffer_manager->unmap = _intel_unmap; buffer_manager->discard = _intel_discard; @@ -292,6 +294,7 @@ _exynos_buffer_manager_setup(int fd) sym_exynos_bo_destroy(bo); buffer_manager->alloc = _exynos_alloc; + buffer_manager->to_buffer = _evas_dmabuf_wl_buffer_from_dmabuf; buffer_manager->map = _exynos_map; buffer_manager->unmap = _exynos_unmap; buffer_manager->discard = _exynos_discard; @@ -377,6 +380,12 @@ _buffer_manager_alloc(const char *name, int w, int h, unsigned long *stride, int return out; } +static struct wl_buffer * +_buffer_manager_buf_to_wl_buffer(Ecore_Wl2_Display *ewd, Dmabuf_Buffer *buf) +{ + return buffer_manager->to_buffer(ewd, buf); +} + static void * _buffer_manager_map(Dmabuf_Buffer *buf) { @@ -686,8 +695,7 @@ _evas_dmabuf_buffer_init(Dmabuf_Surface *s, int w, int h) out->w = w; out->h = h; - out->wl_buffer = _evas_dmabuf_wl_buffer_from_dmabuf(s->surface->ob->ewd, - out); + out->wl_buffer = _buffer_manager_buf_to_wl_buffer(s->surface->ob->ewd, out); ecore_wl2_display_flush(s->surface->info->info.wl2_display); return out; --
[EGIT] [core/efl] master 11/11: wayland_shm: Remove old shm code
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c2fe37a46dfacdf7f03477ecfe55722f93d93719 commit c2fe37a46dfacdf7f03477ecfe55722f93d93719 Author: Derek Foreman Date: Wed Nov 8 14:33:31 2017 -0600 wayland_shm: Remove old shm code The new shm code should be equally capable - minus one surface resize optimization that probably didn't buy us much performance at the cost of memory. --- src/Makefile_Evas.am| 1 - src/modules/evas/engines/wayland_shm/evas_shm.c | 599 2 files changed, 600 deletions(-) diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index e5c3dba46b..f1d0148667 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -1318,7 +1318,6 @@ WAYLAND_SHM_SOURCES = \ modules/evas/engines/wayland_common/Evas_Engine_Wayland.h \ modules/evas/engines/wayland_shm/evas_engine.c \ modules/evas/engines/wayland_shm/evas_engine.h \ -modules/evas/engines/wayland_shm/evas_shm.c \ modules/evas/engines/wayland_shm/evas_dmabuf.c \ modules/evas/engines/wayland_shm/evas_outbuf.c \ static_libs/libdrm/drm_fourcc.h \ diff --git a/src/modules/evas/engines/wayland_shm/evas_shm.c b/src/modules/evas/engines/wayland_shm/evas_shm.c deleted file mode 100644 index a2ab42ccf3..00 --- a/src/modules/evas/engines/wayland_shm/evas_shm.c +++ /dev/null @@ -1,599 +0,0 @@ -/* Portions of this code have been derived from Weston - * - * Copyright © 2008-2012 Kristian Høgsberg - * Copyright © 2010-2012 Intel Corporation - * Copyright © 2010-2011 Benjamin Franzke - * Copyright © 2011-2012 Collabora, Ltd. - * Copyright © 2010 Red Hat - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include "evas_common_private.h" -#include "evas_private.h" -#include "evas_engine.h" -#include - -typedef struct _Shm_Pool Shm_Pool; -struct _Shm_Pool -{ - struct wl_shm_pool *pool; - size_t size, used; - void *data; -}; - -typedef struct _Shm_Data Shm_Data; -struct _Shm_Data -{ - struct wl_buffer *buffer; - Shm_Pool *pool; - void *map; -}; - -typedef struct _Shm_Leaf Shm_Leaf; -struct _Shm_Leaf -{ - int w, h, busy, age; - Shm_Data *data; - Shm_Pool *resize_pool; - Eina_Bool valid : 1; - Eina_Bool reconfigure : 1; - Eina_Bool drawn : 1; -}; - -typedef struct _Shm_Surface Shm_Surface; -struct _Shm_Surface -{ - int w, h; - int num_buff; - int compositor_version; - - Shm_Leaf leaf[MAX_BUFFERS]; - Shm_Leaf *current; - - Eina_Bool alpha : 1; -}; - -static Eina_Bool _shm_leaf_create(Surface *s, Shm_Leaf *leaf, int w, int h); -static void _shm_leaf_release(Shm_Leaf *leaf); -static void _shm_leaf_destroy(Shm_Leaf *leaf); - -static struct wl_shm_pool * -_shm_pool_make(struct wl_shm *shm, int size, void **data) -{ - struct wl_shm_pool *pool; - int fd = 0; - Eina_Tmpstr *fullname; - Efl_Vpath_File *file_obj; - - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - /* check for valid wl_shm */ - if (!shm) return NULL; - - /* create tmp file name */ - file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, - "(:run:)/evas-wayland_shm-XX"); - fd = eina_file_mkstemp(efl_vpath_file_result_get(file_obj), &fullname); - efl_del(file_obj); - - if (fd < 0) - /* try to create tmp file */ - /* if ((fd = mkstemp(name)) < 0) */ - { -ERR("Could not create temporary file: %m"); -return NULL; - } - - unlink(fullname); - eina_tmpstr_del(fullname); - - /* try to truncate file to size */ - if (ftruncate(fd, size) < 0) - { -ERR("Could not truncate temporary file: %m"); -goto fd_err; - } - - /* try to mmap the file */ - *data = mmap(NULL, size, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, 0); - if (*data == MAP_FAILED) - { -ERR("Could not mmap temporary file: %m"); -goto fd_err; - } - - /* NB
[EGIT] [core/efl] master 09/11: wayland_shm: Simplify surface commits
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4adf87ae91e56a97fa85694855d90e08c41b83e2 commit 4adf87ae91e56a97fa85694855d90e08c41b83e2 Author: Derek Foreman Date: Wed Nov 8 13:58:07 2017 -0600 wayland_shm: Simplify surface commits We no longer have the concept of a "pre" buffer (allocated but not yet registered as a wayland buffer) --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 13 - 1 file changed, 13 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index ffa65e9ff2..2d263de0c1 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -74,7 +74,6 @@ struct _Dmabuf_Surface int compositor_version; Dmabuf_Buffer *current; - Dmabuf_Buffer *pre; Dmabuf_Buffer **buffer; int nbuf; @@ -667,18 +666,6 @@ _evas_dmabuf_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count) b->used = EINA_TRUE; b->age = 0; - /* If we don't yet have a buffer assignement we need to track the -* most recently filled unassigned buffer and make sure it gets -* displayed. -*/ - if (surface->pre) surface->pre->busy = EINA_FALSE; - if (!b->wl_buffer) - { -surface->pre = b; -return; - } - surface->pre = NULL; - win = s->info->info.wl2_win; wls = ecore_wl2_window_surface_get(win); --
[EGIT] [core/efl] master 06/11: wayland_shm: Make EVAS_WAYLAND_SHM_DISABLE_DMABUF use new code
derekf pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=73bddb4471235de4bc61cd44117a2963e5af1620 commit 73bddb4471235de4bc61cd44117a2963e5af1620 Author: Derek Foreman Date: Wed Nov 8 10:37:06 2017 -0600 wayland_shm: Make EVAS_WAYLAND_SHM_DISABLE_DMABUF use new code Use the new wl_shm allocation functions making the old wl_shm code unreachable even with the use of the disable env var. --- src/modules/evas/engines/wayland_shm/evas_dmabuf.c | 7 +-- src/modules/evas/engines/wayland_shm/evas_outbuf.c | 7 +-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c index 9947cb5e51..de1c3fc124 100644 --- a/src/modules/evas/engines/wayland_shm/evas_dmabuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_dmabuf.c @@ -423,8 +423,11 @@ _buffer_manager_get(void) fd = open("/dev/dri/renderD128", O_RDWR | O_CLOEXEC); if (fd < 0) goto err_drm; - success = _intel_buffer_manager_setup(fd); - if (!success) success = _exynos_buffer_manager_setup(fd); + if (!getenv("EVAS_WAYLAND_SHM_DISABLE_DMABUF")) + { +success = _intel_buffer_manager_setup(fd); +if (!success) success = _exynos_buffer_manager_setup(fd); + } if (!success) success = _wl_shm_buffer_manager_setup(fd); if (!success) goto err_bm; diff --git a/src/modules/evas/engines/wayland_shm/evas_outbuf.c b/src/modules/evas/engines/wayland_shm/evas_outbuf.c index d5a6b7e2bc..c962e37905 100644 --- a/src/modules/evas/engines/wayland_shm/evas_outbuf.c +++ b/src/modules/evas/engines/wayland_shm/evas_outbuf.c @@ -12,12 +12,7 @@ Eina_Bool _evas_surface_init(Surface *s, int w, int h, int num_buf) { - if (!getenv("EVAS_WAYLAND_SHM_DISABLE_DMABUF")) - if (_evas_dmabuf_surface_create(s, w, h, num_buf)) return EINA_TRUE; - - if (_evas_shm_surface_create(s, w, h, num_buf)) return EINA_TRUE; - - return EINA_FALSE; + return _evas_dmabuf_surface_create(s, w, h, num_buf); } static Surface * --
[EGIT] [website/www-content] master 01/01: Wiki page arrays.md changed with summary [created] by Paul
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=b9d86a7dcc4dda13af185c0b66ca0e1322d0f9e1 commit b9d86a7dcc4dda13af185c0b66ca0e1322d0f9e1 Author: Paul Date: Wed Nov 8 14:59:16 2017 -0800 Wiki page arrays.md changed with summary [created] by Paul --- pages/eina-programming-guide/arrays.md.txt | 870 + 1 file changed, 870 insertions(+) diff --git a/pages/eina-programming-guide/arrays.md.txt b/pages/eina-programming-guide/arrays.md.txt new file mode 100644 index ..39f6696a --- /dev/null +++ b/pages/eina-programming-guide/arrays.md.txt @@ -0,0 +1,870 @@ +--- +~~Title: Arrays~~ +--- + +# Arrays # + +An array is a data type which describes an ordered collection of values. The +values are accessed by their index. + +|INDEX |VALUE | +|--|--| +|0 |value0| +|1 |value1| +|2 |value2| +|3 |value3| +|4 |value4| +|5 |value5| +|6 |value6| +|7 |value7| + +Eina provides 2 array types: the classic array and an inline array. + +## Creating and Destroying a Classic Array ## + +The ``eina_array_new()`` function creates a new array. You can store strings or +objects in the created array. The function returns a new array, or if memory +allocation fails, ``NULL``. + +The first parameter of the ``eina_array_new()`` function defines the size of +the array allocation step. For example, if you set it to 4, the function +returns an array of 4 elements and the next time you grow the array it grows +by 4 elements. Unless you have pushed 4 elements inside, it does not grow. But +once you add the 5th element, it grows again and becomes an array of 8 +elements. The allocation step feature is very useful for optimizing +performance, and it also reduces memory fragmentation by having a size that +fits the array usage. If you set the step to 0, the function sets a default +safe value. + +### To create an array to store strings ### + +__**1**__. Create the array: + + +```c +[...] + +// Strings to store in the array +const char* strings[] = +{ + "helo", "hera", "starbuck", "kat", "boomer", + "hotdog", "longshot", "jammer", "crashdown", "hardball", + "duck", "racetrack", "apolo", "husker", "freaker", + "skulls", "bulldog", "flat top", "hammerhead", "gonzo" +}; +// Declaring the array (type Eina_Array) +Eina_Array *array; +unsigned int i; + +// Creating the array +array = eina_array_new(20); + +// Inserting elements in the array +for (i = 0; i < 20; i++) + eina_array_push(array, strdup(strings[i])); + +[...] +``` + +__**2**__. To change the allocation step, use the ``eina_array_step_set()`` function: + * The first parameter is the array you want to change. + * The second parameter is the size of that specific array (retrieved with the ``sizeof()`` function). + * The last parameter is the new step size. + +In this example, the array step changes from 20 to 30. + +```c +[...] + +eina_array_step_set(array, sizeof(*array), 30); + +[...] +``` + +__**3**__. When no longer used, use the ``eina_array_free()`` function to free the array. It first calls the ``eina_array_flush()`` function and frees the memory of the pointer. It does not free the memory allocated for the elements of the array. To free them, use a ``while`` statement with the ``eina_array_pop`` function. + + +```c +[...] + +// Freeing the array elements +while (eina_array_count(array)) + free(eina_array_pop(array)); + +// Freeing the array itself +eina_array_free(array); + +[...] +``` + +## Modifying Classic Array Content ## + +### To set the data of an element ### +Use the ``eina_array_data_set()`` function. The first parameter is the array, +the second is the index of the element you want to set, and the last one is +the data. You must first get the related pointer if you need to free it, as +this function replaces the previously held data. Be careful, as there is no +array or index check. If the value is ``NULL`` or invalid, the application can +crash. + + +```c +[...] + +free(eina_array_data_get(array, 0)); +eina_array_data_set(array, 0, strdup(strings[3]); + +[...] +``` + +### To add elements to the end of the array ### +Use the ``eina_array_push()`` function. The function returns ``EINA_TRUE`` on +success, and ``EINA_FALSE`` on failure. The first parameter is the array to +store the element, the second one is the data you want to store. If you store +strings, remember to allocate the memory first. The example uses the +``strdup`` function to duplicate the string contained in ``strings[]``. This +function allocates the memory of the returned string, so you do not have to do +it yourself. + + +```c +[...] + +for (i = 0; i < 20; i++) + eina_array_push(array, strdup(strings[i])); + +[...] +``` + +### To remove the last element of an array ### +Use the ``eina_array_pop()`` function. It takes the array as a parameter, and +if the operation is successful, returns a pointer to the data of the removed +elemen
[EGIT] [core/efl] master 01/01: elm_code_widget: keep track of visibility.
netstar pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=e63e2d7e21df13520cca1b05437e556b3fd6624f commit e63e2d7e21df13520cca1b05437e556b3fd6624f Author: Al Poole Date: Thu Nov 9 00:38:51 2017 + elm_code_widget: keep track of visibility. Keep track of visibility and ensure the cursor can never be filled when hidden. This should finally end any issue with the cursor and visibility with the new focus system. Didn't see this previously until working on Edi's bottom panes which caused redraw on resize of the widgets. @fix --- src/lib/elementary/elm_code_widget.c | 4 +++- src/lib/elementary/elm_code_widget_private.h | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/elm_code_widget.c b/src/lib/elementary/elm_code_widget.c index 1ce0ffa99c..fc20eac6ec 100644 --- a/src/lib/elementary/elm_code_widget.c +++ b/src/lib/elementary/elm_code_widget.c @@ -270,7 +270,7 @@ _elm_code_widget_fill_cursor(Elm_Code_Widget *widget, unsigned int number, int g pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); - if (pd->editable && pd->focussed && pd->cursor_line == number) + if (pd->visible && pd->editable && pd->focussed && pd->cursor_line == number) { if (pd->cursor_col + gutter - 1 >= (unsigned int) w) return; @@ -564,6 +564,7 @@ _elm_code_widget_show_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_ pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); + pd->visible = EINA_TRUE; if (pd->cursor_rect) evas_object_show(pd->cursor_rect); } @@ -577,6 +578,7 @@ _elm_code_widget_hidden_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EIN pd = efl_data_scope_get(widget, ELM_CODE_WIDGET_CLASS); + pd->visible = EINA_FALSE; if (pd->cursor_rect) evas_object_hide(pd->cursor_rect); } diff --git a/src/lib/elementary/elm_code_widget_private.h b/src/lib/elementary/elm_code_widget_private.h index d9e071c246..4e050a799b 100644 --- a/src/lib/elementary/elm_code_widget_private.h +++ b/src/lib/elementary/elm_code_widget_private.h @@ -24,7 +24,7 @@ typedef struct unsigned int cursor_line, cursor_col; Evas_Object *cursor_rect; - Eina_Bool editable, focussed; + Eina_Bool visible, editable, focussed; Eina_Bool show_line_numbers; unsigned int line_width_marker, tabstop; Eina_Bool show_whitespace, tab_inserts_spaces; --
[EGIT] [website/www-content] master 01/01: Wiki page e0.21.11_release changed with summary [created] by Simon
WWW-www.enlightenment.org pushed a commit to branch master. http://git.enlightenment.org/website/www-content.git/commit/?id=ddd679d2c9a9bc4a260b0bff457afa9da78b3b5f commit ddd679d2c9a9bc4a260b0bff457afa9da78b3b5f Author: Simon Date: Wed Nov 8 17:52:03 2017 -0800 Wiki page e0.21.11_release changed with summary [created] by Simon --- pages/news/e0.21.11_release.txt | 116 1 file changed, 116 insertions(+) diff --git a/pages/news/e0.21.11_release.txt b/pages/news/e0.21.11_release.txt new file mode 100644 index ..3fc8d8d2 --- /dev/null +++ b/pages/news/e0.21.11_release.txt @@ -0,0 +1,116 @@ +=== Enlightenment DR 0.21.11 Release === + * //2017-11-09 by Simon Lees// + +This is the last general bugfix and stability release for the Enlightenment 21 Release series, we recommend users move to the Enlightenment 22 Release series. + + +== Tickets Addressed == +| [[ https://phab.enlightenment.org/T3649|T3649 ]] |"Suspend even if AC" not working | +| [[ https://phab.enlightenment.org/T4510|T4510 ]] |Edge Bindings - left click action seem to override other button | +| [[ https://phab.enlightenment.org/T4648|T4648 ]] |Lock screen gadget issues. | +| [[ https://phab.enlightenment.org/T4988|T4988 ]] |The Everything crash | +| [[ https://phab.enlightenment.org/T5076|T5076 ]] |Incorrect desktop files | +| [[ https://phab.enlightenment.org/T5593|T5593 ]] |Xwayland | +| [[ https://phab.enlightenment.org/T5953|T5953 ]] |Alternative to prepending E_BIN_DIR to PATH | +| [[ https://phab.enlightenment.org/T5974|T5974 ]] |Cannot resize bryce (ALT+Scrolling thing) | +| [[ https://phab.enlightenment.org/T5998|T5998 ]] |Bryce: Resizing SEGV | +| [[ https://phab.enlightenment.org/T6006|T6006 ]] |Shaded window state broken on E restart | +| [[ https://phab.enlightenment.org/T6023|T6023 ]] |Crash on resize across multiple monitors with tiling enabled | +| [[ https://phab.enlightenment.org/T6024|T6024 ]] |Win appears on the wrong VD with remebers | +| [[ https://phab.enlightenment.org/T6071|T6071 ]] |E wayland mode - launching apps like terminology always leads to ibar icon being "disabled/busy starting" | +| [[ https://phab.enlightenment.org/T6122|T6122 ]] |Xwayland startup apps crash on E start | +| [[ https://phab.enlightenment.org/T6125|T6125 ]] |Issues with the lock screen. | +| [[ https://phab.enlightenment.org/T6151|T6151 ]] |Enlightenment 22 crashing after some tim | +| [[ https://phab.enlightenment.org/T6157|T6157 ]] |e cursors broken in x | +| [[ https://phab.enlightenment.org/T6197|T6197 ]] |enlightenment is nonresponsive after entering password on lock screen | +| [[ https://phab.enlightenment.org/T6242|T6242 ]] |Selecting text in Terminology crashes E. | + +== Changes == +Carsten Haitzler (6): + * fix up window+screen positioning fixup so it doesnt catch other clients + * e start - fix path prepend/append if already in path assuming clue + * tiling - ensure notification struct is 0'd before use + * battery modules - actually set ac power flag based on ac presence + * e main - xdg runtime dir fixup - dont overwrite same buffer + * nvidia driver workaround atexit handlers for pam auth + +Chidambar Zinnoury (2): + * e remote: Fix script’s execution rights. + * e menu: Fix missing realize when using key-activation to the right. + +Derek Foreman (4): + * Fix crash when processing a wayland client cursor set after death + * Fix xwayland related crash when mousing out of a window + * Clear stored root window id when shutting down X + * Fix crash on wayland logout if xwayland hasn't started yet + +Mike Blumenkrantz (46): + * use animator del function to delete comp object animators + * handle shade <-> unshade toggling in same frame + * resolve desktop spec issues with emixer.desktop + * use EC_CHANGED when setting changed flag in client idler + * hide clients again after show in idler if clients are on hidden desk + * block recursive mouse eventing in bryce action handlers + * handle unmovable gadgets in gadget move action + * flag zone/edge mouse binding activation with ON_HOLD + * fix clickable edge binding activation with other mouse buttons + * remove fdo interfaces from music control dbus xml + * don't perform zone updates on client resize + * remove input-only client fastpath to resize crashes + * use client geometry for visibility effect geometry, not comp object geometry + * emit E_EVENT_EXEC_NEW_CLIENT with phony exes + * don't show xwayland clients unconditionally on commit + * defer wl startup apps until after xwayland init completes + * do ecore-x shutdown on xwayland shutdown + * redo bryce eventing + * deduplicate global gadget handler variables + * block gadget configuration unconditionally while desklock is active + * set comp object alpha state when applying native surface + * add max size input rects for wl clients on creation + * handle x11 shaped input under xwayland + * set default cursor on root windo
[EGIT] [core/efl] master 01/01: Efl.Ui.Slider: fix documentations
ami pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=6c444bebcbb8858364c88f9aba4b217b23b28a07 commit 6c444bebcbb8858364c88f9aba4b217b23b28a07 Author: Amitesh Singh Date: Thu Nov 9 11:02:29 2017 +0900 Efl.Ui.Slider: fix documentations --- src/lib/elementary/elm_slider_legacy.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/elm_slider_legacy.h b/src/lib/elementary/elm_slider_legacy.h index 89df6f1bcc..a98324fa7a 100644 --- a/src/lib/elementary/elm_slider_legacy.h +++ b/src/lib/elementary/elm_slider_legacy.h @@ -176,7 +176,7 @@ EAPI void elm_slider_units_format_function_set(Evas_Object *obj, slider_func_typ * @param[in] min The minimum value. * @param[in] max The maximum value. * - * @ingroup Efl_Ui_Slider + * @ingroup Elm_Slider */ EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); @@ -189,7 +189,7 @@ EAPI void elm_slider_min_max_set(Evas_Object *obj, double min, double max); * @param[out] min The minimum value. * @param[out] max The maximum value. * - * @ingroup Efl_Ui_Slider + * @ingroup Elm_Slider */ EAPI void elm_slider_min_max_get(const Evas_Object *obj, double *min, double *max); --
[EGIT] [core/enlightenment] enlightenment-0.21 01/02: 21.11 Release
simotek pushed a commit to branch enlightenment-0.21. http://git.enlightenment.org/core/enlightenment.git/commit/?id=28f8fc84096a8e27cb7313c30174a7156840 commit 28f8fc84096a8e27cb7313c30174a7156840 Author: Simon Lees Date: Fri Nov 3 13:14:29 2017 +1030 21.11 Release --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 463e77f96..e9b183e09 100644 --- a/configure.ac +++ b/configure.ac @@ -2,11 +2,11 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_maj], [0]) m4_define([v_min], [21]) -m4_define([v_mic], [10]) +m4_define([v_mic], [11]) m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl ##-- When released, remove the dnl on the below line m4_undefine([v_rev]) -m4_define([relname], [0.21.10]) +m4_define([relname], [0.21.11]) ##-- When doing snapshots - change soname. remove dnl on below line m4_define([relname], [ver-0.21]) dnl m4_define([v_rel], [-release relname]) --
[EGIT] [core/enlightenment] annotated tag v0.21.11 created (now 084ce7c1e)
This is an automated email from the git hooks/post-receive script. simotek pushed a change to annotated tag v0.21.11 in repository core/enlightenment. at 084ce7c1e (tag) tagging 973b16091d4fe275fcaa1bde9b84643d3c3a0fd1 (commit) replaces v0.21.10 tagged by Simon Lees on Fri Nov 3 13:14:56 2017 +1030 - Log - 21.11 Release Carsten Haitzler (6): fix up window+screen positioning fixup so it doesnt catch other clients e start - fix path prepend/append if already in path assuming clue tiling - ensure notification struct is 0'd before use battery modules - actually set ac power flag based on ac presence e main - xdg runtime dir fixup - dont overwrite same buffer nvidia driver workaround atexit handlers for pam auth Chidambar Zinnoury (2): e remote: Fix script’s execution rights. e menu: Fix missing realize when using key-activation to the right. Derek Foreman (4): Fix crash when processing a wayland client cursor set after death Fix xwayland related crash when mousing out of a window Clear stored root window id when shutting down X Fix crash on wayland logout if xwayland hasn't started yet Mike Blumenkrantz (47): use animator del function to delete comp object animators handle shade <-> unshade toggling in same frame resolve desktop spec issues with emixer.desktop use EC_CHANGED when setting changed flag in client idler hide clients again after show in idler if clients are on hidden desk block recursive mouse eventing in bryce action handlers handle unmovable gadgets in gadget move action flag zone/edge mouse binding activation with ON_HOLD fix clickable edge binding activation with other mouse buttons remove fdo interfaces from music control dbus xml don't perform zone updates on client resize remove input-only client fastpath to resize crashes use client geometry for visibility effect geometry, not comp object geometry emit E_EVENT_EXEC_NEW_CLIENT with phony exes don't show xwayland clients unconditionally on commit defer wl startup apps until after xwayland init completes do ecore-x shutdown on xwayland shutdown redo bryce eventing deduplicate global gadget handler variables block gadget configuration unconditionally while desklock is active set comp object alpha state when applying native surface add max size input rects for wl clients on creation handle x11 shaped input under xwayland set default cursor on root window for xwl pointer Revert "disable option for mouse to use Application theme if we are running in Wayland" move 'show cursor' option in mouse settings inside frame do not show cursor theme options in wayland compositor mode move cursor theme options into separate frame check for non-wl compositor when forcing application cursors onto pointers always use e cursor theme for canvas pointers recreate x11 root pointer when changing application<->enlightenment theme add render update when showing clients if damages exist add client refs for the nocomp client do not unqueue render when deleting a client's render update ignore set_input_region requests for wl surfaces which are cursors or drags set null input regions for surfaces upon calling set_cursor or start_drag null wl clipboard+selection source pointers when destroying clipboard source cancel wl selections after removing destroy listener move x11 compositor cleanup into shutdown function unset client's mouse-in state on mouse out even while fullscreen or deleted send wl pointer leave for deleted clients if viable unset xwayland client changes.pos flag during xwl->wl switch if client is unplaced block wl modal window destructor from intercepting xwl modal windows handle more mouse buttons under wayland explicitly free client animation agent object during fullscreen operation Revert "handle x11 shaped input under xwayland" add event for xwayland init Simon Lees (2): 21.11 Release 21.11 NEWS Stephen 'Okra' Houston (1): E Exe: Semi revert 2082bb51d3abffd991b4d791ace2567888e2e9fb. The ref count was off to begin with. --- This annotated tag includes the following new commits: new 28f8fc840 21.11 Release new 973b16091 21.11 NEWS The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. --
[EGIT] [core/enlightenment] enlightenment-0.21 02/02: 21.11 NEWS
simotek pushed a commit to branch enlightenment-0.21. http://git.enlightenment.org/core/enlightenment.git/commit/?id=973b16091d4fe275fcaa1bde9b84643d3c3a0fd1 commit 973b16091d4fe275fcaa1bde9b84643d3c3a0fd1 Author: Simon Lees Date: Fri Nov 3 13:14:49 2017 +1030 21.11 NEWS --- NEWS | 71 1 file changed, 71 insertions(+) diff --git a/NEWS b/NEWS index 4664c04ae..9cd954705 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,74 @@ +Release 0.21.11: +- +Carsten Haitzler (6): + fix up window+screen positioning fixup so it doesnt catch other clients + e start - fix path prepend/append if already in path assuming clue + tiling - ensure notification struct is 0'd before use + battery modules - actually set ac power flag based on ac presence + e main - xdg runtime dir fixup - dont overwrite same buffer + nvidia driver workaround atexit handlers for pam auth + +Chidambar Zinnoury (2): + e remote: Fix script’s execution rights. + e menu: Fix missing realize when using key-activation to the right. + +Derek Foreman (4): + Fix crash when processing a wayland client cursor set after death + Fix xwayland related crash when mousing out of a window + Clear stored root window id when shutting down X + Fix crash on wayland logout if xwayland hasn't started yet + +Mike Blumenkrantz (46): + use animator del function to delete comp object animators + handle shade <-> unshade toggling in same frame + resolve desktop spec issues with emixer.desktop + use EC_CHANGED when setting changed flag in client idler + hide clients again after show in idler if clients are on hidden desk + block recursive mouse eventing in bryce action handlers + handle unmovable gadgets in gadget move action + flag zone/edge mouse binding activation with ON_HOLD + fix clickable edge binding activation with other mouse buttons + remove fdo interfaces from music control dbus xml + don't perform zone updates on client resize + remove input-only client fastpath to resize crashes + use client geometry for visibility effect geometry, not comp object geometry + emit E_EVENT_EXEC_NEW_CLIENT with phony exes + don't show xwayland clients unconditionally on commit + defer wl startup apps until after xwayland init completes + do ecore-x shutdown on xwayland shutdown + redo bryce eventing + deduplicate global gadget handler variables + block gadget configuration unconditionally while desklock is active + set comp object alpha state when applying native surface + add max size input rects for wl clients on creation + handle x11 shaped input under xwayland + set default cursor on root window for xwl pointer + Revert "disable option for mouse to use Application theme if we are running in Wayland" + move 'show cursor' option in mouse settings inside frame + do not show cursor theme options in wayland compositor mode + move cursor theme options into separate frame + check for non-wl compositor when forcing application cursors onto pointers + always use e cursor theme for canvas pointers + recreate x11 root pointer when changing application<->enlightenment theme + add render update when showing clients if damages exist + add client refs for the nocomp client + do not unqueue render when deleting a client's render update + ignore set_input_region requests for wl surfaces which are cursors or drags + set null input regions for surfaces upon calling set_cursor or start_drag + null wl clipboard+selection source pointers when destroying clipboard source + cancel wl selections after removing destroy listener + move x11 compositor cleanup into shutdown function + unset client's mouse-in state on mouse out even while fullscreen or deleted + send wl pointer leave for deleted clients if viable + unset xwayland client changes.pos flag during xwl->wl switch if client is unplaced + block wl modal window destructor from intercepting xwl modal windows + handle more mouse buttons under wayland + explicitly free client animation agent object during fullscreen operation + Revert "handle x11 shaped input under xwayland" + +Stephen 'Okra' Houston (1): + E Exe: Semi revert 2082bb51d3abffd991b4d791ace2567888e2e9fb. The ref count was off to begin with. + Release 0.21.10: - Al Poole (1): --
[EGIT] [core/efl] master 01/01: elput - ref device that is in the event queue
raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1e83d963d905447588a91e1beafd382631d447bd commit 1e83d963d905447588a91e1beafd382631d447bd Author: Carsten Haitzler (Rasterman) Date: Thu Nov 9 11:38:35 2017 +0900 elput - ref device that is in the event queue --- src/lib/elput/elput_evdev.c | 12 +++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c index afa42df68c..b41fbe508b 100644 --- a/src/lib/elput/elput_evdev.c +++ b/src/lib/elput/elput_evdev.c @@ -1596,6 +1596,15 @@ _tablet_tool_tip(struct libinput_device *idev, struct libinput_event_tablet_tool } static void +_switch_event_free(void *data EINA_UNUSED, void *event) +{ + Elput_Event_Switch *ev = event; + + _evdev_device_destroy(ev->device); + free(ev); +} + +static void _switch_toggle(struct libinput_device *idev, struct libinput_event_switch *event) { Elput_Event_Switch *ev; @@ -1603,10 +1612,11 @@ _switch_toggle(struct libinput_device *idev, struct libinput_event_switch *event ev = calloc(1, sizeof(Elput_Event_Switch)); if (!ev) return; ev->device = libinput_device_get_user_data(idev); + ev->device->refs++; ev->time_usec = libinput_event_switch_get_time_usec(event); ev->type = (Elput_Switch_Type)libinput_event_switch_get_switch(event); ev->state = (Elput_Switch_State)libinput_event_switch_get_switch_state(event); - ecore_event_add(ELPUT_EVENT_SWITCH, ev, NULL, NULL); + ecore_event_add(ELPUT_EVENT_SWITCH, ev, _switch_event_free, NULL); } int --