With Eina_File we now can pass an efficient handler accross library boundary. Edje
and all underlayer already use it to avoid race condition when setting an Edje object.
Elementary and Enlightenment are still exposed to some potential race condition when
an Edje file is modified underneath there feet. With the following set of function it
should now be possible to avoid those race condition to:
edje_mmap_data_get
edje_mmap_collection_list
edje_mmap_collection_list_free
edje_mmap_group_exists
This is a configure event info, so put it in the right place. Some
places adding edges info were also removed, which means that they were
redundant.
Tested with <Meta> + middle click resize, and with window border resize,
on all the edges. Apparently, nothing breaks.
It's mostly only used inside ecore_wayland library anyway.
The only bit needed outside of the library is the "seat" pointer, but a
new function was added to retrieve such pointer from Ecore_Wl_Input.
This struct is only used inside ecore_wayland itself, so there's no real
reason to expose it. Apparently, hiding it doesn't break anything,
except for the ecore_imf wayland module, which was easily fixed.
If anyone notices a breakage, please let me know.
This should reduce the code size of evil and reduce maintainance as
mingw does now take care of it.
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Make the following functions return Eina_Bool so the caller can detect errors:
edje_edit_state_font_set
edje_edit_part_effect_set
Also deleted duplicate of the "edje_edit_state_font_set" function in Edje_Edit.h
Moved some defines (EDJE_TEXT_EFFECT_MASK_BASIC, EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION etc),
so doxygen generation was fixed.
Also added link (see also) in "edje_edit_part_effect_set" to the Edje_Text_Effect enum.
Reviewers: cedric, seoz
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D302
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
Because of unconditional return in function, a huge part of its body was
skipped making this function useless. Looked like a typo or missed merge.
Reviewers: cedric, seoz
CC: seoz
Differential Revision: https://phab.enlightenment.org/D281
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Make the following function return Eina_Bool so the caller can detect errors :
List of updated functions:
edje_edit_state_min_h_set
edje_edit_state_min_w_set
edje_edit_state_max_h_set
edje_edit_state_max_w_set
Reviewers: cedric, seoz
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D299
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Make the following function return Eina_Bool so that the caller can detect errors :
edje_edit_group_min_w_set
edje_edit_group_min_h_set
edje_edit_group_max_w_set
edje_edit_group_max_h_set
Reviewers: cedric, seoz
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D291
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
This patch make the following function return Eina_Bool so the caller can detect errors.
edje_edit_style_tag_value_set
edje_edit_style_tag_name_set
edje_edit_style_tag_del
Reviewers: cedric, seoz
Reviewed By: cedric
CC: reutskiy.v.v, seoz
Differential Revision: https://phab.enlightenment.org/D294
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
This patch make the following function return Eina_Bool so the caller can
detect errors.
edje_edit_state_image_set
edje_edit_state_image_border_set
edje_edit_state_image_border_fill_set
Reviewers: cedric, seoz
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D295
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
Make the following function return an Eina_Bool so the caller can detect
errors if it want :
edje_edit_state_rel1_relative_x_set
edje_edit_state_rel1_relative_y_set
edje_edit_state_rel2_relative_x_set
edje_edit_state_rel2_relative_y_set
edje_edit_state_rel1_offset_x_set
edje_edit_state_rel1_offset_y_set
edje_edit_state_rel2_offset_x_set
edje_edit_state_rel2_offset_y_set
edje_edit_state_rel1_to_x_set
edje_edit_state_rel1_to_y_set
edje_edit_state_rel2_to_x_set
edje_edit_state_rel2_to_y_set
Reviewers: cedric, seoz
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D296
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
This patch start returning Eina_Bool for the following color setters to be
able to detect errors when calling them.
edje_edit_state_color_set
edje_edit_state_color2_set
edje_edit_state_color3_set
Reviewers: cedric, seoz
Reviewed By: cedric
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D297
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
This patch start returning Eina_Bool for state's min and max value setters, so
we can now catch error when calling those function.
edje_edit_state_min_h_set
edje_edit_state_min_w_set
edje_edit_state_max_h_set
edje_edit_state_max_w_set
Reviewers: cedric, seoz
Reviewed By: cedric
CC: reutskiy.v.v
Differential Revision: https://phab.enlightenment.org/D298
Signed-off-by: Cedric Bail <cedric.bail@free.fr>
In shutdown, I've encountered an infinite loop.
It SHOULD NOT possibly happen, but somehow some image
was marked as delete_me=1 but still present in the LRU.
Summary: This patch start returning Eina_Bool for deleting style from edje edit object to catch those error.
Reviewers: cedric
CC: reutskiy.v.v, seoz
Differential Revision: https://phab.enlightenment.org/D290
This centralizes the place where we have to wait for the init to have
finished before first using the compositor. It's also part of the later
step of hiding Ecore_Wl_* private structs.
Nothing extraordinary here.
Most potential crashes are extremely unlikely.
- Fix CID 1113444
- Fix CID 1113442
- Fix CID 1113441 (Logically dead code, can not be NULL)
- Fix CID 1113440: Explicit null dereferenced
This is actually an impossible situation.
Fixed by checking for nullity and printing out some error
messages instead of just crashing.
- Fix CID 1113439: Dereference after null check
Logically impossible code as both idxpath and datapath
must be either set or null at the same time.
Change the if logic to tell Coverity there's no bug.
- Fix CID 1113438 (Argument cannot be negative)
Fix wrong check of return value from shm_open.
- Fix CID 1113437 (Argument cannot be negative)
Fix wrong check of return value from shm_open.
- Fix CID 1113436 (Dereference null return value)
This case really shouldn't happen.
But the extra check does not hurt.
- Fix CID 1113435 (Dereference before null check)
Check for nullity after map open.
- Fix CID 1113434 (Extra sizeof expression)
Debug buggy debug tool :)
- Fix CID 1113433 (Uninitialized scalar variable)
Insignificant issue: only prints wrong debug logs :)
- Fix CID 1113431 (Uninitialized scalar value)
Check if (!found) only to print out logs. Not a big deal
if found was invalid.
- Fix CID 1039462 (Logically dead code)
Many Edje_Edit API can fail and don't return any error information. This patch start returning
Eina_Bool for setters on dragable confine and event params to catch those error.
Reviewers: cedric
Reviewed By: cedric
CC: seoz
Differential Revision: https://phab.enlightenment.org/D274
Signed-off-by: Cedric Bail <cedric.bail@samsung.com>
At the end of the ecore_wl_init() function, send a sync request to the
server, and add a callback listener to the "done" event. When this event
is received, we are sure that all the registry bind requests done so
far were processed already, and that the registry and globals are
available and can be used.
Now, on the functions that request interfaces or registry, we call
_ecore_wl_init_wait(), which will check if the callback was received
already (that means that all requests inside the init were processed).
If it was not yet, then we wait until receiving that callback, before
returning the requested data.
When you open a theme, it is very likely that most of the data in it will be needed
at some point, that's why it is a good idea to tell it in advance to the kernel so
it could load them if it has some spare ressource.
We can't just blindly turn EINA_FILE_WILLNEED on any file or a wrong eet file would
be loaded in memory when we don't need it. So we shall keep the sequential load until
we are sure that the file is correct and then explicitely tell the kernel that the
rest of the data should be loaded in ram.
Glyphs were previously using 3 shared buffers, now reduce to 2:
- Memory pool (mempool) containing the glyph drawable data
- Index table (Shared_Index / array) containing only the
indexes of the buffers in the mempool
- Glyph_Data table (array) containing the glyphs descriptors
AS WELL as the buffer indexes.
So, we just merge the two index tables into one by using directly
objects of type Glyph_Data for the referencing of the mempool
buffers.
One socket message was sent per each glyph used ... which means
a LOT of messages when text is being redrawn.
Reduce this flow of messages by triggering send() only when
50+ items are being used.
Btw, USED is a bit useless as there is no UNUSED equivalent.
Also, slightly improve debug logs.
In the client, string_get() can cause a remapping of the
strings index & mempool. This means that all pointers to
string data are invalid past that call.
Solution: add a safe_get() function that prevents remap
during search. It might prove faster also, but will
return NULL more often.
Try to reconnect to cserve2 if the socket connection was lost.
Resend some messages if necessary.
Images reload seems to be working.
Actually, the images don't change over time, so the clients just
keep the previous references to their images.
FONT RELOAD IS NOT WORKING:
- Crashes
- Invalid glyph data
- Infinite loop in _glyph_map_remap_check()
Root cause:
When new glyphs are requested from the server, they are added to
the mempool. So it is necessary to remap the font.
Unfortunately, in case of server reboot, we did not keep the mempool
so the old glyphs that were not requested again will not be valid.