every canvas object has had this leak for some time:
==25217== 64 bytes in 1 blocks are definitely lost in loss record 1,669 of 3,515
==25217== at 0x4C2FB6B: malloc (vg_replace_malloc.c:299)
==25217== by 0x688D839: eina_hash_new (eina_hash.c:755)
==25217== by 0x688D940: eina_hash_string_superfast_new (eina_hash.c:791)
==25217== by 0x6265F8C: _efl_gesture_manager_efl_object_constructor (efl_gesture_manager.c:66)
These API functions will be used inside Enlightenment in order to
determine the proper extended screen size based on outputs relative
position.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
at least terminology was broken by this. perhaps other efl apps. if an
efl app has decided to manually play with focus itself, like set focus
to some obj then leav ie, this line breaks that and interferes with
the object focused whenever the window gets focus set. if there is a
focus manager at least this is a new thing and so let the focus
manager set focus, but dont set old evas focus.
this fixes the break added in 56beb861e8
Summary:
Calling evas_object_polygon_add(NULL) cause segmentation fault,
because there has been removed null check logic in evas_object_polygon_add(0ff7429)
This patch fix the problem.
Test Plan:
1. Call evas_object_polygon_add(NULL)
2. Check segmentation fault happen
Reviewers: cedric, jpeg, woohyun, jypark
Differential Revision: https://phab.enlightenment.org/D5801
it seems that focus changes to FOCUS=FALSE are causing autodel windows
to kill themself, so we only set the focus on the window if the window
manager calls focus in AND we dont have anything to focus and nothing is
focused yet.
docs say return true on succesas, false on failure. adding a rect we
already added is not a failur. it's an optimization to a NOP. so fix.
this was brought up by and fixes T6669 ... but in the opposite way.
the format string checking was just ... wrong. it didnt' handle %%. it
didn't handle constant strings with no format in them... now it does.
fixes T6697
@fix
Summary:
efl_part macros are using each widget's internally defined
default_part_get() functions to get default part name.
This might potentially cause errors when future widgets
inherits the widget but not overriding Efl.Text.text and
Efl.Content.content.
Reviewers: jpeg, cedric, woohyun, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5797
this seems to be the only place where the related components are
explicitly used
neither of these components have fork-safe connections, so there is no
benefit to calling them during quicklaunch init
stealing the message data here prevents events which aren't being flushed from
ever being usable again and is unnecessary since the free callback will be
automatically called during the destructor
ref 5dd52fd09b
Before solving following problem in Efl.Ui.Check
https://phab.enlightenment.org/T6673
The changed callback is called with opposite value,
if application is using Efl.Ui.Check with state pointer.
The reason is that the changed callback is called in
efl_ui_nstate_activate, and the value refered by state pointer
is changed only after the efl_ui_nstate_activate is called.
static void
_activate(Evas_Object *obj)
{
EFL_UI_CHECK_DATA_GET(obj, sd);
efl_ui_nstate_activate(obj);
if (sd->statep) *sd->statep = efl_ui_nstate_value_get(obj);
Summary:
This patch fixes a break of consistency of return data from ecore_event_del.
Before EFL 1.20, when calling ecore_event_add(ECORE_EVENT_SIGNAL_USER, event_data, NULL, &data);
The user data(data) is saved at event->data. and when user calls ecore_event_del(event_handler),
ecore_event_del returns event->data. However, current ecore_event_del returns pd->ev.
I think it is ABI break.
Test Plan: Execute test suite
Reviewers: cedric, raster, stefan_schmidt, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5786
If an output gets disconnected, we would still like to be notified of
that. In the _outputs_update function, we mark an output as
disconnected by setting output->connected and output->enabled to
FALSE. With this line in place (in the output_event_send function) we
would never get notified if an output was disconnected.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Efl.Ui.Text:
The EO file contains a lot of references to legacy Elm types, which are
defined in elm_general. They should be checked and moved over to
efl_ui.eot if necessary.
Efl.Ui.Multibuttonentry:
This class was originally supposed to be based on a Model Item but as of
now the API is still uncertain, so MBE itself hasn't been worked on
more. Disable this from EO-only apps until its API is fixed.
Ref T6666
after a fork, any existing connection objects can no longer be used,
but it's up to the user to destroy them. internally, this prevents
existing connections from ever being returned as valid connections
and creates new ones after a fork
also destroy fd handlers for connections to ensure that no data is
accidentally clobbered before the connections are cleaned up
The Efl.Access.Attribute is using key and value.
The value could be NULL. If the value is NULL, then following error occurs.
*error:
arguments to dbus_message_iter_append_basic() were incorrect,
assertion "_dbus_check_is_valid_utf8 (*string_p)" failed
in file ../../dbus/dbus-message.c line 2712.
This is normally a bug in some application using the D-Bus library.
Array or variant type requires that type string be written, but end_dict_entry
was written.
The overall signature expected here was 'a{ss}' and we are on byte 3 of that
signature.
This is a follow-up to a44ae48df811ff2bd085da86db1688c0f387efc4.Need to
undo the markup_get call, so that the correct code path
(_efl_ui_layout_text_set) is used. Legacy checks are in that code path.
ref T6642
Commits c07a40c745 and
429e19563d tried to fix markup retrieval by
creating a different code path for the setter and getter. However, legacy code
paths needs to be taken into consideration.
This commit fixes legacy widgets (like guide text that did not show any text
in the entry at the top of 'elementary_test').
ref T6642
Summary:
we need to consider the manager change to NULL
@ref T6616
Reviewers: bu5hm4n
Subscribers: cedric
Maniphest Tasks: T6616
Differential Revision: https://phab.enlightenment.org/D5771
Summary: the provider_find can be called before parent_set in constructor.
Test Plan:
1. EINA_LOG_LEVELS=eo:2 elementary_test -to menu
2. check that there is no warning message about efl_provider_find
Reviewers: jpeg, bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5773
Summary:
This patch checks for the valid types.
As mentioned API reference documentation, user must know its type before hand.
The type should be chedked like previous efl version and ecore_event_type_flush_internal()
Test Plan: Execute a ecore test suite.
Reviewers: cedric, raster, jpeg, stefan_schmidt, Jaehyun_Cho
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5776
Summary:
This patch checks for the valid Ecore_Fd_Handler_Flags.
The flags should be checked like previous verion because
There are no default handlings in case of out of Ecore_Fd_Handler enum values in other funcs.
Test Plan: Execute a test case
Reviewers: cedric, raster, jpeg, stefan, Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5775
If we have more buffers than we need for 100 frames then drop the oldest.
This can happen if we're on a hardware plane and then removed from it, or
really whenever the compositor feels like holding onto a few frames.
Trimming the queue too soon could result in having to do a costly full
frame redraw, so we wait a while to make sure we don't need one again.
Having more frames than we need costs us a little every draw since we
always use the oldest available. It also wastes memory.
When a surface leaves all outputs we can discard its buffers to save
memory.
Currently most compositors don't send leave events for iconify, so this
pretty much just saves us a cursor buffer under weston for now, but in
the future it could be used for freeing resources of offscreen (fully
occluded or iconified) windows.
We used to abandon all buffers even if they were locked. This can't
actually free them until they're all released by the compositor.
Instead just free any buffer the compositor doesn't have locked, so we can
still re-use them when they're released without needing a full redraw.
There's probably room for additional cleverness here. If we get a new
frame event before the buffer release we may want to keep it, and if we
get the release first we may want to abandon it.
This change finally introduces deferred parsing of inherits to
Eolian, after a long time and many iterations. That means instead
of parsing inherits directly as part of the main file's parse pass,
they're pushed into a queue and parsed later. The validation engine
was modified to properly fill in the remaining info afterwards.
This may introduce breakages but I haven't noticed any. It also
properly unlocks cyclic dependency support in Eolian.
Additionally, this also introduces checks for duplicates in class
inherits (class Foo(Bar, Bar) is no longer possible) and it adds
stricter name checks, so you can no longer have a class Foo.Bar
and refer to it as Foo_Bar in implements. This was actually never
meant to be supported, but the check was previously broken.
@feature
Summary:
This patch checks whether the callback function is valid or not.
Callback function must be set up for the class.
Test Plan: Execute test suite
Reviewers: cedric, raster, stefan, Jaehyun_Cho
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5762
Summary:
Corrects some grammatical errors, and rephrases wording of some passages
for better clarity. Also fix a few doxygen formatting inconsistencies.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5764
Summary:
when Efl.Ui.Image has an image,
efl_file_set(efl_added, NULL, NULL) is not working.
I think this should remove prevous image and go back to empty image.
@fix
Reviewers: jpeg, cedric, eunue, woohyun, Jaehyun_Cho
Subscribers: Blackmole
Differential Revision: https://phab.enlightenment.org/D5742
The elm_layout_text_get is using efl_text_markup_get by following commit.
commit c07a40c745
elm: make elm_object_text_get return markup info as well.
This commit solves following issue
https://phab.enlightenment.org/T6642
If I set object text as below
elm_object_text_set(btn, "Some<br>text");
then elm_object_text_get(btn) returns "Some text" not "Some<br>text".
So using efl_text_markup_set makes sense.
The documentation for these functions claims that passing a NULL array
results in doing nothing - that should also include logging nothing.
EINA_SAFETY_ON_NULL_RETURN() logs an ERR message and should be reserved
for usage when NULL is not actually a valid state.
Additionally, it's entirely possible to turn off EINA_SAFETY_CHECKS, at
which point these functions would stop behaving as the documentation
says they do. Not great.
It was currently only used internally and had the side effect of
creating a new buffer instead of just returning the existing one.
Now it's useful to external callers, as it only returns the existing
wl_buffer and has no freaky side effects.
It was originally thought that this could be common code for multiple
back-ends, but that doesn't really make sense now, so rename it to match
the other dmabuf functions.
The backend should allocate its own private data and return it instead
of a bool.
This assumes all back-ends will need some manner of private data, which
is certanly true for the one back-end we provide.
The specific surface code only needs these generic surface bits to pass
to buffer_create, so make a helper function for that instead of queries
for w, h, and alpha.
This tries to resize the buffer's useable area to fit the specified size -
this is possible if the stride of the buffer is larger than the current
width.
Clear out the window callback when doing session recovery, and
make sure we have a valid on if we get a double commit.
This should stop a session recovery crash, and fix a small leak per
recovery.
better rely on the adapter and wait for realization so the adapter is
wether created or not even created but used with content. This fixes
item content focus, crashes at startup and a freeze in genlist test!
This commit solves following issue
https://phab.enlightenment.org/T6642
If I set object text as below
elm_object_text_set(btn, "Some<br>text");
then elm_object_text_get(btn) returns "Some text" not "Some<br>text".
Summary:
This patch checks whether the port number is valid or not.
The valid port number is an unsigned 16-bit integer, so 1-65535.
0 is reserved already.
Test Plan: Execute test suite
Reviewers: cedric, raster, stefan, Jaehyun_Cho
Reviewed By: raster
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5761
Window constructor is hijacked by the finalize method, which messes up
the normal order of operations. As a result, the legacy type name for a
window object was "elm_widget" rather than "elm_win".
This fixes a crash in E (as it checks the legacy type name to verify an
object's type).
See D5748
when run in a non-wayland environment, it's necessary to do some extra work
in order to guarantee that the keymap remains the same in the compositor as
in the xserver and to also guarantee that modifier states are accurately
applied even when the compositor is not actively focused
fix T6631
when used in enlightenment, it's necessary to be able to directly use
the compositor's keyboard state to ensure consistency when keypress events
are not propagated
@feature
Summary:
elm_entry.eo is not installed to system directory like
"/usr/local/share/eolian/include/elementary-1", and
eolian_gen tries to refer elm_entry.eo which results in failure.
Test Plan:
Create any eo class file which inherits Efl.Ui.Layout.
eolian_gen eo_file.eo
observe eolian_gen finishes
Reviewers: jpeg, herdsman, woohyun, Jaehyun_Cho, cedric
Subscribers: conr2d, id213sin, JongminLee
Differential Revision: https://phab.enlightenment.org/D5760
Summary:
efl_ui_focus_layer_enable_set(obj, EINA_FALSE) can be called before
registered_manager assigned
Test Plan:
1. EINA_LOG_LEVELS=eo:2 elementary_test -to menu
2. terminate the elemetary_test
3. check that there is no focus_manager warning about a call to NULL
Reviewers: bu5hm4n
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5759
Summary:
For now, how to check whether a widget is legacy or not
is to check flags in private data or static flag, which is set
during elm_legacy_add.
If Efl.Ui.Legacy interface is added, it can be easilly checked
by efl_isa(obj, EFL_UI_LEGACY_INTERFACE)
Reviewers: woohyun, jpeg, cedric, Jaehyun_Cho
Subscribers: conr2d, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5748
Summary:
parent_get and smart_parent_get are called in parent_widget_get
this also remove the duplicated code
Reviewers: jpeg
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5757
Summary:
Ensure @return defines error returns consistently. In several cases the
errors were explained in the body but not mentioned in the @return docs.
Drop redundant return value documentation for clarity. Some routines
were defining the return values both in @return and in the doxygen body.
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5756
Coverity reports this as a null pointer dereference, so check for
'seat' existence before comparing with strcmp
Fixes CID1385369
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
"--with-elementary-base-dir" option was ignored by recent patches on elm_config.
The macro is being used in elm_theme. It should be syncronized.
The default value of the macro is ".elementary".
@fix
Test Plan: N/A
Reviewers: raster, cedric, jpeg
Reviewed By: jpeg
Differential Revision: https://phab.enlightenment.org/D5755
Summary: Check to make sure that the seat from the matching device is still null.
Test Plan: Make sure that devices are not being rejected while on seat1. This depends on another patch
Reviewers: ManMower, devilhorns
Reviewed By: devilhorns
Subscribers: ManMower, devilhorns, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5711
Summary: Only seat0 supports virtual terminals.
Test Plan: Make sure enlightenment does not error out on non-seat0 due to a virtual terminal error. Enlightenment will not start yet on seat1 with this alone
Reviewers: ManMower, devilhorns
Reviewed By: devilhorns
Subscribers: ManMower, devilhorns, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5710
Summary: This patch fixes a tentative crash owing to dereference of fd_handler.
Test Plan: Execute test suite
Reviewers: cedric, raster, stefan, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5754
elementary_test -to genlist
-> LOTS of warnings, when creating the genlist, as the items aren't
ready yet. This just avoids the WRN as recalc will happen later anyway.
Summary:
This patch fixes a tentative crash owing to ptr dereference.
Unlike ecore_evas_object_cursor_set and ecore_evas_object_cursor_device_set,
ecore_evas_cursor_set uses Ecore_Evas *ee before calling internal function which
internally checks null ptr dereference of Ecore_Evas *ee.
Test Plan: Executes test suite
Reviewers: cedric, raster, stefan, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D5753
Summary:
This patch fixes a tentative crash owing to null ptr dereference
ecore_animator_freeze() has a same patch already.
Test Plan: execute test suite
Reviewers: cedric, raster, jpeg, stefan, Jaehyun_Cho
Reviewed By: Jaehyun_Cho
Differential Revision: https://phab.enlightenment.org/D5752
b48781aa6c fixed multiple bugs where the
display wasn't flushed correctly, however it was a little overzealous.
Some of the flushes were added after calls that only updated internal
state, some in internal functions in which the caller was already going
to flush, and some were after wayland protocol calls that are double
buffered anyway and won't do anything until a following commit.
Also, I've removes at least one long standing flush where the recently
added flush is in a better location than the original.
Following @taxi2se's recommendation. This is indeed a focus method, and
Widget already inherits from Focus.Object.
Ping @bu5hm4n who probably wants to adapt this further.
Ref T5363
This was proposed by Dave on the ML, I think it makes sense. Right now
the enum is just like the boolean, feature-wise, but it makes more sense
semantically (mode is not a bool) and allows for future extension (eg.
only apply orientation update for landscape vs. portrait modes).
There is absolutely zero testing for this in our existing codebase. Yay.
This interface has a simple 'create' method to create Efl.Canvas.Object
given a key.
This is used higher-up in Ui.Text in the next commit.
Ui text: add ability to set item factories
Added API to set an item factory object.
This is similar to the previous item providers (that worked with
callbacks).
You instantiate a factory object and set it on the Ui.Text object.
Each factory implements the "create" method from
Efl.Canvas.Text.Item_Factory.
This also includes 3 public factories (Image, Emoticon and Fallback):
- Image factory: creates images from added entries (key strings)
- Emoticon factory: creates emoticons by querying the theme
- Fallback: creates image, then falls back to emoticon
If no factory is set, then the fallback (internal) factory is used.
See the added "Ui.text Item Factory" test in elementary_test for an
example of usage.
@feature
Summary:
The Eina_Matrix_Type enum is returned by eina_matrix4_type_get and
eina_matrix2_type_get; it is not Matrix3-specific. Update doxygen
accordingly.
Reviewers: devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5744
Summary:
This fixes some typos and misspellings, massages grammar in a few
places, tidys up a little whitespace, and fixes incorrect docs in a spot
or two.
Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D5745
For one, the hash has to be populated once per inheritance tree
and the skipping on already-validated funcs was interfering with
that as the function might have been validated in another
inheritance tree already.
Also, if a class appeared multiple times in an inheritance tree,
as is common with e.g. Efl.Object, it would get added into the
hash the first time and then checked against the second time,
which would result in a strange error message about the
function being redefined in its own class.
So now we prevent both cases from happening.