this takes the current generated output from eolian for legacy code in
evas and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D8119
this takes the current generated output from eolian for legacy code in
evas and adds it to the tree, then removes legacy references from the
corresponding eo files. in the case where the entire eo file was for
a legacy object, that eo file has been removed from the tree
ref T7724
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D8107
Summary:
instead of passing a string which requires reading docs to know which
arbitrary string key=value sets can be passed, use an extensible struct
which contains more easily referenced values
ref T7672
Depends on D8035
Reviewers: segfaultxavi
Reviewed By: segfaultxavi
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7672
Differential Revision: https://phab.enlightenment.org/D8039
Summary:
api naming in efl uses 'del' when deleting an object and 'remove' when
removing something from an object
ref T7554
Depends on D8034
Reviewers: segfaultxavi, bu5hm4n
Reviewed By: segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl_api
Maniphest Tasks: T7554
Differential Revision: https://phab.enlightenment.org/D8035
Summary:
the previous implementation/api had a number of issues:
* "file" property contained both "file" and "key" values
- also performed file loading operation
* "load_error" property which was specific to image objects
* no methods for controlling file loading/unloading
this patch attempts the following changes:
* split "file" property into "file" and "key" properties
- also remove "key" from existing "mmap" property
* remove "load_error"
* directly return error codes from operations
* add "load" and "unload" methods for directly controlling load state
* add implicit file loading if file/mmap is set during construction
* rewrite all efl.file implementations to move file loading into load() method
* rewrite all usage of efl.file api based on these changes
* add C extension functions to mimic previous behavior
ref T7577
Reviewers: segfaultxavi, bu5hm4n, cedric
Reviewed By: segfaultxavi
Subscribers: vitor.sousa, #reviewers, #committers
Tags: #efl_api
Maniphest Tasks: T7577
Differential Revision: https://phab.enlightenment.org/D8018
Summary:
this requires some internal hackery to preserve legacy compatibility
and correctly translate the single new event into two legacy events
ref T7558
Depends on D8018
Reviewers: segfaultxavi, bu5hm4n
Reviewed By: segfaultxavi
Subscribers: bu5hm4n, segfaultxavi, cedric, #reviewers, #committers
Tags: #efl_api
Maniphest Tasks: T7558
Differential Revision: https://phab.enlightenment.org/D8019
Summary:
"group" is the name used for interfaces api, so be consistent by using
that naming here too
ref T7584
Depends on D8019
Reviewers: segfaultxavi
Reviewed By: segfaultxavi
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7584
Differential Revision: https://phab.enlightenment.org/D8021
this is now done via Efl.Object.event_freeze / Efl.Object.event_thaw.
ref T7555
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8011
it was decided that this property should be internal. So now it is
internal.
ref T7555
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8010
the API is a little bit problematic. The API takes events as an
parameter. However, only the hide and show events can be used, because
move for example is not intercepted, which leads to a situation that you
cannot attach a translation animation to the event. Further more,
handling the animations directory instead of pipeing them through events
seems to be a little bit easier as the case study of the previous events
have shown. Further more, we should never ever overwrite the
callback_call function of a eo base object, those methods are an
incredible hotpath, by the time we would have 1-2 animations on a
object, the event submission would be significetly slowned down.
ref T7555
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D8009
Summary:
this makes it more obvious which events are legacy and makes them easier to remove
in the future
Reviewers: bu5hm4n
Reviewed By: bu5hm4n
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8002
slight tweak to make this more consistent with meaning and docs
ref T7560
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7988
the convention for event naming is to use $property,changed where possible
and to always emit related data with the event to reduce function calls
ref T7558
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7987
Summary:
this interface only contains a single event which is implemented only by the
canvas object
ref T7561
Reviewers: cedric, segfaultxavi
Reviewed By: segfaultxavi
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7561
Differential Revision: https://phab.enlightenment.org/D7905
this needed to take a seat param (to handle multiseat) and also have a
bool return to indicate whether a pointer device exists for the specified
seat
ref T7584
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7957
there seems to be no other way to directly return the default seat object?
ref T7584
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7956
The render_post calls evas_object_change if o->changed is true which is added
by commit "36fc2e6 evas image: fix non-rendered preload image.".
But an image could lose chance to render. Please refer to the following.
(1) 1st render_updates_internal
render_post - evas_object_change for image and its parents
evas_object_reset - for its parent
(2) _evas_image_load_post_update - o->preload is changed to true here
(3) 2nd render_updates_internal
evas_render_mapped cannot call render
The reason of (3) would be unchanged parents.
If render_post returns if an image is preloading, then evas_object_change works
for the image and its parents at (2). And finally (3) will call render.
It would be reasonable because render_pre, and render returns as well.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7973
Summary:
For clarity, since there are all kinds of maps, including a navigation map
widget.
Also, corrected some misspellings.
Test Plan: make && make check && make examples all work
Reviewers: cedric, zmike, bu5hm4n
Reviewed By: cedric
Subscribers: Jaehyun_Cho, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7564
Differential Revision: https://phab.enlightenment.org/D7974
Summary:
these hints are not strictly size-related, so renaming them is more consistent
with their actual function
ref T7563
Depends on D7968
Reviewers: segfaultxavi, cedric, bu5hm4n
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7563
Differential Revision: https://phab.enlightenment.org/D7977
Summary:
Instead of surrounding all the #include "*.eo.h" lines in Efl.h
with #ifdef EFL_BETA_API_SUPPORT, include these files unconditionally, but mark
all classes as @beta in the eo files.
This will allow taking them out of beta one by one as we deem them stable enough.
Otherwise, the current procedure involves moving the #include line out of the
ifdef block, which is cumbersome and messes include order.
Depends on D7950
Fixes T7692
Test Plan: Nothing changes
Reviewers: zmike, bu5hm4n, cedric
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7692
Differential Revision: https://phab.enlightenment.org/D7951
Summary:
to move_to_top and move_to_bottom since the previous names seemed to indicate
that the object only moved one step instead of all the way through the top
or the bottom of the stack.
Ref T7560
Test Plan: make && make check && make examples work as before
Reviewers: cedric, zmike
Reviewed By: zmike
Subscribers: kimcinoo, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7560
Differential Revision: https://phab.enlightenment.org/D7934
Summary:
Eolian adds a per-class BETA guard (like EFL_UI_WIN_BETA) to any method tagged
as @beta. This means that any app (and the EFL code) wanting to use BETA features
has to enable them class by class, which is cumbersome.
This commit replaces the individual guards with the global EFL_BETA_API_SUPPORT
guard, so apps only need to define one symbol to access BETA features.
Any usage of the per-class guards has been removed from the EFL code and examples.
When building EFL the global guard is defined by configure, so all EFL methods
already have access to BETA API.
Efl_Core.h and Efl_Ui.h no longer define EFL_BETA_API_SUPPORT. Apps wanting to
use BETA API have to define this symbol before including any EFL header
(It has been added to the examples requiring it).
Test Plan:
make && make check && make examples still work, but there's a lot less #defines
in the code
Reviewers: zmike, bu5hm4n, q66
Reviewed By: q66
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T6788
Differential Revision: https://phab.enlightenment.org/D7924
Until this commit eo did class functions as part of the vtable, which
enabled those functions to be overwritten in classes inheriting another
class. However in task T7675 we decided that this is not really good for
bindings, as most OOP languages do not support this sort of feature.
After this commit eolian realizes class function completly outside of
the vtable, the c-symbol that is the class funciton is now just directly
redirecting to a implementation, without the involvement of the vtable.
This also means a change to the syntax created by eo:
Calling before:
class_function(CLASS_A);
Calling after:
class_function();
Implementation before:
class_function(const Eo *obj, void *pd) { ... }
Implementation after:
class_function(void) { ... }
This fixes T7675.
Co-authored-by: lauromauro <lauromoura@expertisesolutions.com.br>
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D7901
there is basically no reason for this API. You can only use the API when
you know the class, when you know the class you can also just know the
function to call to get this API.
The reason this API needs to go is that we don't want to use
polymorphism on class-functions.
ref T7675
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7900
Summary:
evas_object_image_pixels_dirty_set(img B, False) means
1. app want to mark image object's data is not dirty anymore
2. app don't want to be called get_pixels callback.
that does not mean image need to be redraw.
evas_object_image_pixels_dirty_set(img B, True) means
1. image object's data is dirty, so image object need to be redraw.
2. app want to be called get_pixels callback.
but pixels_dirty_set(img B, FALSE) function also set o->changed to true,
it cause problem related with rendering
Below case is the example of problem.
1. Smart object A
2. Child image object B
3. app call pixels_dirty_set(FALSE) inside pixels_get_callback
pixels_get_callback is called inside the image object B's rendering.
enlightenment's e_comp_object_render do upper job.
After adding preload fetch,
evas_object_image_render_post can call evas_object_change.
https://phab.enlightenment.org/D7157
evas_render_updates_internal
0. enlightenment call evas_object_image_pixels_dirty_set(img B, TRUE)
o->changed = 1;
evas_object_change(img B)
1. smart obj A is in render_objects
2. evas_object_image_render_pre B, o->change=0
3. evas_render_mapped (Smart A)
3-1. evas_render_mapped (img B)
: enlightenment call evas_object_image_pixels_dirty_set(img B, False)
: o->changed=1
3-2. evas_object_change_reset(img B)
4. pending_change(img B)
4-1. evas_object_image_render_post(img B)
o->changed=1 (3-1 step) evas_object_change(img B)->evas_object_change(Smart A)
5. render_post_reset
smart A is chaged(4-1 step), so, called evas_object_change_reset(Smart A)
###smart A is reset(5 step), img B is changed(4-1 step). after this case,
img B never get change to be redraw.
Reviewers: Hermet, cedric, zmike, ManMower
Reviewed By: Hermet
Subscribers: zmike, ManMower, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7821
Summary:
A large number of cache invalidation calls are doing pointer
indirection that is completely avoidable.
Depends on D7852
Reviewers: devilhorns, cedric
Reviewed By: devilhorns, cedric
Subscribers: devilhorns, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7853
Efl.Canvas.Animation class can be used for custom animation with
Efl.Player class' event callbacks as follows.
Example code:
void _anim_running_cb(void *data, const Efl_Event *event)
{
//Do custom animation
}
{
Eo *anim = efl_add(EFL_CANVAS_ANIMATION_CLASS, win);
Eo *player = efl_add(EFL_CANVAS_ANIMATION_PLAYER_CLASS,
efl_animation_player_animation_set(efl_added,
anim));
efl_event_callback_add(player, EFL_ANIMATION_PLAYER_EVENT_RUNNING,
_anim_running_cb, NULL);
}
As a result, Efl.Canvas.Animation is required to be a regular class
instead of an abstract class.
This reverts commit ea9ff9f547.
Summary:
While it may not be popular opinion that MY_CLASS is confusing and does
more harm than good, using it sometimes and not others in the same file
is pretty obviously not helpful to casual readers.
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7852
the save method is implemented very rarely, and most objects which use efl.file
will not be able to use a save method
ref T5719
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7786
many users of the markup property are not interactive text cases, so splitting
off the interactive methods resolves a number of unimplemented method issues
ref T5719
Differential Revision: https://phab.enlightenment.org/D7787
Summary:
Efl.Gfx.Image_Animation_Controller name refers to the control of an animatable image.
However, the method we use is closer to controlling the frame.
We can change the name to Efl.Gfx.Frame_Controller and enhance the functionality of the frame control.
Test Plan: N/A
Reviewers: Hermet
Reviewed By: Hermet
Subscribers: segfaultxavi, cedric, woohyun, #reviewers, Jaehyun_Cho, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7769
Previous masking image is generated on vg rendering time,
though context is changed to main vg rendering to masking,
This had a issue that ector context switching which is not allowed
in software backend because of asynchronou method.
Now, this improvment brings the masking rendering move to
vg render pre step with synchronous rendering method,
then use the masking surface in the main vg rendering.
Summary:
[Issuse]
The issue solved by this commit occurs with 'export EVAS_GL_PARTIAL_DISABLE=0'.
The _efl_canvas_object_clip_set set clip->changed to true, but did not add the
clip object to e->pending_objects. So there is no chance to reset it to false.
(Please refer to evas_render_object_recalc.)
The clip->changed is always ture so its clipees cannot change its 'changed'
to true. Because if 'changed' is true, evas_object_change returns before
calling evas_object_change for its clipees. (Please see evas_object_change.)
So 'changed' of clipees is false always, and clipees cannot call render_pre
in _evas_render_phase1_direct, and eglSwapBuffersWithDamage is not called.
This caused rendering issue.
This could be rare case. The _efl_canvas_object_clip_set is called when the
clipper and its clipees are out of view.
[Solution]
I would like to explain why removing line setting clip->changed to true makes
sense. First, the following commit added line setting clip->changed to true.
(1) committ 5e8d46e884
Author: Carsten Haitzler <raster@rasterman.com>
Date: Wed Sep 22 04:37:51 2004 +0000
clip bug fix :)
And following commit removed line calling evas_damage_rectangle_add which is
part of commit (1) above.
(2) commit 8767a80b0d
Author: Carsten Haitzler (Rasterman) <raster@rasterman.com>
Date: Wed Apr 16 16:14:16 2014 +0900
fix overdraw issue in evas when clips change
Between above two commits, another commit calling evas_object_change(clip) was
added. This commit sets clip->changed to ture, and adds clip object to
e->pending_objects by evas_object_change -> evas_render_object_recalc.
(3) commit 4aca7949f5
Author: Carsten Haitzler <raster@rasterman.com>
Date: Wed Nov 2 04:03:55 2005 +0000
fix excess overdraw bug
So we do not need the remains of commit (1). REMOVE!! :-]
Reviewers: raster, Hermet, jypark
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7767
also add unit tests for new methods
ref T5719
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7785
it appears that primiteves where not designed to redirect notify calls
etc. to its children elements (if there are any). Thus those can be
empty.
ref T5719
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7778
Gesture manager doesn't care about focus manager events, animation events,
and various other things it's currently hooking.
We can save a lot of pointer indirection nonsense by only paying attention
to events it can actually do something with.
Differential Revision: https://phab.enlightenment.org/D7764
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
We frequently process an array of several events at once, so we can now
look up the gesture manager private data once for the entire array.
Differential Revision: https://phab.enlightenment.org/D7763
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
We frequently BAIL from this function before we actually need the
efl_data_scope_get() return, so we can save some pointer indirection by
deferring.
Differential Revision: https://phab.enlightenment.org/D7761
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Summary:
It appears that it could be interesting to know if a focus event has
already been procecced or not. However, a focus event based on scrolling
activity is not possible, therefore, error about that.
ref T7652
Reviewers: cedric, zmike, stefan_schmidt
Reviewed By: zmike
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7652
Differential Revision: https://phab.enlightenment.org/D7732
Summary:
those classes are defining pure_virtual functions, so the class should
be abstract.
ref T7632
Depends on D7670
Reviewers: cedric, segfaultxavi, zmike, q66
Reviewed By: segfaultxavi
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7632
Differential Revision: https://phab.enlightenment.org/D7671
This reverts commit ae65c64b8d.
It appears that abstract -> abstract enforcement is not needed anymore,
the other patches are fine. However, this one proposes a new object
which is not needed to exist.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7676
Summary:
If widget use both hint_align(HINT_FILL) and hint_max together, there is no way
to set to hint_align. See, elementary_test -to 'efl.ui.box' -
"Button with a quite long text." button. you can control button position
using "Box align" slider, but this is not proper implementation. When there are
two widget which have hint_align(HINT_FILL) and hint_max, those positions are
determined by box_align rather than hint_align. it means widget align cannot be
set individually.
To solve this problem, this patch add hint_fill property. in order to avoid
conflict with legacy API named evas_object_size_hint_fill_set(), it only works
for EO widgets(made by efl_add).
Also, EFL_GFX_SIZE_HINT_FILL is removed.
@feature
Test Plan:
elementary_test -to 'efl.ui.box'
elementary_test -to 'efl.ui.table'
Reviewers: jpeg, Hermet, Jaehyun_Cho, raster, barbieri
Reviewed By: Jaehyun_Cho
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T3912
Differential Revision: https://phab.enlightenment.org/D7409
Not that these deletes ever walk long lists, but it's trivial to stop
doing it entirely.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7611
it seems that this class does not have a meaning when created just like
this. Other classes using it are even abstract, which means, this class
should also be abstract. This is done in order to support that a
abstract class should only contain abstract
ref T7240
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7601
the efl_canvas_group should be abstract in order to support other
classes which are inheriting from it, which are abstract. This is done
in order to support only abstract parents from abstract classes.
ref T7240
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7600
if clipped color changed and not object color on textblock objects, then
the updates could be missed. This bug seems to have been here a while
unnoticed.
This patch refers the patch 4e044fd9c2.
Even if a object is deleted, its render_pre function could be called.
Especially, Evas Textblock is calling relayout() function if there are
any changes. In relayout() function, it creates at least one paragraph
and one line. Normally, all of paragraphs and its line should be removed
when Evas Textblock object is deleted. But, paragraphs and lines which are
created after deleting its object never be free'd.
@fix
Differential Revision: https://phab.enlightenment.org/D7427
Summary:
A crash could happen on a bad call to free() context_dup() returns a
newly malloc'ed context if passed NULL (this seems dubious to me, why
not calloc?).
@fix
Test Plan:
Add an empty efl.ui.text object
Set markup text as "<gfx_filter='code'>Hello</>"
Reviewers: cedric, segfaultxavi, Jaehyun, herdsman, zmike
Reviewed By: zmike
Subscribers: zmike, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7368
So far, vg shapes had been rendered regardless of its visibility.
Recently, I pushed a patch - fa1420965dd264fc8836d133a3215b94e423b8bf
not to render nodes which is invisible. This occurred a side effect
because previous vg implementations didn't take care of nodes visiblity.
It means, though vg users didn't make nodes visible but nodes were
rendered in unintended way.
This is a sort of compatibility problem but I can't let vg users
to change their nodes visible by calling visible set api explicity.
Instead, I'm gonna change the nodes visibility default value to true
so that skiping invisible nodes and compatibility issue as well.
Cleaned up the case when null parent is coming.
and found out efl_data_scope_get() could return invalid data
when invalid CLASS type is given. it's handled as well.
Summary:
Here is an additional optmization patch for removing
unnecessary updation of path,
For instance, let's assume this scenario:
If one vg object has 20 path nodes(shapes),
and every single nodes would have 50 path changes.
(like, append_cubic, append_rect, append_xxx ...);
There would 1000 events triggering.
Furthermore, if there are 20 vector objects in one view,
hese events would be triggered 20000 in one frame.
It's insane, actually I could figured out that happens.
and it took a lot of cpu consumption in some vector usages.
efl_gfx_path_commit() is my idea to avoid this.
When path is ready, the path need to get this api call in the last
to make object changed properly.
@feature
Reviewers: #committers, cedric
Reviewed By: #committers, cedric
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7494
Summary:
assumtion: textblock A has the clipper rect B.
1. evas_render_updates_internal start
: evas_object_clip_dirty_do( rect B)
: evas_object_textblock_render_pre( textblock A)
- if textlock A's o->redraw is EINA_TRUE (o->changed=1 is also same case)
- textblock A's vis 1->0
- clipper rect B lose the chance to call render_pre function.
- clipper rect B's evas_render_mapped function is not called
: pending_change(Rect B)
- obj->pre_render_done = 0, so rect cannot be get the change to call evas_object_change_reset
when rect b remained the pending list and changed value is EINA_TRUE, it cause textblock's rendering problem
Reviewers: raster, Hermet, kimcinoo
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7512
Summary:
Here is an additional optmization patch for removing
unnecessary updation of path,
For instance, let's assume this scenario:
If one vg object has 20 path nodes(shapes),
and every single nodes would have 50 path changes.
(like, append_cubic, append_rect, append_xxx ...);
There would 1000 events triggering.
Furthermore, if there are 20 vector objects in one view,
hese events would be triggered 20000 in one frame.
It's insane, actually I could figured out that happens.
and it took a lot of cpu consumption in some vector usages.
efl_gfx_path_commit() is my idea to avoid this.
When path is ready, the path need to get this api call in the last
to make object changed properly.
@feature
Reviewers: #committers, cedric
Subscribers: segfaultxavi, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7494
Dectected huge amount of unnecessray internal events triggering
which were signaled via vg nodes.
By events, nodes were connected with each others,
and finally reaches to vg object to update its rendering properly.
However GFX_PATH_CHANGE signal is too commonly triggered for scenarios,
listening and response it is too burdensome.
We acutally don't need to do this if all nodes could share the
vg object. Nodes directly notify vg object to update it.
Next patch will come to remove stupid GFX_PATH_CHANGE that's aweful
in performance wise.
Summary:
If Efl.Canvas.Surface is changed from mixin to abstract, then its sub
classes do not need to inherit from Efl.Object to be a class.
Moreover, Efl.Canvas.Surface's data can be derived to its sub classes
easily.
Reviewers: jpeg, segfaultxavi, woohyun, Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7411
We want to pretend they're just not there at this point since the
hardware is responsible for drawing them.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7198
If only objects on planes change, we don't see any damage for the main
buffer, so a page flip never occurs and the plane doesn't update. For
now forcing a tiny damage area is the easy way to work around this.
Also force a pixels get callback for enlightenment's surface frame
callback tracking.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7196
When we move an object into or off of a plane, we need the scene to be
rendered as if the object wasn't there. This adds apprpopriate damage
to make that happen.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7195
Put this at the start of render so we can remove stuff on planes from
the scene graph entirely. This stops us from drawing the entire object
underneat the plane.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7194
This is used to check if an object has been put on or removed from a
hardware plane between calls.
Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7192
This implementation uses Ector_Buffer to generate mask image from vg container,
and pass it to Ector engine. Ector renderer could blend this image as a mask.
Yet only vg container works as a mask, we could extend shape to support masking later.
Still vector gl drawing is not completed, We use software ector buffer to draw on it.
This is on progessing.
There was a big trouble that vg cache didn't free cached data properly.
Plus, there was a unnecessary copy of vg tree data.
This revised version is a improvement of our evas vg cache
in stable and optmization.
capsulate vector file data from efl canvas vg.
hide vector file data structure, capsulate it,
cut off the dependency by vector object.
yet it has evas_cache_entry interface.
This references a file that is not being installed, so the eo
file will fail to parse when used as a system-wide .eo file.
Introduced in 05682eed7d.
Fixes T7495.
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
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
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.
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
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
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:
: condition of problem
- rectangle object of RECT part(BASE part of below edje)
- mapped
- has clipper and clipper is ed's base clipper.
1. _evas_render_phase1_object_process is called of rect object
if rect is mapped, not changed, it call _evas_render_phase1_object_mapped.
2. _evas_render_phase1_object_mapped
when _evas_render_phase1_object_mapped is called,
condition is
src_changed=0 , is_active=0 , obj_changed=0
hmap=0 => because map of this object is only enabled once and not changed.
in this case, rect object's clipper always changed and it cause useless randering
so only call _evas_render_phase1_object_map_clipper_fix when obj is changed.
first time of map set, evas object always be changed, so it maybe ok we call clipper_fix only obj is chaned.
below is sample of edj.
group { name: "elm/notify/center/default";
parts {
part { name: "anim_start";
scale: 1;
type: SPACER;
description {
..
perspective {
zplane: -100;
focal: 1000;
}
}
}
part { name: "anim_stop";
scale: 1;
type: SPACER;
description {
..
perspective {
zplane: 0;
focal: 1000;
}
}
}
part { name: "base";
scale: 1;
type: RECT;
description { state: "default" 0.0;
..
map {
on: 1;
perspective_on: 1;
perspective: "anim_stop";
}
}
}
Reviewers: raster, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7219
getting smart changed meant another scope data get when we already had
the protected data in the caller. don't do that and just pass down.
saves a lot of overhead...
@optimize
Summary:
Sometimes mouse_grabbed flag can not be zero.
Before version of EFL, object has just one mouse_grabbed flag.
But now we have a new feature, so object has list of pointer devices
and each pointer device has mouse_grabbed flag.
We need to check all of pointer devices mouse_grabbed flag.
And if all of mouse_grabbed flag are zero, dispatch move event.
Test Plan:
{F3384050}
gcc -o button_example_01 button_example_01.c `pkg-config --cflags --libs elementary`
Reviewers: iscaro, zmike, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7216
Summary:
Refactor this so it can be used by another call site in a later commit.
Also, reduce its complexity, as we only need the callback to fire, we
don't care about any of the other machinery in _evas_image_pixels_get.
Depends on D7188
Reviewers: Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7189
Summary:
We use this code path for native image hardware planes. Force the
stacking check on those for now so planes don't accidentally occlude
surfaces above them.
Reviewers: Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7188
for bindings we needed a system that could be used to find all special
directories of every subsystem, for eo files headers etc.
The mechanism is documented in the root meson.build
Differential Revision: https://phab.enlightenment.org/D7180
This uses the meson/ninja depfile functionality + eolian to make
sure proper dependencies between generated files and .eo files
are managed, to ensure consistent re-generation of all generated
files that are affected upon .eo file modification.
For custom rules with multiple outputs, Ninja currently does not
support depfiles. Therefore, split those into two custom rules
so that the depfiles functionality can be enabled. While this
is ugly and slows down the process a little by having to invoke
Eolian twice instead of once, it has to be done and it's still
better than what we had in Autotools anyway.
Differential revision: D7187
Fixes T6700.
Summary:
This is one more corner-case issue that I found,
When second image doesn't use preload (but still share the resource)
canvas engine triggers cancellation for first image preload function.
Unluckly, preload thread is cancelled on the intermediate rendering,
First image is not going to rendered, even image turn it changed states.
Because end of that frame, canvas reset/flushed all active objects.
Here changes to retain the changes status to redraw it in the next frame.
Test Plan:
img1 = image_add;
image_file_set(img1, "test.jpg");
image_preload(img1, true);
show(img);
img2 = image_add;
image_file_set(img2, "test.jpg"); //same resource
image_preload(img2, false);
show(img2);
img1 is invisible.
Reviewers: #committers
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7157
Summary:
mouse_grabbed should not be less than zero.
But use OR instead of AND in the condition, so sometimes mouse_grabbed is -1.
Reviewers: woohyun, zmike
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7168
Summary:
It could return NULL root node
while user expect a valid root node in default
as It did before.
This is a regresion bug from long ago.
@fix
Reviewers: #committers
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7162
Well... Logically, we don't need to request preload again,
If image is loaded already. But somewhow it broke the enlightenment pager
and I need to revert the previous behavior here.
Whatever image is loaded or not, here image requests preload again,
unless it is already on preloading.
This was introduced by babacf41b7269a257065a41a2a4ec7763bada25f.
This fixes enlightenment pager bg non visible issue.
a new shiny buildtool that currently completes in the total of ~ 4 min..
1 min. conf time
2:30 min. build time
Where autotools takes:
1:50 min. conf time
3:40 min. build time.
meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read.
Further informations can be gathered from the README.meson
Right now, bindings & windows support are missing.
It is highly recommented to use meson 0.48 due to optimizations in meson
that reduced the time the meson call would need.
Co-authored-by: Mike Blumenkrantz <zmike@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7012
Depends on D7011
Summary: dict->cset is an array, not a pointer, thus is never NULL.
Test Plan: N/A
Reviewers: id213sin, cedric, Hermet, jypark
Reviewed By: jypark
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7121
Summary:
The cso could b NULL so we need to check if the cso is NULL or not before
dereferencing it.
Reviewers: jpeg, Hermet, jypark
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7075