Commit Graph

4061 Commits

Author SHA1 Message Date
Wonki Kim 3376e7cbd2 meson: Add a option for hyphen dictionaries directory
this patch provides a way to config hyphen dictionaries dir on meson.
Differential Revision: https://phab.enlightenment.org/D7581
2019-01-10 19:44:01 +01:00
Hermet Park 98c8ddd2fe evas doc: fix minor typos. 2019-01-10 15:40:58 +09:00
Hermet Park a5040e029d evas vg: clear mask buffer properly.
when mask buffer is reused, it must be cleared first.
2019-01-10 14:20:53 +09:00
Jean-Philippe André 6539bc7788 textblock: Fix crash with filters
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
2019-01-09 13:08:39 -05:00
Hermet Park bc001492d2 evas vg: remove unused parameter warning. 2019-01-08 19:58:57 +09:00
Hermet Park 3008bc4784 evas vg: enable visibility true by default.
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.
2019-01-08 13:09:47 +09:00
Hermet Park 71776d2153 evas vg: don't draw invisible nodes. 2019-01-07 19:28:14 +09:00
Marcel Hollerbach 859afc8f54 meson: lets keep dependency
the reason for using dependency here is that meson *sometimes* uses
dependency as a wrapper arround finding a dependency, this is usefull if
a known target is having different library names on different OSs. On
macos the cc.find_library was causing errors, since the library is not
called GL there.

This fixes the macos build.
2019-01-04 12:07:01 +01:00
Cedric BAIL 038612736c efl: rename Efl.Ui.Base -> Efl.Ui.I18n as that is really what it does.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7506
2019-01-02 11:03:51 -08:00
Hermet Park 408774f4ba evas vg: ++safe code.
null argument handling.
2019-01-02 17:22:08 +09:00
Hermet Park 7d71bf55be evas vg: fix typo. 2019-01-02 13:38:23 +09:00
Hermet Park 690619ee88 evas vg: ++safe code
strong check validation of vg object.
2019-01-02 13:33:25 +09:00
Hermet Park fe05e5559b evas vg: stablizing parenting logic.
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.
2018-12-28 15:13:55 +09:00
Hermet Park 5a46f2136a evas vg: more strict check for the argument.
a shape node must have vg node as the parent.
2018-12-28 13:39:37 +09:00
Hermet Park d2ec3ce170 efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED
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
2018-12-28 12:20:15 +09:00
Carsten Haitzler 6505bac710 meson - fix meson build to specifically link to GL or GLES
these are explicit options to choose gl or gles. i found that evas
moduels were not linking to gles, but to GL even wiht gles enabled.
2018-12-26 17:49:40 +00:00
Hermet Park 0e278d1de8 Revert "efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED"
This reverts commit 7c38c0c915.

Oops, didn't intend this patch.
2018-12-26 19:32:42 +09:00
Jiyoun Park e4e415d957 evas textblock: fix render_pre bug related with clipper
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
2018-12-26 19:29:10 +09:00
Hermet Park 7c38c0c915 efl gfx_path: remove EFL_GFX_PATH_EVENT_CHANGED
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
2018-12-26 19:29:10 +09:00
Hermet Park 149dcb17cb evas vg: optimize vg object internal connections.
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.
2018-12-20 14:42:38 +09:00
Jérémy Zurcher 8a617fda97 silence most left over compiler warnings
Summary: silence -Wshadow -Wunused-variable -Wunused-parameter

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7473
2018-12-18 13:08:01 +01:00
Hermet Park 83a0e83e3f evas vg: fix indentation. 2018-12-18 15:25:48 +09:00
Jaehyun Cho 7a5589b14a efl_canvas_surface: change mixin to abstract
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
2018-12-18 11:17:12 +09:00
Hermet Park 3f17b4f054 evas vg: remove redundant function code. 2018-12-17 19:59:29 +09:00
Carsten Haitzler 0d2b624f1e evas gl - make GLintptr etc. also ndefed for GL_VERSION_1_5 fix typedef
It seems that GL_VERSION_1_5 define == these provided by gl already. At
least reading the mesa headers I do, so this should fix T7502

@fix
2018-12-15 16:19:01 +00:00
Derek Foreman aab08fb6a8 evas_render: Ignore objects on planes for rendering
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
2018-12-14 13:30:21 -06:00
Derek Foreman 21726e05fc evas_render: Ensure proper rendering when objects are on planes
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
2018-12-14 09:52:09 -06:00
Derek Foreman 706f377edd evas_render: Render missing bits when plane state changes
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
2018-12-14 09:52:07 -06:00
Derek Foreman 95dce74b85 evas_render: Move plane setup code
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
2018-12-14 09:52:06 -06:00
Derek Foreman 9362bc9bb2 evas_render: Refactor plane code
It's just tidier this way.

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7193
2018-12-14 09:52:04 -06:00
Derek Foreman ac065749a6 evas_object: Add function to test if hardware plane status changed
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
2018-12-14 09:52:03 -06:00
Derek Foreman 73e5bb84a1 evas_object: Add function to test if an object is on a hardware 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/D7190
2018-12-14 09:52:01 -06:00
Carsten Haitzler 3a075988e4 evas cpu - just rely on eina cpu entirely to avboid feature dups
so evas cpu used to be the thing then eina cpu came and did the same
and evas cpu optionalyl could lsit on top... just move it all to eina
cpu so one central place does this and evas_cpu is purely a compat
wrapper.
2018-12-08 04:46:03 +00:00
Hermet Park fbe92aa67f evas ector: add software implmentation for masking feature.
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.
2018-12-07 19:50:08 +09:00
Hermet Park 950059ce9a evas vg: revise basic vg cache logic.
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.
2018-12-07 19:08:34 +09:00
Hermet Park 072f5a2fa0 evas vg: code refactoring.
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.
2018-12-07 18:06:38 +09:00
Hermet Park 093e32a0fb evas vg: code refactoring.
keep internal variable and structre names consisteny.
no logical changes.
2018-12-07 17:14:15 +09:00
Hermet Park ca3ddc21e4 evas vg: code refactoring.
make code clean and neat, no logic changes.

use macro to reduce lines.
rename ambiguous internal variables.
remove unused variables.
2018-12-07 15:37:02 +09:00
Hermet Park dc5db85470 evas vg: remove unused internal function
Vector can't return image data yet.
This function is useless.
2018-12-07 14:22:43 +09:00
Carsten Haitzler 01ed58d52d evas - cpu - fix sve check when neon is disabled... 2018-12-06 15:32:17 +00:00
Daniel Kolesa 36a5b5bf13 canvas: disable an eolian-style api reference
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.
2018-12-06 11:45:06 +01:00
Hermet Park a8244ee642 doc: remove since_tizen.
This tag must be valid for only tizen world.
2018-12-06 14:41:51 +09:00
Marcel Hollerbach c1dd57d210 meson: use eolian_gen with -S
this ensures that eolian does not parse installed .eo files

Differential Revision: https://phab.enlightenment.org/D7405
2018-12-03 19:00:26 +01:00
Carsten Haitzler 168fec6995 eina+evas cpu - add theoretical SVE support
SVE is a new-ish ARM vector instruction set like neon... but with
wider vectors (and variable vector sizes). this adds the flags and
hwcaps checks.
2018-12-03 11:04:27 +00:00
Shinwoo Kim 3a89ea15b9 evas cache image: compare with cached image file
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
2018-11-29 16:01:48 -08:00
Xavi Artigas 05682eed7d eo-docs: Remove Doxygen tags from efl*.eo files
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
2018-11-28 13:33:46 +01:00
Hermet Park 507a705d5d evas vg: add one comment todo. 2018-11-28 15:38:56 +09:00
Hermet Park bf70b32f04 evas ector: Replace renderer preparation responsibility.
Replace fill/stroke renderer preparation of shapes to canvas vg,
These renderer now is triggered by their own instances.
2018-11-28 13:38:23 +09:00
Hermet Park 700b302517 ector: remove quality option.
This option is empty, useless.
No plan to support it.
2018-11-28 12:07:22 +09:00
Hermet Park c9d20d488b Revert "evas map: calc map geometry when it is out of screen"
This reverts commit 8a7817cdd9.

Sorry, I didn't intend this patch...
2018-11-27 11:24:10 +09:00
Shinwoo Kim 8a7817cdd9 evas map: calc map geometry when it is out of screen
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
2018-11-27 11:21:52 +09:00
Jaehyun Cho 6cc7c1b830 efl_interpolator: change Efl.Interpolator class to interface
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.
2018-11-23 21:43:54 +09:00
Hermet Park ce8b9e4b85 evas vg: rename evas_vg prefix to efl_canvas for consistency. 2018-11-23 20:01:53 +09:00
Yeongjong Lee c7ee93eebb Remove duplicated interface inheritance in eo
Summary:
Delete unnecessary interface inheritance

Efl.Ui.Base ==> Efl.Ui.Widget - Efl.Canvas.Group - Efl.Canvas.Object - Efl.Ui.Base
Efl.Text_Cursor ==> Efl.Text_Markup - Efl.Text_Cursor
Efl.Pack_Layout ==> Efl.Ui.Box - Efl.Pack_Layout
Efl.Ui.Translatable ==> Efl.Ui.Layout - Efl.Ui.Widget - Efl.Ui.Translatable
Efl.Part ==> Efl.Ui.Widget - Efl.Part
Efl.Ui.View ==> Efl.Ui.Layout.Object - Efl.Ui.View
Efl.Access.Value ==> Efl.Ui.Spin - Efl.Access.Value
Efl.Gfx.Buffer ==> Efl.Canvas.Image_Internal - Efl.Gfx.Buffer
Efl.Canvas.Pointer ==>  Efl.Ui.Widget - Efl.Canvas.Group - Efl.Canvas.Object - Efl.Canvas.Pointer
Efl.Gfx.Size_Hint ==> Efl.Ui.Widget - Efl.Canvas.Group - Efl.Canvas.Object - Efl.Gfx.Size_Hint

Test Plan: make check

Reviewers: Jaehyun_Cho, Hermet, woohyun, segfaultxavi

Reviewed By: Jaehyun_Cho, segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7241
2018-11-22 17:22:04 +09:00
Jiyoun Park bb455f3490 evas_object_image: fix cutout bug related with opaque object
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
2018-11-21 20:55:32 +09:00
Bryce Harrington 3f957a9bd0 evas vg: Check for OOM when setting root node in a vg canvas 2018-11-21 20:55:13 +09:00
Bryce Harrington cd6e7fe685 evas vg: Check for OOM in evas_cache_vg_entry_create 2018-11-21 20:38:50 +09:00
Hermet Park 2191178ef2 evas vg: fix indentation.
non-logical changes.
2018-11-21 20:35:11 +09:00
Hermet Park 06de063739 evas vg: set update dirty region properly.
zero sized dirty region is insane,
it must be size of vg area.
2018-11-21 20:08:39 +09:00
Hermet Park fc4d7da72f evas vg: update render properly.
If tree viewport is changed, vg visual must be updated,
This checks internal changed flags to update next frame.

@fix
2018-11-21 20:06:24 +09:00
Hermet Park 111e1eb9c6 evas vg: code refactoring.
This doesn't change any logics.
just renamed internal variables and functions.
2018-11-21 20:01:09 +09:00
Jiyoun Park 4e044fd9c2 evas rect update calculation - account for clipped color changes
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
2018-11-19 15:24:36 +09:00
Daniel Hirt fa1295c146 Canvas text: emit 'changed' event on markup set 2018-11-18 12:33:30 +02:00
Marcel Hollerbach 46422187d8 meson: cleanup the native-cpu optimization build code
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
2018-11-16 17:29:05 +01:00
Hermet Park 01633207ca evas ector: fix memory leaks.
Summary:
Make it sure ref/unref pairs.

unpaired reference count occures object dangled.

@fix

Reviewers: #committers

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7270
2018-11-14 21:51:24 +09:00
Hermet Park e2cd8eea55 evas vg: optimize gradient sequences.
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
2018-11-14 21:50:50 +09:00
Youngbok Shin 09da85807a evas textblock: remove white space after line-break by a next item
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
2018-11-14 10:48:54 +02:00
Xavi Artigas 295418ed59 doc: Fix misuse of $ instead of @ in comments
$ renders the next word monospaced whereas @ turns the next word into a link.
2018-11-13 12:41:51 +01:00
Carsten Haitzler 3ed1f61198 Revert "meson: fix a potential race in evas_opt build"
This reverts commit 32b79c7986.

don't need eo as a dep anymore as i unlinked eo from the sse opt build
2018-11-12 16:42:44 +00:00
Carsten Haitzler ae2d399dd6 build - evas - sse3 optimized code - decouple from eo 2018-11-12 16:42:17 +00:00
Daniel Kolesa 32b79c7986 meson: fix a potential race in evas_opt build
We need to declare dependencies for .eo file generation to prevent
compiling files depending on generated files before they are
generated.
2018-11-12 16:22:20 +01:00
Carsten Haitzler 5aa8afd60d evas textblock - fix unused params/vars 2018-11-09 12:37:09 +00:00
Carsten Haitzler 34b45b235c evas textblock - use proepr free iterator prototype 2018-11-09 11:44:00 +00:00
Carsten Haitzler ca26f83ec9 evas - warn - use correct free func prototype 2018-11-09 11:44:00 +00:00
Carsten Haitzler d70ee74ded evas - neon blend - warn - color mul, not used in one asm func - mark as such 2018-11-09 11:44:00 +00:00
Carsten Haitzler c1ad0879a1 meson - add checks/options for mmx, sse3, neon, altivec
so we can build our assembly fast-paths again.... - also clean up the
code a bit to match...
2018-11-09 11:43:59 +00:00
Marcel Hollerbach 21845a11dd meson: fix hyphen support
there was a missing define for the search directory
2018-11-07 13:41:08 +01:00
Daniel Hirt 6285cfe366 Efl text style: remove 'underline2_type' property
This moves the logic to the 'underline_type' property, in which we
define the type.
2018-11-06 18:13:21 +02:00
Daniel Hirt e1fc2ea48f Canvas text: share common style strings in style_set
Style strings will now be implicitly handled and shared by the object.

Also, some of the code was simplified for better readability.

@optimize
2018-11-06 00:54:10 +02:00
Daniel Hirt d50bc7f885 Canvas text: remove old style tag 'replace_len' field
The result isn't used at all, so the field is useless.
Maybe we should use stringshare comparisons.
2018-11-06 00:54:10 +02:00
Daniel Hirt 581fa91a6b Canvas text: emit text,changed event on markup_insert 2018-11-05 18:17:42 +02:00
Daniel Hirt 9903e7d556 Text: add markup_range_get
This allows to retrieve the markup representation of the current text.

@feature
2018-11-05 17:31:06 +02:00
Daniel Hirt 294040c86e Canvas text: don't emit 'cursor,changed' on legacy cursor_copy 2018-11-05 17:31:06 +02:00
Daniel Hirt 2caa38f166 Canvas text: fix line_jump_by logic
Some cases of line_jump_by did not emit "cursor,changed" when it should
have.

@fix
2018-11-05 17:31:06 +02:00
Jiyoun Park 98149c4c2b evas_render: fix objects change occured withoout real rendering.
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
2018-11-05 14:20:42 +09:00
Marcel Hollerbach 47e6bbb397 evas - fix pending object set tracking to not multi-add the same object
flag if obj in pending array and don't add if already there. fixes
run-away slowness in rendering in some cases
2018-10-31 11:43:55 +00:00
Carsten Haitzler 2098f55ba2 evas - remove excess data scope lookup during render when getting changed
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
2018-10-26 15:35:00 +01:00
Hermet Park 74a695ecf1 evas map: remove unnecessary count comparison.
Our map points is fixed to 4. And no plans to support other cases yet.
2018-10-26 20:33:44 +09:00
Hosang Kim 46cca0febf evas: fix backward compatibility issue.
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
2018-10-26 20:28:03 +09:00
Derek Foreman e3a2d0be45 evas_object: Refactor pixels get hack
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
2018-10-26 20:15:00 +09:00
Derek Foreman bec631aa2c evas_image: Force stacking check on non-video surface
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
2018-10-26 20:09:37 +09:00
Hermet Park 16bad8df79 evas filter: add a commentary for a temporary fix. 2018-10-26 19:33:05 +09:00
Youngbok Shin 4107e7644d evas filter: remove critical messages from Evas Filter
Summary:
When you run filter examples with enabling GL engine support,
you can see critical messages which say don't use efl_unref for buffer object.
So, efl_unref has to be replaced with efl_del.
@fix

Test Plan: Run filter example with GL

Reviewers: cedric, Hermet, raster, woohyun

Reviewed By: Hermet

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7119
2018-10-26 19:30:28 +09:00
Shinwoo Kim f802c8f482 evas_image_main: make the cache->usage count eina_file size
Summary:
The image.data is set to null by evas_common_rgba_image_unload_real.
After this point the cache->usage does not count cache_entry.w and h value when
evas_gl_common_image_free calls evas_cache_image_flush.
So the cache->usage increases just around 300. If the cache->limit is 4194304,
then the cache could have around 1398 items. This would be fine.

But each items hold eina_file, and the cache does not count eina_file size.
If the file size is 326352, then a process could use 456527385 bytes.

So this patch set make the cache->usage count eina_file size.
This would be better option than https://phab.enlightenment.org/D7029

Reviewers: Hermet, jypark, cedric

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7030
2018-10-26 19:16:33 +09:00
Marcel Hollerbach e19d239147 meson: prepare general build for the bindings
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
2018-10-24 12:05:58 +02:00
Daniel Kolesa 5a3d79d383 meson: add eolian custom dependencies support
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.
2018-10-24 12:02:55 +02:00
Hermet Park 36fc2e6a93 evas image: fix non-rendered preload image.
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
2018-10-23 14:49:46 +09:00
Carsten Haitzler 7baac6a556 build - meson - fix linking of gl gneric to link to libm
need maths lib for lots of modules... so link to it.
2018-10-18 22:01:47 +01:00
Marcel Hollerbach 52e0b8440b Revert "meson: add cxx bindings"
This reverts commit 5aaf2cbb5d.

The cxx bindings were accidently merged. Things are missing (like .eot.h
files)
2018-10-18 16:12:13 +02:00
Marcel Hollerbach 5aaf2cbb5d meson: add cxx bindings
this commit adds cxx bindings to meson.

Differential Revision: https://phab.enlightenment.org/D7169
2018-10-18 16:01:07 +02:00