As cache2 knows cached image could be not matched even though
hash key is not different.
Please refer to the following comment of evas_cache2_image_open.
/* image we found doesn't match what's on disk (stat info wise)
* so dirty the active cache entry so we never find it again. this
* also implicitly guarantees that we only have 1 active copy
* of an image at a given key. we wither find it and keep re-reffing
* it or we dirty it and get it out */
The hash key is created base on the image file address.
If the image file address to find does not equal cached image file address
then it means that the cached image is no longer valid.
This case could happen with the following step.
(1) Call evas_object_image_memfile_set with content data A
(2) Call evas_object_image_memfile_set with content data B
(3) Add timer with short time (ex: 0.01 sec)
(4) Delete A image, and add A image in timer callback
(5) Delete B image, and add B image in timer callback
Sometimes you could see image of A from the B image, because newly created
image at step 5 has same address of setp 1.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D6870
Fix type error while getting boolean property from Efl.Model_Composite_Boolean.
Fix properties_get methods for all composite models.
Now properly call property.changed events when it is needed.
Use EINA_VALUE_TYPE_BOOL instead of EINA_VALUE_TYPE_UCHAR.
Remove some memory leaks.
Summary:
As discussed in T7204:
- Eo Interfaces/mixins -> C# Interfaces with concrete class
implementations
- Eo Regular/Abstracts -> Proper C# classes
- Added some new generators and helper methods.
- Refactored the class generator, splitting into helper methods
Eo handles now are stored only in the "root" class in any given
inheritance tree (generally, Efl.Object), and accessible to each child.
Methods also are defined in a single place instead of repeatedly
generated in everyfile, reducing the size of the generated .dll from
30MB to around 4.5MB.
Mixins are generated as C# interfaces but any regular class it inherits
from is lost, as we can't have interfaces inheriting from regular
classes. This will be dealt with in a later commit.
Summary of API Changes:
- Merged Inherit/Concrete classes. (These suffixes disappear from
regular classes).
- Interface still have implementations with 'Concrete' suffix for when
they are returned from methods.
- Removed 'I' from interface names.
- Removed interfaces for regular/abstract Eo classes.
- Concrete classes for interfaces/mixins hold the event argument struct.
- Removed '_' from classes, enums, structs, etc, as indicated in C#
naming conventions.
- Namespaces are now Camel.Cased.
- Renamed IWrapper's raw_handle/raw_klass to NativeHandle/NativeClass
Also renamed the test classes as after the namespace change, the
test namespace Test can conflict with the helper Test namespace.
(And use more meaningful names than Test.Testing...)
Also Fixes T7336 by removing a deprecated example and adding
efl_loop_timer_example to build system.
Fixes T7451 by hiding the class_get DllImports and renaming the IWrapper
fields. The native handlers are used in the manual binding.
Still need to work:
- As there are still some events names clashing (e.g. Efl.Ui.Bg with "resize"
from Efl.Gfx.Entity and Efl.Gfx.Image), Events are currently declared on
the interface and implemented "namespaced" in the classes,
requiring the cast to the interface to access the event.
- The Mixin Conundrum. Mixin inheritance will be dealt in a future
commit.
Depends on D7260
Reviewers: segfaultxavi, vitor.sousa, felipealmeida, Jaehyun_Cho
Reviewed By: vitor.sousa
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7451, T7336
Differential Revision: https://phab.enlightenment.org/D7262
Summary:
Creation of the frame object can lead to significant delays in window
creation time on limited-power devices (watches, mobile, tv, etc).
This patch allows setting an environment variable and config value in
order to completely skip frame object creation.
This shaves about 50ms from startup on an i7 8600k, so should be more
substantial a saves on limited-power devices.
Reviewers: kimcinoo, ManMower
Reviewed By: ManMower
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7305
there is a eio_monitor which is tracking on config directory.
and that is the reason why idle processes get waken up once some process call elm_config_save().
this patch fix the function not to wake idle processes up as it was before.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7354
eio_monitor could miss what it is tracking on
in case of calling ecore_file_mv on the tracked file.
so that this patch replace move with copy.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7352
Nothing writes any profile name on profile.cfg inside data dir
This patch removes the logic.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7351
this is done in order to make ecore_event_evas_key_down work with this.
The function can be used to simulate interactions with a efl_ui_win. If
this is not added, then the user of ecore_event_evas_key_down needs to
differentiate between buffer engines and the rest of the engines.
Differential Revision: https://phab.enlightenment.org/D7361
In autotools, src/lib is used as an include path for finding
eo files, which is the same behavior you would get as when using
a system directory. In meson, this was changed to include only
certain directories.
This presents a problem (05682eed7d)
as it is not possible to reference symbols from other paths within
documentation.
Since this is necessary for the time being, work around the problem
by doing a whole src/lib include for now, which fixes the parsing.
Longer term solution is to be discussed and implemented.
Summary:
- Replace '\@ref name' with '@name'
- Remove unused \@internal tag
This tag affects text AFTER it, and there is no text after it.
- Remove \@note tag
Replaced with a simple NOTE: text, since eolian does not have an equivalent tag.
- Remove spurious \@Efl... tags
They should really be @Efl...
- Remove \@p tags
There is no eolian equivalent, and a simpler $ suffices in this case.
Fixes T7482
Reviewers: q66
Reviewed By: q66
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7482
Differential Revision: https://phab.enlightenment.org/D7372
Replace fill/stroke renderer preparation of shapes to canvas vg,
These renderer now is triggered by their own instances.
This cairo change part is missing bym cbf70b32f049583fc0bf7542af7d89d4ef5d50c55.
Summary:
Applications want to know current position on scroller.
Also, it is necessary when calculate position of focusable object.
Reviewers: herdsman, akanad, YOhoho, bu5hm4n
Reviewed By: bu5hm4n
Subscribers: bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7251
Summary:
Early accessibility read object and item infomations by elm_access_text_set
but this code is redundant now and removed genlist and list already.
To make a same consistancy of our accessibility informations in list-look widgets
we need to remove this function calls here.
Test Plan: tested Gengrid Item is not readed in gengrid item focused with accessibility on.
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7370
Summary:
The map geometry(cur.map->normal_geometry) is calculated only if
evas_render_updates_internal_loop calls evas_render_mapped as below.
evas_render_mapped
-> evas_object_map_update
-> evas_object_map_update
-> _evas_map_calc_map_geometry
If the mapped object is not on screen, then evas_render_updates_internal_loop
does not call evas_render_mapped, because the mapped object is not active.
The mapped object is not active(i.e. is_active is 0) always because cache.clip
data including visilbe and geometry is not updated after the object goes out
of screen.
Usually the unmapped object updates its cache.clip data with updated geometry
even though it is out of screen as below.
_efl_canvas_object_efl_gfx_entity_position_set
-> evas_object_recalc_clippees
-> evas_object_clip_recalc
-> evas_object_clip_recalc_do
So the mapped object geometry(cur.map->normal_geometry) should be updated in
evas_object_clip_recalc_do if it is out of screen.
Test Plan:
Sample code
{F3455674}
{F3455673}
{F3455672}
{F3455671}
Reviewers: Hermet, jypark
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7344
Child objects are already destoryed during destruction of the parent
object.
This fixes ERR messages when doing `efl_del(sd->smanager)`
object, which is already destroyed at that point.
Child objects are already destoryed during destruction of the parent
object.
This fixes ERR messages when doing operations on the `event_rect`
object, which is already destroyed at that point.
a efl_ui_focus_manager_sub object is a manager object by itself. It
registeres the border elements of itself in the parent focus manager.
However, all elements that are registered in this manager object, are
also automatically children of the parent root object, which means, when
the root object of the parent manager object is moved, then those
children will also be moved. Which means, when the parent manager can
ignore those changes, we can also ignore them.
This improves the overall performance of the "Scroller 2" test case by
26%.
The change to the test is required in order to redirect the events so
the self_dirty bit is setted correctly
Differential Revision: https://phab.enlightenment.org/D7350
this freezes the manager object of the user of the interface. This
improves the overall performance when moving arround focus in a
scrollable object, since no new relations are needed to be recalculated.
This safes up about 2% in the "Scroller 2" test. Additional
optimizations are added in another commit.
Differential Revision: https://phab.enlightenment.org/D7349
this is needed when a object is unregistered, otherwise a user of the
event is not informed when a element is gone, and thus the border
elements might have changed.
Differential Revision: https://phab.enlightenment.org/D7353
the new api can be used to freeze the cache. This means, when the
widgets of the focus manager are all equally moved, the cache can stay,
cause the relative positions did not change, this enables a whole new
set of available optimizations.
Differential Revision: https://phab.enlightenment.org/D7348
before the move and resize events have been used. However, this turned
out to not work well, because not all registered items are real
efl.gfx.entity objects, there is also a custom property for getting the
focus geometry, so now this property is completed with a event that is
emitted when the focus geometry changes. With this event we can
reintroduce relation caching. Since all events are marked correctly
dirty now.
Differential Revision: https://phab.enlightenment.org/D7347
there is one function that needs to be implemented by the inheritor of
Efl.Ui.Focus.Object and that is focus_parent, otherwise child_focus
cannot be propagated correctly. This is now achived correctly for all
widgets.
This fixes from elm_object_focus_get results for toolbar and calendar.
Segmentcontrol inherits from the class, however, the widget itself does
not allow focus, so its never registered probebly.
Differential Revision: https://phab.enlightenment.org/D7331
it appears that the calculation of the unordered elements can be done a
lot easier here, when checking in the initial for loop for the right
parent safes us two more list walk later on.
Additionally, if all elements in this chain have the right parent, and
the amount of elements is the same as the parent has, then this list can
be used as a full replacement.
Differential Revision: https://phab.enlightenment.org/D7330
In the case step is 0, the application will enter in an infinite loop
where the max will never be reached. To fix this, step is set to 1 if 0
is given by the user.
Moreover, step is forced to positive. According to the given min and
max values, the step will be negative or positive. In this way, we are
sure to be inside the correct range.
This will return an Iterator that will walk over a serie of iterator.
This technicaly take ownership of the iterator it is walking over and
destroy as it goes and doesn't need them anymore.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7286
This new syntax separates the parent class from extensions, in
a familiar way to similar to e.g. Java. Since changing everything
at once is a lot of effort, implement it alongside for the time
being.
Eolian now separates 'parent' and 'extensions'. For regular
classes, parent is the first item in the inherits list and
extesions is the rest. For interfaces and mixins, parent is
NULL and extends is the inherits list.
The reason for this is the separation of them in syntax in near
future. It also slightly changes the behavior; since for interfaces
and mixins, parent is always NULL now, you can freely inherit from
all types of classes without needing to manually put an interface
type as the first item of the inherits list.
Since Efl.Interpolator's subclasses are used as interpolator class,
Efl.Interpolator class is changed to be an interface.
This change allows Efl.Canvas.Animation to have Efl.Interpolator as its
property in efl_canvas_animation.eo.
Further reduction in eo overhead.
Differential Revision: https://phab.enlightenment.org/D7315
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Since we're already at the top of the list, we can do the WIN_CLASS test
much more cheaply.
Differential Revision: https://phab.enlightenment.org/D7314
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Placing the cheapest tests first can save on some heavy walks.
Differential Revision: https://phab.enlightenment.org/D7313
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
combining _tree_unfocusable and _tree_disabled into a single function
reduces eo overhead. This saves a few ms at startup in elementary_test.
Differential Revision: https://phab.enlightenment.org/D7308
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Previously, the EOLIAN_EVENT_REDEF_WARN environment variable
enabled extra checks that would include events in checking
conflicts against methods. Since this is probably not necessary
and naming events the same as methods is perfectly fine in itself,
relax this rule and check events completely independently.
In practice, this will disallow using the same name for two
events within the same inheritance tree, which is desirable
in longer term, but cannot be enabled just yet because we have
too many of those conflicts. But it also allows the events to
be named the same as methods or parts, which is fine and was not
possible before.
if the dict is contended on by lots of threads then a spinlock really
makes it slow. a rwlock gets about 1.5-2x speedup depending on
arch/thread count.
@optimize
Summary:
condition:
1. full size rect
2. upper side, if there is same size image object and image object preload state is EVAS_IMAGE_PRELOADING.
below rect cannot be rendered because upper image object was added to cutout area event though image object is not opaque.
so fix opaque check function return false for opaque state of preloading image.
Reviewers: Hermet, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7318
this ensures that the item is focused once the item is realized.
The last_focused_item point is not NULLed anymore, it will be overridden
anyways a few lines below, if the 'if' below is not going to be
executed, then we should not NULL out the field at all, since we want to
remember the item when we are restoring focus in
_elm_gengrid_efl_ui_focus_manager_setup_on_first_touch.
This resolved the latest comment in D7230
This also resolves T7391.
Differential Revision: https://phab.enlightenment.org/D7271
with using the new api of efl.ui.focus.object we can resolve a bug that
was pointed out in P243.
Differential Revision: https://phab.enlightenment.org/D7267
this was forgotten before. However, now the correct parents are returned
This is needed in order to have the child_focus property propagated
correctly accross the parent chain.
Differential Revision: https://phab.enlightenment.org/D7266
focus managers can be used via composition, in this case the normal
manager is NOT inheriting from the
EFL_UI_FOCUS_MANAGER_WINDOW_ROOT_INTERFACE class, but the composition
parent is.
fix T7390
Differential Revision: https://phab.enlightenment.org/D7230
Summary:
efl_ui_format printed ERR log in calendar use case.
calendar only accept format as "B,b,h,m,y,Y"
But it doesn't cover that and not supporting TM type.
If there is other widget which one using format interface, It also has own accpeted format.
So i think it should impelment on widget side.
Test Plan: elementary_test -> efl_ui_calendar.
Reviewers: Hermet, singh.amitesh, Jaehyun, zmike, segfaultxavi
Reviewed By: segfaultxavi
Subscribers: segfaultxavi, cedric, #reviewers, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6871
Summary:
Introduce new packable grid for Efl.Ui.Widget toolkits.
most of parts are same as Efl.Ui.List, and it also support Efl.Pack_Linear,
although it will not support Efl.Pack_Table, because item must be
arranged sequential orders.
Test Plan:
We will make the tests on efl ui test suite.
please test by make check.
Reviewers: Hermet, cedric, felipealmeida, eagleeye, woohyun
Reviewed By: Hermet, eagleeye
Subscribers: CHAN, bu5hm4n, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6985
Summary:
Efl.Ui.Theme class is required to support language bindings.
Efl.Ui.Theme works based on current elm_theme features.
This patch fixes T7357.
Reviewers: segfaultxavi, cedric, lauromoura, woohyun, zmike, SanghyeonLee
Reviewed By: segfaultxavi, SanghyeonLee
Subscribers: SanghyeonLee, herdsman, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7357
Differential Revision: https://phab.enlightenment.org/D7244
Summary:
Efl.Ui.Bg interface does not have any new property or method.
Moreover, Efl.Ui.Bg interface is not used by widgets except
Efl.Ui.Bg_Widget and Efl.Ui.Widget_Part_Bg.
Consequently, Efl.Ui.Bg interface can be replaced by other interfaces.
Due to Efl.Ui.Bg interface, the bg widget class name becomes
Efl.UI.Bg_Widget which is not synchronized with other widget names.
Therefore, to keep consistency with other widgets, it would be better to
remove Efl.Ui.Bg interface and rename Efl.Ui.Bg_Widget to Efl.Ui.Bg.
Reviewers: woohyun, segfaultxavi, bu5hm4n, zmike
Reviewed By: segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7304
Summary:
if clipped color changed and not object color on rect objects, then
the updates could be missed. This bug seems to
have been here a while unnoticed.
Reviewers: Hermet, raster
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7301
In some cases, like the example provided in the referred ticket, the
text is set during the construction of the object.
This adds another call to evaluate the size of the object at the end of
the "finalize" stage, and also removes the line that has set the text to
"".
Fixes T7468
This stuff has been unused for years, so instead of fixing it up, remove
it.
Differential Revision: https://phab.enlightenment.org/D7283
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
After my previous changes, the only thing left that's adding duplicate
pointers should be string allocations, either direct (which have no free)
or stringshare which need to be "freed" for each duplicate as it's a
refcounting mechanism.
This speeds up parsing the theme file modestly (10ms faster launching
elementary_test for me), and should also prevent leaking every
stringshare that's on the freelist if an eet load fails.
I would not be at all surprised if there are still bugs in the fail path,
but I hope this at least mitigates failure tracking's impact on successful
parse times.
Differential Revision: https://phab.enlightenment.org/D7282
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Simplify some confusing typecasts. There may be more around.
No functional change.
Differential Revision: https://phab.enlightenment.org/D7281
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
There are other paths that free this memory, so it ends up freed by the
EET_G_UNKNOWN_NESTED path, yet remains on the list.
It makes more sense to have all the callers deal with this memory.
Differential Revision: https://phab.enlightenment.org/D7280
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
The eet freelist code de-duplicates pointers, so passing duplicates is
just fine, however it does waste time doing the de-dup.
We know when we have a duplicate anyway, so save the time.
Differential Revision: https://phab.enlightenment.org/D7279
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
The eet freelist code de-duplicates pointers, so passing duplicates is
just fine, however it does waste time doing the de-dup.
We know when we have a duplicate anyway, so save the time.
Differential Revision: https://phab.enlightenment.org/D7278
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
you were not able to disable the header checks, so if the header was not
there it indicated that you could turn it of. However, the option check
was in the has_header if not outside of it. Further more, header checks
are done in the subdirectory that is done for header checks,
unneccessary cpu_**** flags are removed, global optimization options are
added to the global_arguments instead of just the package_c_args, which
leads to the fact that also all binaries etc. are build by default with
those optimization flags.
This also reduces the amount of options to a minimum of 1 option, to
just control if there should be the optimization or not.
This also changes from host_maschine to target_mschine, since we
probebly want to enable the optimization for the target maschine, not
the host.
Differential Revision: https://phab.enlightenment.org/D7296
Summary:
the optimization that is build here requries a few .eo.h files - so
ensure that they are generated before they are used.
This fixes the build of efl.
Reviewers: ManMower, raster
Reviewed By: ManMower
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7295
Summary:
Efl.Ui.Layout namespace is removed to keep consistency with other
widgets.
Consequently, "Efl.Ui.Layout.Object" is renamed to "Efl.Ui.Layout" and
"Efl.Ui.Layout." is renamed to "Efl.Ui.Layout_".
Reviewers: segfaultxavi, bu5hm4n, cedric
Reviewed By: segfaultxavi
Subscribers: #reviewers, #committers, SanghyeonLee, woohyun
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7291
Summary: This is done to keep consistency with all the reference counting functions in Eo.
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7274
Summary:
This prevent double destruction of source. if _ecore_wl2_input_del is called
with destroyed source, it can make unexpected troubles.
Reviewers: Hermet, id213sin, devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7265
Summary:
Strings are const and if these are meant to be owned then it
should define its own special free func. Mstrings are mutable
and therefore can be owned and freed using standard free() by
default.
This fixes some warnings around the EFL caused by empty fallback
free funcs created by the eolian generator, and these mutable
strings were not being freed and potentially leaked.
Reviewers: bu5hm4n, stefan_schmidt
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7261
Summary:
1. Pointed out gradient prepare step triggered duplicatedly,
because they are immediate children of container.
But gradients is desigend to fill shape,
shape could get ready of the gradients which are applied to.
So, container doesn't need to prepare gradient children.
2. Ector shape does prepare its gradient renderer in it's prepare time,
each gradients objects doesn't need to prepare renderer separately.
Here code skip duplication of sequences of gradients preparation step.
by cleaning up logic.
Reviewers: #committers
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7269
Summary:
In some cases, white space at end of line is remained after line-break.
This issue is happened when Textblock do word wrap at the next item. Without
spliting a previous text item. Then, Textblock just skipped calling
_layout_item_text_split_strip_white() function.
This patch also fixed a wrong test case based on wrong logic.
The range rectangles shouldn't be overlapped. Because of remained white space,
a meaningless rectangle was added. And it overlapped by next rectangle.
@fix
Test Plan:
Fixed an exising test case for range renctangles.
Run test case.
Reviewers: herdsman, woohyun, raster, cedric, subodh, subodh6129
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7204
Summary:
Whenever _edje_recalc_do() is called, a state value of
Edje structure is increased. This increased value will be stored
in Edje_Real_Part and Edje_Real_Part_State for calculation optimazation.
But, once the state value is overflowed, it ruins calculation logic.
@fix
Test Plan:
Run an Edje file which has infinite animation for over an hour.
I'll attach an example to phab.
Reviewers: raster, cedric, woohyun, Hermet
Reviewed By: Hermet
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7264
this is usefull for later implementations in spinner and fileselector.
A event for this was not added because the result is only really usefull
after a focus operation has been successfull.
Differential Revision: https://phab.enlightenment.org/D7102
Summary:
This commit removes some clashes (i.e. names as classes and namespaces
at the same time). It'll avoid nested items that are either forbidden
(C#) or problematic (Python) in some languages.
Reviewers: segfaultxavi, bu5hm4n, felipealmeida
Reviewed By: segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7260
Summary:
Check if the Eo to be replaced is NULL before calling efl_unref.
The documentation implies that the replaced object can be NULL, so this
check avoids unnecessary function calls and warning logs.
Add an EINA_SAFETY check in order to properly print an error message
when the function is used with an NULL storage pointer.
The documentation specifies that the first parameter can not be NULL.
So printing an error message should be better than silently returning.
Add a boolean return to the function that signalizes if the content of
the storage was changed. It is NOT an success/error flag, it is just a
simple helper to quickly test for a change in content.
This feature was inspired by eina_stringshare_replace that is used in
similar ways around the code.
Change the documentation to match the changes and to be more specific
about what is expected and how the arguments are treated.
Reviewers: raster, bu5hm4n, cedric, felipealmeida
Reviewed By: bu5hm4n
Subscribers: #reviewers, #committers, larryolj
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7256
cnp mode type was a mess. thankfully it was a bit simpler than it
seemed. cleaned up code to deal with it sanely and keep it a single
type as intended byt he api too.
so gcc likes to warn even if the truncation is intended. there are
verious ways around this, but in this case it's really just writing
your own ... which is pretty simple.
there is just too much warning noise for efl.
using strncpy with strlen of the string you append is pointless.
again... strcpy will do - but use memcpy to be exact and pre-compute
sizing etc. only once. fixes warnings.
so eldbus does silly things like use a cb ptr with a different type of
cb - very explicitly. so it casts but warnigns don't like it and
assume it maybe a bug, so use void *'s so have some silence for this
bit of evil.