Commit Graph

3005 Commits

Author SHA1 Message Date
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
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
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 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
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
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
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
Hosang Kim e9eff6b30e evas_events: Fix wrong condtion.
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
2018-10-17 14:26:23 +09:00
Hermet Park edab8f44a4 evas vg: fix memory leak at gradient.
Summary:
free memory properly when object is deleted.

@fix

Reviewers: #committers, devilhorns

Reviewed By: #committers, devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7165
2018-10-17 14:08:32 +09:00
Hermet Park adcaa8b82b devas vg: return default root node if possible.
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
2018-10-16 15:07:51 +09:00
Hermet Park 00f889d91a evas vg: fix memory leak.
Summary:
eina array must be flushed when object is deleted.

@fix

Reviewers: #committers, devilhorns

Reviewed By: #committers, devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7160
2018-10-16 12:24:01 +09:00
Hermet Park 57fd66c4b5 evas image: fix preloading compatibility broken.
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.
2018-10-12 14:32:20 +09:00
Hermet Park 27fd6a2eab evas: remove redundant internal functions.
Summary:
Since efl object is introduced, magic check is no more used.
Plus, remove redundant object functions interfaces
 - type_id,
 - visual_id,
 - store
 - unstore

Reviewers: #committers, bu5hm4n

Reviewed By: #committers, bu5hm4n

Subscribers: bu5hm4n, raster, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7153
2018-10-11 13:46:37 +09:00
Hermet Park 1bc57942c0 evas vector: fix typo. 2018-10-10 14:22:34 +09:00
Marcel Hollerbach 46d464e5bf here comes meson
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
2018-10-02 17:22:50 +02:00
Jaeun Choi 6f26da1d72 evas_textblock_hyphenation: remove incorrect expression
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
2018-10-01 15:24:20 +09:00
Jiyoun Park 56e6ac1f5b evas_object_textblock: fix warning the dereference before null check 2018-09-28 18:07:01 +09:00
Shinwoo Kim 040bef8f13 evas_object_smart: fix dereference of null
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
2018-09-21 16:46:03 +09:00
Marcel Hollerbach 376b9985c3 evas_object_callbacks: do not error on NULL on del
it does not really matter if a obj is NULL or not when deleting a callback.
The result might be NULL anyways when the callback is not found.
Additionally, this is very verbose, and leads to the fact that most of
the time normal calls to evas_object_event_callback_del* should be if
(!obj) evas_object_event_callback_del* which is annoying and wastefull.

Differential Revision: https://phab.enlightenment.org/D7028
2018-09-21 09:30:51 +02:00
Derek Foreman d8d5fec1a5 efl_canvas_animation_player: Convert to new animators
Summary:
Use more efficient animator mechanism.
Depends on D7050

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7051
2018-09-18 09:43:17 -05:00
Gwanglim Lee 772759baa2 evas canvas: fix null possibility of evas_object_above_get().
fix null object return when trying to get an object
above the current object and a layer with no objects is present.
probably a layer not being cleaned somewhere.

Reviewed By: Hermet

@fix
2018-09-13 18:28:13 +09:00
Alastair Poole 0b79c20c16 evas_events: NULL check before evas_event_freezes_through.
In some cases focused_obj can be NULL. Add a check before
calling evas_event_freezes_through. Was causing a SEGV
in some situations. Avoiding a crash here is good
but we also need to warn for future debugging to
be more useful.
Differential Revision: https://phab.enlightenment.org/D7027
2018-09-12 21:20:19 +02:00
Jaehyun Cho 14f1866f25 efl: Remove unnecessary abstract/class inheritance
Summary:
Remove unnecessary abstract and class inheritance from eo file because
those abstracts and classes are duplicate.
e.g. if class B (class A) in B.eo file, then class C (class A, class B) in C.eo file.

Reviewers: woohyun, felipealmeida, Hermet, bu5hm4n

Reviewed By: Hermet, bu5hm4n

Subscribers: bu5hm4n, cedric, segfaultxavi, q66, #reviewers, lauromoura, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6982
2018-09-10 20:29:24 +09:00
Hermet Park 2614179af8 Revert "evas vg: changed "vg object" to "vg""
This reverts commit ec69abed9d.

Ooops, I didn't intended this patch.  @#!@#!@#!@#
2018-09-10 17:27:42 +09:00
Hermet Park 8daf8e4db8 evas image: remove duplicated EINA_UNUSED specifier. 2018-09-10 17:26:12 +09:00
Hermet Park ec69abed9d evas vg: changed "vg object" to "vg"
Summary:
Following our naming rule, rename to like other primitives.

i.e. efl_canvas_rect, efl_canvas_image, efl_canvas_vg ...

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7013
2018-09-10 14:06:58 +09:00
Jaehyun Cho 0dabbfe177 Revert "efl: Remove unnecessary abstract/class inheritance"
This reverts commit 4067fafe07.

As commented on D6982, the original patch changes the widget's behavior.
e.g. Efl.Ui.Win cannot be called with Efl.Config_Gloabal APIs.
     Elm.Combobox cannot provide events of Button and Hover.

Until the above changes are resolved, the original patch is reverted.
2018-09-05 17:14:22 +09:00
Jaehyun Cho 4067fafe07 efl: Remove unnecessary abstract/class inheritance
Summary:
Remove unnecessary abstract and class inheritance from eo file because
those abstracts and classes are duplicate.
e.g. if class B (class A) in B.eo file, then class C (class A, class B) in C.eo file.

Reviewers: woohyun, felipealmeida, Hermet

Reviewed By: Hermet

Subscribers: cedric, segfaultxavi, q66, #reviewers, lauromoura, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6982
2018-09-05 15:05:23 +09:00
Hermet Park 65648335c5 evas canvas: fix overflowed function initialization.
Summary:
last function pointer indicates render_pre(),
add one more element is unnecessary.

Reviewers: #committers, netstar

Reviewed By: #committers, netstar

Subscribers: netstar, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6967
2018-09-04 09:08:54 +09:00
Hermet Park 423d8a2296 evas image: fix a bug in image preloading.
Summary:
Current preloading is too buggy since it's on thread-based.
This is a fundamental improvement to fix a bug.

The critical issue here is,
When preloading img object suddenly cancel its preloading,
the object possibly cannot render image next then because
renderer doesn't have any idea when async cancelling is
finished. Renderer just tries to render regardless of
image loading status, and this could occur no-texture(in gl case)
image object.

So, here improvement is, adding a notification for async cancelled
so that putting img objects to redraw images properly after their preloading is
cancelled.

The best scenario to reproduce this bug is this one.

Evas_Object *img2 = evas_object_image_filled_add(evas);
evas_object_image_file_set(img2, "test.jpg", NULL);
evas_object_image_preload(img2, EINA_FALSE);
evas_object_resize(img2, 200, 200);
evas_object_show(img2);

Evas_Object *img = evas_object_image_filled_add(evas);
evas_object_image_file_set(img, "test.jpg", NULL);
evas_object_image_preload(img, EINA_FALSE);
evas_object_move(img, 200, 200);
evas_object_resize(img, 200, 200);
evas_object_show(img);

evas_object_image_preload(img2, EINA_TRUE);
If you run this on gl backend, occasionally happens rendering fail.

Yet there other bugs on preloading feature....

@fix

Reviewers: #committers, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6919
2018-09-03 17:12:55 +09:00
Yeongjong Lee 4e0b2c2fff docs: Fix typos in API reference doc
Reviewers: segfaultxavi, kimcinoo

Reviewed By: kimcinoo

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6960
2018-09-03 10:55:16 +09:00
Yeongjong Lee 02d83ebcd4 docs: Fix typos in API reference doc and comments.
Reviewers: Hermet, segfaultxavi

Reviewed By: Hermet, segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6948
2018-08-31 17:45:31 +09:00
Hermet Park 5f0002ce69 efl: vector is no more beta version. 2018-08-31 12:16:24 +09:00
Chris Michael 5b36506a68 evas-canvas: Remove cserve2 support
Summary:
ref T7226

Depends on D6933

Reviewers: raster, cedric, zmike, Hermet

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7226

Differential Revision: https://phab.enlightenment.org/D6934
2018-08-30 13:48:38 +09:00
Chris Michael c16acaeac3 evas-canvas: Add missing EINA_UNUSED for unused parameter 2018-08-29 13:15:20 -04:00
Yeongjong Lee e19292aa2b evas: call evas_find before safety check
Summary:
edje_edit_object_add
edje_object_add
emotion_object_add
evas_object_xxx_add

These APIs had allowed to set parent to EFL_CANVAS_OBJECT(Evas_Object) before
8bb11a17. we should call evas_find before safety check for backward compatibility.

Test Plan:
  win = elm_win_add(NULL, "main", ELM_WIN_BASIC);

 1.  `rect = evas_object_rectangle_add(evas_object_evas_get(win));`

 2.  `rect = evas_object_rectangle_add(win);`

Check that 1. and 2. works.

Reviewers: Hermet, zmike

Reviewed By: Hermet

Subscribers: cedric, #reviewers, CHAN, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6909
2018-08-29 21:11:00 +09:00
Hosang Kim 586f8ae957 efl_input: fix problem that ref count does not become 0.
1.fix reusing instance logic.
2.remove efl_ref() when default devices are created.
Differential Revision: https://phab.enlightenment.org/D6882
2018-08-27 09:43:50 +02:00
Hermet Park 541fe885ac evas image: remove redundant code. 2018-08-23 19:19:09 +09:00
Mike Blumenkrantz 69fae8c7bf evas: remove render2
Summary:
this is more or less a dead project, having not been actively developed
in over 2 years and instead forcing people to expend more time and energy
to keep it compiling across refactors

fix T7227

Reviewers: stefan_schmidt, Hermet, ManMower, devilhorns

Reviewed By: Hermet, devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7227

Differential Revision: https://phab.enlightenment.org/D6878
2018-08-21 10:36:55 -04:00
Youngbok Shin 517018e008 evas textblock: add/apply cursor cluster APIs based on grapheme cluster
Summary:
Add a feature for moving cursor over a grapheme cluster.
It is applied to edje_entry.c and elm_entry.c for improving
cursor handling just like other modern text editors. ex) gedit
The patch on Evas needs to update libunibreak library.
So, the patch will update libunibreak, too.
@feature

Test Plan:
1. Put "ഹലോ" in your entry.
2. Your cursor can reach at the end of text from the beginning
   only in 2 right key event with this feature.

Reviewers: raster, cedric, jpeg, herdsman, zmike, devilhorns

Reviewed By: herdsman, zmike

Subscribers: #reviewers, #committers, zmike, bowonryu, woohyun

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D5490
2018-08-20 10:29:32 -04:00
Hermet Park c9a89158db evas vg: prevent invalid access.
Summary:
Canvas allows objects become zombies.
Even though they were deleted they could be accessed by canvas
for second frames.

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6849
2018-08-17 15:12:19 -04:00
Yeongjong Lee 15cc9a65aa ecore_pipe: remove null check condition and fix segfualt on Windows
Summary:
This reverts commit 4917910b49.

4917910b break backward compatibility.

Reproduction:
   void pipe_handler(...);

   pipe = ecore_pipe_add(pipe_handler, NULL);
   ecore_pipe_write(pipe, NULL, 0);

Because of the null check condition, pipe_handler isn't called after 4917910b.
Some apps behavior which is written to expected to call pipe_handler was broken.

also, this patch fixed segfault during build on Windows

Test Plan: make on Windows

Reviewers: raster, zmike, vtorri

Reviewed By: zmike, vtorri

Subscribers: woohyun, cedric, #reviewers, #committers, zmike, vtorri

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6824
2018-08-17 12:42:35 -04:00
Yeongjong Lee 8bb11a172b evas: check evas class instead of using evas_find
Summary:
A object that is not evas class shouldn't use evas_find. it may occurs segfault.

ref c2e8b492b1

Test Plan:
Evas *evas = evas_new();
evas_free(evas);
evas_object_line_add(evas);

Check weather there is segfault.

Reviewers: Hermet, raster, zmike

Reviewed By: zmike

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6816
2018-08-16 13:01:39 -04:00
Yeongjong Lee 206d40e331 evas: add safety check code to avoid crash
Test Plan: evas_smart_objects_calculate(NULL);

Reviewers: zmike, Hermet, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6805
2018-08-09 11:19:46 -04:00
Hermet Park bb984b566b evas image: fix screen flickering issue at partial + image preloading
Summary:
Prerequisite: Partial rendering ON + Image Prealoding + Triple surface buffer of GL.

Previously, evas trys to draw of an image which didn't prepare of image data yet (in case of preloading)
This time, it will draw a solid color onto the dest sufrace 1,
But luckily, preloading is finished just after, it draws proper image data onto next surface 2 and 3.

Now, triple buffer is filled with the image data but only first frame is still empty. That's a problem.

This patch skips to draw image if it doesn't prepare data yet, but once the preloading is finished,
it starts to draw images.

@fix

Reviewers: #committers

Subscribers: kimcinoo, cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6739
2018-08-08 16:01:11 +09:00
Shinwoo Kim 117a0ca298 evas_image: do not render while preloading
Summary:
Unexpected image shows if image data is not ready.
Even though there is a change to check the 'preloading' in pre_render phase,
evas_object_image_render is called. So we need to check here as well.

Reference: https://phab.enlightenment.org/D6739

It seems that the 'preloading' is not enough. The 'preloading' could be reset
to FALSE by _evas_image_load_async_cancel > _image_preload_internal.

If the following step happens, then this patch set is neccessary.
(1) evas_object_image_pre_render
(2) _evas_iamge_load_async_start
(3) evas_object_image_render

I could not find out what the correct step, but it actullay happens.
The evas_object_image_render could be called with the 'preloading' TURE.

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6778
2018-08-08 13:51:40 +09:00
Hermet Park 31b6e87495 evas image: code refactoring.
Summary: remove duplicated, no logical changes.

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6738
2018-08-06 07:23:48 -04:00
Shinwoo Kim 9666f288ae Efl.Canvas.Group: use desired function
Summary:
If a smart class overrides Evas_Smart_Class.move as below,
then original behavior must not be used for the smart class.

   Evas_Smart_Class sc = EVAS_SMART_CLASS_INIT_NAME_VERSION("MyClass");
   evas_object_smart_clipped_smart_set(&sc);
   sc.move = &myMove;

But current implementation makes original behavior work.
So before using the original method, this patch is checking if the original
method is changed or not.

Reviewers: zmike, devilhorns

Reviewed By: zmike

Subscribers: woohyun, jypark, cedric, raster, jpeg, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6468
2018-08-02 09:10:41 -04:00
Jaehyun Cho 0b27fd8dfd evas_events: Fix to set mouse_in state to all pointers in the seat.
Summary:
mouse coordinate is set by seat.
Therefore, mouse_in state should be set based on seat.
As a result, mouse_in state of all pointers in the seat should be
updated at the same time.

Reviewers: eagleeye, devilhorns, zmike

Reviewed By: eagleeye, devilhorns, zmike

Subscribers: devilhorns, Hermet, kimcinoo, cedric, iscaro, zmike, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6699
2018-08-02 18:16:47 +09:00
Derek Foreman e7bcf0e690 evas: Defer render post callbacks added during async render
Summary:
To take screenshots, Enlightenment makes a new snapshot object, performs
a manual render, and uses the snapshot results.

Turns out if this happens while an async render is in progress, the
async render's completion triggers a render post callback on the snapshot
object even though it's never been involved in a render.

We need to defer new render post callbacks until any currently running
render completes, then add them during that render's post.

Fix T7156

Reviewers: devilhorns, zmike

Reviewed By: devilhorns, zmike

Subscribers: devilhorns, cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T7156

Differential Revision: https://phab.enlightenment.org/D6711
2018-07-31 17:03:16 -04:00
Yeshwanth Reddivari 52cf0a49c6 region_add: Fix copying wrong rect during smart merge
Summary:
When testing partial rendering on TV, found this bug.
Probably this was caused because of wrong copy/paste.
When region1 completely subsumes region2, region2 should be ignored.
But currently region2 is copied to region1 which makes region1 rect completly wrong.
This was causing lot of visual defects because of wrong rects.
This patch will fix those visual defects when partial rendering is enabled.

Test Plan: Tested with the patch on TV after enabling partial rendering.

Reviewers: raster, cedric, Hermet, ManMower

Reviewed By: ManMower

Subscribers: bu5hm4n, ajwillia.ms, ManMower, devilhorns, cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6696
2018-07-31 07:29:03 -05:00
Mike Blumenkrantz be33c835ac evas: handle all failure cases with error messages in evas_init
Summary: fix T7026

Reviewers: Hermet

Reviewed By: Hermet

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7026

Differential Revision: https://phab.enlightenment.org/D6677
2018-07-26 21:43:50 +09:00
Hermet Park cd3f808725 evas canvas: fix not to trigger unnecessary events.
Summary:
Here comparision is logically wrong because it compares
the coordinates(cur, prev) of the different spaces.

As you can see just above the conditions,
Cur coordinates could be transformed into the map space (if objs have)
on the otherhands, prev is not. These wrong condition could occur
embarassing event trigger.

@fix

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6674
2018-07-24 12:04:11 -04:00
Hermet Park 2ea7bc5a81 evas clip: more strict comparison.
Summary: just improvement from D6645

Reviewers: zmike, #committers

Reviewed By: zmike, #committers

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6650
2018-07-23 08:18:00 -04:00
Hermet Park e34136ea72 evas clip: stop move events feeds.
Summary:
there is no point to feeding mouse events
if clipped object is invisible because
previsou/current situation won't be different.

fyi, move events won't be triggered if prev/cur coordinates
are same.

Reviewers: #committers, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6645
2018-07-20 10:36:00 -04:00
Daniel Hirt cafe84a2c2 Evas text textblock: call evas_font_free even on null fonts
A null font set can potentially be stored and passed on. There is no
specific fallback in our codebase to roll-back if something like that
occurs.

This fixes a case where an entry of a null font was not removed from the
fonts_cache and was leaked to subsequent tests (the null font entry was
not removed from the fonts_cache).

Note that this was only apparent when EFL was built with
`--disable-fontconfig`, likely due to fontconfig succeeding to always
retrieve some non-null font.

@fix
2018-07-16 16:45:53 +03:00
Hermet Park 4778a84824 canvas render: stop render_pre/post cb if it didn't render.
Summary:
Basically, render_pre/post should be called only if rendering happens.
Unfortunately, this behavior had been broken by some mistakes.

As far as I understand after reading history carefully,
this issue introduced for fixing unpair of pre/post cbs.

In case of async render, the post callback would be triggered in
evas_render_pipe_wakeup(), it means POST callbake shouldn't be tiggered in
evas_render_updates_internal(). If that post callback were removed in
evas_render_updates_internal(), then in case of sync_render,
POST callback won't be triggered. So previously, the PRE/POST couldn't get
paired.

I guess cedric put a mistake that nothing2rendering which brought
the pre/post pair issue, even he said that patch fix the unpair of them.
(But actually that patch brought the issue!)

See this: dc841ed9b2

Whatever it was intented or not, that patch totally insane, even
non-descripting.

If we just trigger post cb only if sync render or no_rendered case,
We could make satisfication for both cases.

@fix

Reviewers: #committers, devilhorns, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6573
2018-07-12 09:14:32 -04:00
Youngbok Shin 61e8834acc evas textblock: adds missing legacy types
Summary:
Adds missing legacy types. The following types were generated in
"*.eo.legacy.h" by Eolian.
- Evas_Textblock
  evas_textblock.eo.legacy.h:7:typedef Eo Evas_Textblock;

- Evas_Textblock_Node_Format
  evas_textblock.eo.legacy.h:14:typedef struct _Evas_Textblock_Node_Format Evas_Textblock_Node_Format;

@fix

Test Plan: N/A

Reviewers: raster, cedric, herdsman, devilhorns

Subscribers: #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6529
2018-07-12 12:09:26 +03:00
Mike Blumenkrantz 259ba514ef evas/main: call correct destroy function in evas_free
Summary:
an evas may or may not have a parent; this is legacy api and it's all
confusing

Reviewers: bu5hm4n, devilhorns

Reviewed By: bu5hm4n

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6486
2018-07-05 15:12:58 -04:00
Mike Blumenkrantz b0e0fcf3d6 evas: add more error messages when passing invalid objects to evas callbacks
Summary:
this should only happen if the user has made a mistake regarding the
existence or type of an object, so ensure that an error message occurs to
help debug any failures which result

fix T6326

Reviewers: bu5hm4n, Hermet, woohyun, devilhorns

Reviewed By: Hermet

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T6326

Differential Revision: https://phab.enlightenment.org/D6322
2018-07-04 10:53:09 +09:00
Youngbok Shin f6acd6f9e4 Evas Textblock: Don't convert <br/> to <ps/> after changing text
Summary:
It was only happened when legacy newline is enabled. By default,
legacy newline is enabled. As I know, legacy newline option has
to change textblock's internal behavior. But, it shouldn't change
the given original text. It fixes T3399.

Test Plan: A Test case is included in Evas test suite.

Reviewers: Jaehyun_Cho, z-wony, tasn, woohyun, herdsman, Blackmole, devilhorns

Subscribers: #committers, zmike, raster, cedric, jpeg

Tags: #efl

Maniphest Tasks: T3399

Differential Revision: https://phab.enlightenment.org/D3874
2018-07-02 18:33:45 +03:00
Daniel Hirt 27c677f1e0 Evas textblock: clear ellipsis item at start of layout
The ellipsis item was tracked so it can be inserted at the correct
position. It was not cleared properly, leading to a randomly failing
test suite.

Actually, it seems that there is no need to even store the ellipsis item
as the object data, so it was also moved to be in the layout context,
instead.

A special shoutout to ManMower for lending me his machine, as the test
suite didn't fail on mine.

Fixes T6986

@fix
2018-07-02 12:50:14 +03:00
Daniel Hirt 3db6b94ec8 Evas font: simplify fallback parsing step
@fix
2018-07-02 12:49:18 +03:00
Youngbok Shin a882235fce Evas font: add comparison for fallbacks in evas_font_desc_cmp()
Summary:
fallbacks string also has to be compared to load proper fdesc.
If a font which does not have fallback fonts is loaded,
fallback fonts can't be appended to the same font.
@fix

Reviewers: tasn, woohyun, herdsman, zmike, devilhorns

Reviewed By: herdsman

Subscribers: #committers, zmike, raster, Blackmole, z-wony, cedric, jpeg

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D3707
2018-07-02 11:08:30 +03:00
Youngbok Shin baf3a2092a Evas font: fix inifinite loop problem for fallback fonts
Summary:
When multiple fallback fonts was passed to evas_font_load(),
the while loop could run forever. I think it is never tested.
@fix

Test Plan:
Set the following textblock style and set it to a textblock object.
"font=Sans font_fallbacks=Ubuntu,Inconsolata,BlahBlah font_size=..."

Run and see application is in stuck.

Reviewers: tasn, woohyun, herdsman, devilhorns

Subscribers: #committers, zmike, raster, Blackmole, z-wony, cedric, jpeg

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D3703
2018-07-02 11:08:30 +03:00
Hermet Park 208c579e0d evas map: check render condition more elaborately.
Summary:
Ok, this was started from a bug that canvas getting not be updated.
If map is just disabled, at least one frame in the map region should be redrawn
So I added a condition 'map changed' in the render even though map is off
status. Now, I got a performance regression issue because it makes dirty
region is always true for the map object.

That is a corner case acutally, that object is not rendered but map still
have changed status.

I replaced the condition only if object is changed + map is changed.

At least, my test case works better with this patch.

@fix T6975

Reviewers: #committers, ManMower, devilhorns

Reviewed By: #committers, ManMower

Subscribers: ApB, ManMower, cedric, #committers, zmike

Tags: #efl

Maniphest Tasks: T6975

Differential Revision: https://phab.enlightenment.org/D6429
2018-06-29 09:58:41 +09:00
Mike Blumenkrantz aa9cc3a068 evas: remove ecore init/shutdown calls from everywhere besides evas_main
Summary:
these separate inits and shutdowns make it impossible to effectively control
ecore's lifetime which makes evas_shutdown unreliable as objects may be
destroyed at any point

ref T7052
Depends on D6475

Reviewers: ManMower, devilhorns

Reviewed By: ManMower, devilhorns

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7052

Differential Revision: https://phab.enlightenment.org/D6476
2018-06-28 15:03:15 -05:00
Mike Blumenkrantz 5a4fe07415 evas/main: move common shutdown to after ecore shutdown
Summary:
ecore_shutdown will trigger object deletions which require common
components to still be active in order to avoid crashes

ref 3433be343779424c5e030ace30e211298cd060f8
ref T7052

Reviewers: ManMower, devilhorns

Reviewed By: ManMower, devilhorns

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7052

Differential Revision: https://phab.enlightenment.org/D6475
2018-06-28 14:53:11 -05:00
Derek Foreman 024d38074c evas_render: Make some code easier to read
Summary:
The variable "clean_them" can only ever be EINA_FALSE for much of this
function, but using it as a return value ensures that anyone not
intimately familiar with the code will have to read a lot of code
to figure out that this is so.

Instead, return EINA_FALSE up until the point clean_them can actually
be something else.

No functional change.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6464
2018-06-28 13:11:59 -05:00
Mike Blumenkrantz c43850eed4 evas/main: shuffle shutdown order of filters and modules
Summary:
these both deallocate resources which can be needed during ecore_shutdown

ref df652673fe
fix T7052

Reviewers: ManMower, devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7052

Differential Revision: https://phab.enlightenment.org/D6474
2018-06-28 12:41:13 -04:00
Hosang Kim df652673fe evas: move clearing cows to right place.
Summary:
Evas is child of main loop now, so evas is deleted when main loop is quitted.
In case of not calling evas_free() explicitly by app side, a crash occurs.
So move clearing cows to below ecore_shutdown().

Test Plan:
//Compile with:
//gcc evas_test.c -o evas_test `pkg-config --cflags --libs ecore evas`

#include <Evas.h>
#include <Ecore.h>

Eina_Bool
_timer_cb (void *data)
{
    ecore_main_loop_quit();
    return 0;
}
int
main(int argc, char *argv[])
{

   evas_init();
   Evas *evas = evas_new();
   Evas_Object *obj = evas_object_box_add(evas);
   Evas_Object *rect = evas_object_rectangle_add(evas);
   evas_object_color_set(rect, 255, 255, 255, 255);
   evas_object_resize(rect, 300, 400);
   evas_object_show(rect);

   evas_object_box_append(obj, rect);

   evas_object_show(obj);
   ecore_timer_add(2.0, _timer_cb, NULL);
   ecore_main_loop_begin();

   evas_shutdown();
   return 0;
}

Reviewers: devilhorns, cedric, jpeg, id213sin, woohyun, zmike

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6346
2018-06-27 07:50:31 -04:00
Hermet Park 28aed68e7f evas canvas: add exceptional case.
Summary:
parent_container should have eina_false as given null parent
in order to avoid call vg_node_changed() for parent.

Reviewers: #committers, devilhorns, zmike

Reviewed By: #committers, zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6387
2018-06-25 06:49:49 -04:00
Mike Blumenkrantz 3db3fbaeeb evas_vg_node: do not propagate node changed callbacks for invalidated objects
Summary: this callback is triggered on the parent object. invalidated objects have no parent.

Reviewers: bu5hm4n, devilhorns, Hermet

Reviewed By: Hermet

Subscribers: Hermet, cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6335
2018-06-25 13:48:16 +09:00
Mike Blumenkrantz b7cb24c323 evas: switch to EFL_EVENT_INVALIDATE for event grabber sub-object deletion
Summary:
this requires the parent of the deleted object to be reachable, so use the
invalidate callback as this is the last point during which it's possible to
retrieve a parent object

ref T7030

Depends on D6320

Reviewers: bu5hm4n, Hermet, woohyun, devilhorns

Reviewed By: bu5hm4n

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7030

Differential Revision: https://phab.enlightenment.org/D6321
2018-06-19 13:40:52 -04:00
Hermet Park 803025f919 evas vg: add warning msgs for users.
Since usage has been changed under the beta version,
Some users may keep the old-usage that breaks the vg behavior now.

For their information, vg prints messages in case of breaks.
2018-06-19 08:36:00 +09:00
Mike Blumenkrantz 46941804a0 Revert "evas: handle event COW modification when COW is already active"
Summary:
This reverts commit cd6b890c73.

this resolves complaints from a safety check in the debug profile,
but it seems more likely that the safety check is bogus and should be
removed rather than making this code more complex

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6283
2018-06-15 11:22:38 -04:00
Hermet Park c8c0dbb32b evas vg: prevent a corner-case crash.
tbh, current vg interfaces a little bit bad... here is one scenario to this
stupid case.

efl_parent_set() and evas_object_vg_root_node_set() both do re-parent
 job. They could be conflicted if user calls both apis in either way.

efl_parent_set(root_node, NULL); but Vg Object still keeps the root node
which is just a dangling pointer that occurs a crash while rendering.
2018-06-15 01:11:26 +09:00
Hermet Park dc729e8ece evas vg: code refactoring.
No logic changes.

I know this is not a good case in alpha freeze.
but code was too dirty, need more polishing.
2018-06-14 23:31:03 +09:00
Hermet Park ee2ca991fc evas vg: fix another memory leak
@fix
2018-06-14 22:08:51 +09:00
Hermet Park a7e4c67039 evas vg: fix broken morphing(interpolation)
efl_gfx_path itself took care of efl_gfx_shape data but its heirarchy was
conceptually wrong. Even efl_gfx_shape is mixing the efl_gfx_path...

Damend design...

Some of derived classes of efl_gfx_path (i.e. Vg.Node and Vg.Container) are
none of the Path acutally. They are just mixing Path's interpolation interface.

So, Here patch changes VG.Node to stop calling the super's interpolate method
and Vg.Shape to call both super -gfx_shape and vg_node- interpolate method.

@fix T6996
2018-06-14 20:02:15 +09:00
Xavi Artigas a5f0e2ecdf evas: Remove unnecessary rotation when saving
Summary:
At some point this code stopped being necessary. The image data is already
rotated and width and height match it, so no need to rotate it again
(which produced warnings and incorrect behaviour)

Fixes T5841

Test Plan: This fixed examples/evas_images{2,4,5} which were failing before.

Reviewers: bu5hm4n, zmike, devilhorns

Reviewed By: zmike

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T5841

Differential Revision: https://phab.enlightenment.org/D6259
2018-06-13 13:42:59 -04:00
Mike Blumenkrantz cd6b890c73 evas: handle event COW modification when COW is already active
Summary:
enabling write on a COW which is already writing is a user error,
which can occur during object invalidate due to reuse of a helper function.
by adding an extra param containing the COW data, this scenario can be avoided

fix T7005

Reviewers: bu5hm4n, segfaultxavi, devilhorns

Subscribers: cedric, #committers

Tags: #efl

Maniphest Tasks: T7005

Differential Revision: https://phab.enlightenment.org/D6273
2018-06-13 11:33:21 -04:00
Xavi Artigas 2cf05bac09 evas: Fix small string leak
Summary:
sscanf("%ms", &encoding) allocates memory which must be freed.
It is done in the general case, but not if the image data map fails and the
code jumps to the no_pixels: label.

Reviewers: zmike, bu5hm4n

Reviewed By: zmike

Subscribers: cedric, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6258
2018-06-12 10:51:53 -04:00
Hermet Park f4851d311f evas vg: clean up all the duplicated children by container properly.
So, here is the first-aid, but the last patch for recovering basic vector
rendering. All vg nodes duplicated by container would be constructed without
a parent, they need to get unref() by container when container is freed.

Here code takes deal with it on the invalidation time.
2018-06-12 19:08:35 +09:00
Hermet Park 78d1fdd746 evas vg: get rid of memory leak.
alloc mem only if it didn't alloc'd yet.

@fix
2018-06-12 11:27:51 +09:00
Hermet Park ca3fb6bf94 evas vg: fix broken vg rendering.
This fixes vg to connect node tree properly on copying nodes.

Vector rendering was broken when vg cache tries to reconstruct the scene-graph
tree on copying from the original cached one. Exactly, nodes lost parents on
copying. Here it fixes the lost links of the scene-graph tree.

@fix T6993
2018-06-11 17:18:36 +09:00
Hermet Park af565966e8 canvas vg: move a comment to right place.
no any logic changes.
2018-06-07 19:14:30 +09:00
Hermet Park 590b52ce75 evas map: an alternative patch for map rendering issue.
This is an alternative patch for 9fcd03952e.

Since canvas map rendering sequence is quite complex,
Not easy to estimiate the logic sequence by all scenarios.

The brings me to fix the code case by case.
2018-06-07 14:50:41 +09:00
Hermet Park 72ce12e550 Revert "evas canvas: remove unused goto tag."
This reverts commit b2f85bb9ed.

this is a subsquent patch for the previous revert:
77684dc53a

ps. JackDaniel saved efl world from a guy who broke the system and ran away...
2018-06-05 21:38:01 +09:00
Hermet Park 77684dc53a Revert "evas: fix a map rendering problem."
This reverts commit 9fcd03952e.

Just noticed from ManMower, this caused a side-effect that drops
enlightenment performance. I need to check it seriously then
decide again how this patch to be.
2018-06-05 21:01:15 +09:00
Hermet Park b2f85bb9ed evas canvas: remove unused goto tag. 2018-05-30 13:41:41 +09:00
Marcel Hollerbach fb4eebde95 evas_object_box: adjust to recent EFL_EVENT_DEL changes
Summary:
the same change as the one for evas table, just for box.

Depends on D6228

Reviewers: cedric, zmike, stefan_schmidt

Reviewed By: zmike

Subscribers: #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6229
2018-05-29 12:24:55 -04:00
Marcel Hollerbach 70ab165a6d evas_focus: adjust to recent EFL_EVENT_DEL changes
Summary:
when focus events have been emitted the smart parent was persistent, now
its not anymore, lets restore this behaviour

Depends on D6227

Reviewers: cedric, zmike, stefan_schmidt

Subscribers: #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6228
2018-05-29 12:24:53 -04:00
Marcel Hollerbach 6551a954f0 evas_clip: fix current EFL_EVENT_DEL event changes
Summary:
Before the parent was persistent when the intersept function and events
for clipper changes have been called. Lets get back to this behaviour.

Depends on D6226

Reviewers: cedric, zmike, stefan_schmidt

Reviewed By: zmike

Subscribers: #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6227
2018-05-29 12:24:44 -04:00
Marcel Hollerbach 23aab73c2f evas: be less error prone
Summary:
Dont spin infinitly when the refcount accidently is already < 0.

Depends on D6225

Reviewers: zmike, cedric, stefan_schmidt, #committers

Reviewed By: zmike, #committers

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6226
2018-05-29 12:24:36 -04:00
Marcel Hollerbach dda7038019 evas_object_table: adjust to recent EFL_EVENT_DEL changes
Summary:
EFL_EVENT_DEL is wrong here, as the callback uses a parent, which is
gone at the time of EFL_EVENT_DEL.

Reviewers: zmike, cedric, stefan_schmidt

Reviewed By: zmike

Subscribers: cedric, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6225
2018-05-29 12:24:31 -04:00
Hermet Park be34971af8 evas render: remove compile warnings.
Some bunch of code is unused when RENDCACHE is disabled.
Migrated them into RENDCACHE scope. No logical changes actually.
2018-05-29 16:28:35 +09:00
Cedric BAIL 774ae32108 evas: make smart object deletion more robust to bad child behavior. 2018-05-24 16:02:21 -07:00
Cedric BAIL 256b2103c6 evas: disable del hook when pushed inside the hash.
This is necessary in case of cycling init/shutdown as the hash will
destroy the Event, but the hook will instantly reinsert it.
2018-05-24 16:02:21 -07:00
Cedric Bail 7e4b66a58d evas: multiple call to evas_object_del are allowed even after the first one succeeded. 2018-05-24 16:02:20 -07:00
Cedric BAIL 75bb7c049f evas: do not crash if constructor fail and invalidate is run on a partial object. 2018-05-24 16:02:20 -07:00
Cedric BAIL 15995ff0eb evas: make evas_object_free work in case of lost reference to Eo object.
This is clearly a workaround to a bad situation, but there is no case
that I can find that solely lead to object being NULL nor is there any
code that should do that, but still it does in some case...
2018-05-24 16:02:20 -07:00
Cedric BAIL 33c278b898 evas: detect incoherency in object content and report problem. 2018-05-24 16:02:20 -07:00
Cedric BAIL 062471b5ee evas: handle Evas_Object constructor failure case better. 2018-05-24 16:02:20 -07:00
Cedric Bail a8b70953e4 evas: improve evas child destruction order.
Technically I do not thing it is a correct behavior to force destroy
reference that evas do not hold, but evas_object are deaply tied to
the canvas they are build on and even after invalidate it is hard
to not have function call that would lead to crash. Making the pointer
incorrect thanks to eo indirection seems safer here.
2018-05-24 16:02:20 -07:00
Cedric Bail 429084e2fb evas: do not override lifecycle by overriding efl_parent_set. 2018-05-24 16:02:20 -07:00
Cedric Bail 4479d035be evas: reindent code properly. 2018-05-24 16:02:19 -07:00
Cedric Bail 5c9815676b evas: move the del event to match invalidate and free event to the end of the destructor. 2018-05-24 16:02:19 -07:00
Cedric BAIL ddccd9e306 evas: destructor can not be called recursively, we should rely on Eo refcount. 2018-05-24 16:02:19 -07:00
Cedric Bail 91cd4f7c0c evas: actually we do not even need to NULL it, if we wref it. 2018-05-24 16:02:19 -07:00
Cedric Bail 741f3e39ed evas: preserve evas_object_del logic to not really destroy an object until it is fully unref first. 2018-05-24 16:02:19 -07:00
Cedric Bail c2e8b492b1 evas: enforce legacy parent to be the canvas. 2018-05-24 16:02:19 -07:00
Cedric Bail b482107a19 evas: add a way to figure out the evas class that should be the real parent for all legacy object. 2018-05-24 16:02:19 -07:00
Cedric BAIL 30d02a7410 evas: try to protect old legacy lifecycle without overloading Efl.Del. 2018-05-24 16:02:19 -07:00
Cedric BAIL fe14abd929 evas: refactor efl_input_event and remove some of the lifecycle hack.
Differential Revision: https://phab.enlightenment.org/D6101
2018-05-24 16:02:18 -07:00
Cedric BAIL 4c9a33a388 eo: move EFL internal function ___efl_ref2 also to eo_internal.h
Differential Revision: https://phab.enlightenment.org/D6099
2018-05-24 16:02:18 -07:00
Xavi Artigas d808147e6f efl: rename Efl.Text.Bidirectional_Type -> Efl.Text_Bidirectional_Type 2018-05-23 17:33:47 +02:00
Xavi Artigas 92bf45bf7c efl: rename Efl.Input.Device.Type -> Efl.Input.Device_Type 2018-05-23 17:33:47 +02:00
Xavi Artigas 029f0769a5 efl: rename Efl.Event.Description -> Efl.Event_Description 2018-05-23 17:33:47 +02:00
Xavi Artigas 3e8b809999 efl: rename Efl.Canvas.Object.Animation.* -> Efl.Canvas.Object_Animation_* 2018-05-23 17:33:46 +02:00
Xavi Artigas 57b078f3df efl: rename Efl.Canvas.Animation.* -> Efl.Canvas.Animation_* 2018-05-23 17:33:46 +02:00
Hermet Park 9fcd03952e evas: fix a map rendering problem.
When map of a smart object is turned off, redraw-updation area could be incorrect.
This results in a mirror image problem.

for fixing this, let smart object request update-area in render_pre() properly only in case of map changed.

Thanks to akanad for reviewing together.

@fix
2018-05-23 22:58:57 +09:00
Xavi Artigas 35bbedc96f efl: Add missing event types
Summary:
All events must have a type now, otherwise bindings don't know how to handle
the event_info field.
Most of the missing event types were actually "void" (no event_info present).
Some struct definitions had to be moved to eo instead of h files, so they
are available to bindings. Some have not, and are marked with FIXME.
Some namespaces have been fixed (like Efl_Event_Cb -> Efl.Event_Cb).

In general, there are hundreds of changed files, but mostly to add a type which
was not present before, so there's no harm done.
Also, A lot of FIXMEs have been added which should be, like, fixed.
For example, some events can send different types of event_info, which is
very inconvenient (and error prone).

Test Plan: make with c# bindings works, make check and make examples work too.

Reviewers: cedric, q66, lauromoura

Subscribers: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6169
2018-05-19 01:42:26 +02:00
Derek Foreman 83e1a456a4 evas_main: Fix deleting pointer data
Summary:
This appears to be called from a delete callback that takes place well
after the eo parent relationship is deleted, however
efl_input_device_get_seat() finds the seat by finding the parent.  That
will always be NULL during this callback, so we'll leak the data.

Instead, search all seats for the pointer.
Depends on D6181

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6182
2018-05-18 13:46:36 -04:00
Derek Foreman 250b69c239 evas_device: Only remove pointer data on deletion of pointer devices
Summary:
This delete callback is shared for mouse, pointer, touch, and seat.  We
should only delete pointer data when we're called on a pointer.

Note that (at least under wayland) this particular bug is irreproducible
right now because, due to a ref leak, this deletion callback can never
fire.
Depends on D6180

Reviewers: zmike

Reviewed By: zmike

Subscribers: cedric, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6181
2018-05-18 13:46:31 -04:00
Youngbok Shin f17cae08e6 evas textblock: manage default style properly for new interfaces
Summary:
Calling efl_canvas_text_style_set() with empty key means
setting a default style to object. But, it counldn't store style
as default properly. It caused a crash issue from elementary_test.
@fix

Test Plan:
New test case is included. Run test suite. Or,
1. Run elementary_test
2. Find and launch "Image Zoomable animation" test.
3. Close the image test window.
4. See the crash issue.

Reviewers: raster, herdsman, jpeg, cedric, zmike

Subscribers: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D5692

Committer's note: rebased and removed unrelated test.
2018-05-16 22:24:11 +03:00
Youngbok Shin f437a3075a evas textblock: update format nodes when a Evas Textblock Style is updated
Summary:
A style tag among a text has to be replcaed by its matched tag when
a format node is created. If the matched tag is changed, format nodes
should be updated.
But, if a style text for Evas Textblock Style is changed,
related format nodes are not updated without setting new text.
The patch changes to update format nodes when new style text is set.
@fix

Test Plan: Included in Evas Test Suite.

Reviewers: raster, tasn, herdsman, subodh6129, zmike

Subscribers: zmike, cedric, z-wony, Blackmole

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D4697

Committer's note: rebased.
2018-05-16 22:24:11 +03:00
Marcel Hollerbach cfc66c08a1 evas: error out when there appeared a object while a new one is focused
Summary:
this is on the one side error prone and race, as reacting to a focus out
with a new focused object leads to weird cases. On the other side we are
then using eina hash wrong which leads to later weirdness as the element
that is assosiated with &key is broken.

Reviewers: raster, zmike, stefan_schmidt, cedric

Reviewed By: zmike

Subscribers: cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6158
2018-05-15 09:32:20 -04:00
Daniel Kolesa 577c00789a eolian: second batch of unused import removals
This fixes all remaining occurences introduced by false negatives
in 6bcd70f01d. The rest was already
fixed in 6be3809c04.
2018-05-13 18:13:12 +02:00
Daniel Kolesa 6be3809c04 eolian: first batch of unused import removals
Initial results of our static analysis showed a bunch of unused
imports or imports used only for documentation references. In the
first case, remove entirely, in the second case, change to 'parse'
in order to keep references working.

The static analysis is not perfect and yields false negatives for
certain cases, so there will be a second batch later.
2018-05-13 17:28:47 +02:00
Marcel Hollerbach dda350e3b4 evas: introduce a log domain to monitor which object gets focus 2018-05-10 13:34:32 +02:00
Youngbok Shin fa8aa7c9c8 evas textblock: remove NULL checking after dereferencing
Summary:
c->paragraphs couldn't be NULL if it is created by
_layout_paragraph_new() well. So, NULL checking should be
moved to after _layout_paragraph_new().

Test Plan: N/A

Reviewers: jpeg, tasn, raster, herdsman, cedric

Subscribers: zmike, stefan_schmidt, jpeg

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D4300
2018-05-06 12:01:41 +03:00
Youngbok Shin 73c39bcf12 Evas textblock: fix wrong hyphenation issues with non UTF8 encoded dictionary
Summary:
hnj_hyphen_hyphenate2() needs properly encoded text based on the given
dictionary. Each dictionary contains its encoding information at the head
of file. So, text will be converted to proper encoding before calling
the function. It fixes T3221.
@fix

Test Plan: Included in Evas test suite.

Reviewers: z-wony, tasn, woohyun, herdsman, Blackmole, minudf

Subscribers: zmike, stefan_schmidt, raster, cedric, jpeg

Tags: #efl

Maniphest Tasks: T3221

Differential Revision: https://phab.enlightenment.org/D3863
2018-05-06 12:01:41 +03:00
Youngbok Shin c33ef15d5d evas textblock: fix double free issue from user style push/pop and free
Summary: The Textblock Style which is created for user style was managed
application side.  It is created and free'd from application - outside
of Evas Textblock.  Recently, evas_object_textblock_style_user_push/pop
start to call efl_canvas_text_style_set() instead of legacy code. The
problem is efl_canvas_text_style_set() is always going to call free()
when a style is going to be deleted.  It makes conflicts(double free
issue) with application which is used to call
evas_textblock_style_free().  So, the issue will be fixed by this patch.

The patch also revise push/pop/peek code to make clean and avoid
meaningless calculation/events.

@fix

Test Plan:
A test case is Included in this patch.
The test case try to trigger double free.

Reviewers: herdsman, raster, cedric

Subscribers: zmike, woohyun

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D5812

Committer's note: formatted commit summary (80 width).
2018-05-06 12:01:41 +03:00
Myoungwoon Roy, Kim 2733277b2a evas_main: fix structually dead code
Summary: Fix structually dead code in evas_main owing to wrong #ifdef EVAS_CSERVE2 definition

Test Plan: Execute test suite

Reviewers: raster, Hermet, cedric, jpeg, stefan_schmidt, Jaehyun_Cho

Reviewed By: raster

Subscribers: zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6053
2018-05-05 12:02:34 +09:00
Daniel Kolesa f58bdbf23a eolian: switch Eina.Future instances to future<T> 2018-05-03 17:14:39 +02:00
Cedric Bail 135a39dd14 evas: keep the devices around until full destruction of the canvas. 2018-05-01 10:39:01 -07:00
Cedric Bail 0e5aa8dccd evas: do not link the life cycle of the device with the parent. 2018-05-01 10:39:01 -07:00
Jaehyun Cho 81f94f5a09 efl_canvas_object: Add event info to animation events in eo 2018-05-01 00:40:34 +09:00
Jaehyun Cho e9b61a8969 efl_canvas_object: Change name of animation event info
Change name of animation event info to synchronize with other event
info names.

Change data name in animation event info to synchronize with data type
name, Efl.Event.Description.
2018-05-01 00:13:56 +09:00
Jaehyun Cho 485fe6cd61 efl_canvas_object: Remove unnecessary import 2018-04-30 23:52:31 +09:00
Jaeun Choi 9fa1c8a2e3 evas: fix default return value of image-related legacy functions
In commit 8367f497b8,
type checking code was added for legacy image functions
in order to reduce failing calls of efl_xxx function.
The default return values of some functions for none-legacy
objects (including NULL), however, were not equal to eo-based
default return value, which broke compatibility.
This commit fixes it.

@fix
2018-04-30 17:55:24 +09:00
JongMin Lee 4092c3a554 evas: resolve possible memory leak. 2018-04-27 14:14:37 +09:00
Myoungwoon Roy, Kim e62b97814d evas_main: Add null exception handling
Summary: Need to check whether Evas_Public_Data is null or not before dereferencing it.

Test Plan: Execute test suite

Reviewers: raster, Hermet, cedric, jpeg, stefan_schmidt, Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5987

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 17:41:47 -07:00
Xavi Artigas 23c303f87b Efl.Loop_* (from Efl.Loop.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:04:03 -07:00
Xavi Artigas 6b5ac687c1 Efl.Text_* (from Efl.Text.*)
Including:
Efl.Text.Cursor_* (from Efl.Text.Cursor.Cursor_*)
Efl.Text.Font_* (from Efl.Text.Font.*)
Efl.Text.Format_* (from Efl.Text.Format.*)
Efl.Text.Style_* (from Efl.Text.Style.*)
Efl.Ui.Text_* (from Efl.Ui.Text.*)

Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:49 -07:00
Xavi Artigas 5697f6e94b Efl.Gfx.Image* (From Efl.Image*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:40 -07:00
Xavi Artigas c837b321bf Efl.Image_Load_Controller* (From Efl.Image.Load*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:39 -07:00
Xavi Artigas a28b2ff1d3 Efl.Image_Animation_Controller* (from Efl.Image.Animated*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:38 -07:00
Xavi Artigas 7be849c63e Efl.Gfx.Size_Hint* (from Efl.Gfx.Size.Hint*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:36 -07:00
Xavi Artigas 0f355f257d Efl.Gfx.Gradient_* (from Efl.Gfx.Gradient.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:34 -07:00
Xavi Artigas 55bd097a3d Efl.Gfx.Entity (from Efl.Gfx)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:32 -07:00
Xavi Artigas a217d4b455 Efl.Canvas.Vg.Object (from Efl.Canvas.Vg)
Also, Efl.Canvas.Vg.* (from Efl.Canvas.VG.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:30 -07:00
Xavi Artigas a26fbbbc66 Efl.Canvas.Text_* (from Efl.Canvas.Text.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:29 -07:00
Xavi Artigas 8e02f3137c Efl.Canvas.Surface_* (from Efl.Canvas.Surface.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:29 -07:00
Xavi Artigas 80db4c0c22 Efl.Canvas.Event_Grabber (from Efl.Canvas.Object.Event.Grabber)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:28 -07:00
Xavi Artigas 5d81ae9dfb Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:27 -07:00
Xavi Artigas 5374512383 Efl.Canvas.Animation_* (from Efl.Canvas.Animation.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:25 -07:00
Xavi Artigas 65ee277a66 Efl.Canvas.Scene (from Efl.Canvas)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:23 -07:00
Myoungwoon Roy, Kim 83f326009e evas_map: Fix a bug about wrong map point colors
Summary: evas_map_point_color_get returns wrong rgbs values always because of error label.

Test Plan: Execute test suite

Reviewers: raster, Hermet, cedric, jpeg, stefan_schmidt, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5983
2018-04-24 16:25:24 +09:00
Jaehyun Cho e3315baaa3 efl_canvas_object: Add events for state changes of object's animation
Add events to notice the state changes of canvas object's animation.
anim_started, anim_running, and anim_ended events are added.
2018-04-19 23:39:32 +09:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
Wonki Kim 34216aa9eb Fix a shutdown logic to be reachable in some case
Summary:
move evas_async_events_shutdown: to out of EVAS_CSERVE2 ifdef block
to make it reachable.

Reviewers: cedric, woohyun

Differential Revision: https://phab.enlightenment.org/D5926

Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
2018-04-16 11:18:29 -07:00
Jaehyun Cho e4fbab8b47 efl_canvas_object: Change parameter name of property event_animation
Change the parameter name of property event_animation from "event_type"
to "desc" to synchronize with other APIs.
(The parameter type is Efl.Event.Description)
2018-04-12 12:55:49 +09:00
Cedric Bail 664c1c8eb4 evas: we directly use the main loop, we do not need external integration anymore. 2018-04-10 14:42:54 -07:00
Cedric Bail f1f1a8c996 evas: protection during canvas shutdown. 2018-04-10 14:42:54 -07:00
Jaehyun Cho 5351070a4d efl_canvas_animation_player: Reset map after animation is finished
Previously, beginning state of animation is applied after animation is
finished if final_state_keep_get() is false.

Now, map is reset (no animation is applied) after animation is finished
if final_state_keep_get() is false.
2018-04-10 22:38:40 +09:00
Jaehyun Cho 503bb0c8f9 efl_canvas_animation_player: Change Running_Event_Info to Event_Running
To synchronize other types of event info,
Efl_Canvas_Animation_Player_Running_Event_Info is changed to
Efl_Canvas_Animation_Player_Event_Running.

Remove unused struct.
2018-04-10 22:38:32 +09:00
junsu choi 982ad90f57 evas: add null check
Summary:
this commit add null check.
In EVAS_OBJECT_DATA_SAFE_GET, if eo_obj is null, obj can also be null.
and In _efl_canvas_output_async_block() can return null.

Test Plan: N/A

Reviewers: woohyun, kimcinoo, cedric

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5870

Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
2018-04-09 10:36:43 -07:00
Cedric Bail 6e0c86eb67 evas: when passed an Evas_Object, we should try to access it directly so that during destructor Evas is still accessible. 2018-04-06 11:32:21 -07:00
Cedric Bail 5ebe5bb62c evas: by moving lifecycle management to be handle by the death of the parent, there should be no call to efl_del. 2018-04-05 11:52:47 -07:00
Cedric BAIL 0578079927 evas: we should always sync the canvas before destroying the object. 2018-04-05 11:50:52 -07:00
Shinwoo Kim 3cd2243028 Fix static analysis result
[Dereference after null check]

(1) src/lib/ecore/ecore_main.c
 - _efl_loop_handler_efl_object_finalize checks if pd->loop_data is NULL.
   After that, _handler_reset > _handler_clear > _ecore_main_fd_handler_del >
   _ecore_main_fdh_pool_del is directly dereferencing pd->pool_data.
 - _efl_loop_handler_efl_object_parent_set checks if pd->loop_data as well.
   Then it calls _handler_reset as well.

(2) src/lib/ecore_wayland/ecore_wl_dnd.c
  - ecore_wl_dnd_selection_set checks if t - result of wl_array_add - is NULL.
    And it is dereferecing t directly for wl_data_source_offer.

(3) src/lib/elementary/efl_ui_dnd.c
 - Third parameter const char *data could be NULL.
   In this case strlen dereferences NULL. The data should be non NULL value.
   I have checked this with Mr. Thiep Ha.

(4) src/lib/evas/canvas/evas_object_inform.c
 - _efl_canvas_object_efl_gfx_stack_stack_below checks if obj->layer is NULL.
   So it could call evas_object_inform_call_call_restack which is dereferencing
   obj->layer directly.
2018-04-05 19:40:57 +09:00
Carsten Haitzler 3a12a6c4a5 evas - plug in dirty + pixels get hold in "is inside" for images
this should fix T6791

@fix
2018-04-05 18:52:57 +09:00
WooHyun Jung 3bc65be44d evas textblock: add null check to avoid segfault 2018-04-05 10:55:44 +09:00
Cedric BAIL 55adae23ec evas: remove useless/buggy line most likely due to left over during merging patch. 2018-04-03 14:26:59 -07:00
Cedric BAIL 6d3a8a1e32 evas: we should actually continue the chain of interpolation up to the next parent. 2018-04-03 14:26:59 -07:00
Cedric BAIL 79b283ab94 evas: fix lifecycle of Ector renderer.
Ector renderer are created by a factory pattern which return a reference.
The possible logic improvement from here would be to rely on setting the
parent of the object to the Ector_Surface and manage a cache by intercepting
efl_noref to trigger an efl_del of the object or a temporary cache of it.
That's for later.
2018-03-29 14:07:54 -07:00
Cedric BAIL c515ee36e6 evas: parent of an Efl.Vg.Node can also be a Efl.Canvas.VG 2018-03-29 14:07:54 -07:00
Cedric BAIL bc18b7e7ad efl: replace efl_del with efl_unref for cases where no parent exists
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:57 -07:00
Cedric BAIL 4c4177ac20 efl: use efl_add_ref to create objects which have no parent
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:56 -07:00
Cedric Bail 2c336d3063 evas: use efl_add_ref for the container, might consider using a parent later on. 2018-03-19 15:36:58 -07:00
Cedric Bail 90bae9b271 evas: technically the evas canvas is using the main loop, so let's make canvas depend on it for their lifecycle. 2018-03-19 15:36:18 -07:00
Derek Foreman b55b8110a9 evas_render: Don't render from norender
commit 4dee873a appears to have accidentally flipped a flag in
_evas_canvas_norender causing it to actually try to render.
2018-03-14 16:08:07 -05:00
Wonki Kim 59c0246eea evas: add null check logic on evas_object_smart_attach
Summary:
this commit add null check logic on evas_object_smart_attach
because a segmentation fault occurs once the argument is not valid (eg. null).

Test Plan:
	1. invoke evas_object_smart_add(obj, NULL)
	2. see the application crashes

Reviewers: woohyun, cedric

Differential Revision: https://phab.enlightenment.org/D5817

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2018-03-06 19:05:57 -08:00
Carsten Haitzler 1bdd9e4dd1 ecore - a different take on efl.app class as a super class to efl.loop
so the MAIN loop is actually an efl.app object. which inherits from
efl.loop. the idea is that other loops in threads will not be efl.app
objects. thread on the creator side return an efl.thread object.
inside the thread, like the mainloop, there is now an efl.appthread
object that is for all non-main-loop threads.

every thread (main loop or child) when it spawns a thread is the
parent. there are i/o pipes from parnet to child and back. so parents
are generally expected to, if they want to talk to child thread, so
use the efl.io interfaces on efl.thread, and the main loop's elf.app
class allows you to talk to stdio back to the parent process like the
efl.appthread does the same using the efl.io interfaces to talk to its
parent app or appthread. it's symmetrical

no tests here - sure. i have been holding off on tests until things
settle. that's why i haven't done them yet. those will come back in a
subsequent commit

for really quick examples on using this see:

https://phab.enlightenment.org/F2983118
https://phab.enlightenment.org/F2983142

they are just my test code for this.

Please see this design document:

https://phab.enlightenment.org/w/efl-loops-threads/
2018-03-03 13:40:33 +09:00
Carsten Haitzler 1c74aaa7e9 Revert "cxx: Fix manual code after efl_app change."
This reverts commit 135154303b.

Revert "efl: move signal events from efl.loop to efl.app"
This reverts commit 3dbca39f98.

Revert "efl: add test suite for efl_app"
This reverts commit 3e94be5d73.

Revert "efl: create Efl.App class, the parent of Efl.Loop"
This reverts commit 28fe00b94e.

Go back to before efl.app because I think this should be done with
superclassing here not a parent object. reasons?

1. multiple loops per single thread make no sense. so if multilpe loop
objects they wont be contained in a single app object and then deleted
like this.
2. the app object is not really sharable in this design so it cant be
accessed from other threads
3. it makes it harder to get the main loop or app object (well 2 func
calls one calling the other and more typing. it is longer to type and
more work where it is not necessary, and again it can't work from
other threads unless we go duplicating efl.app per thread and then
what is the point of splittyign out the signal events from efl.loop
then?)

etc.
2018-03-03 13:40:33 +09:00
Chris Michael 25e689a6f5 evas: minor formatting fix
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2018-02-27 09:31:45 -05:00
Mike Blumenkrantz 28fe00b94e efl: create Efl.App class, the parent of Efl.Loop 2018-02-26 14:02:51 -05:00
Mike Blumenkrantz 77b31ba023 evas event_grabber: fix child ordering when adding non-top children
another ref 0516cdc0f9

@fix
2018-02-22 15:42:40 -05:00
Cedric Bail 635448a0a9 evas: readjust pushed engine geometry without the output offset. 2018-02-21 11:55:25 -08:00
Mike Blumenkrantz bbbdfbecc4 Efl.Gesture: rename to Efl.Canvas.Gesture
most C api remains unchanged

ref T6714
ref T6716
2018-02-21 14:43:37 -05:00
Mike Blumenkrantz a0a80fc74a Efl.Animator: rename to Efl.Canvas.Animator
most C api remains unchanged

ref T6714
ref T6716
2018-02-21 14:06:43 -05:00
Mike Blumenkrantz 7eb0375c0e efl_vg: namespace moves
efl.vg -> efl.canvas.vg.node
efl.vg.* -> efl.canvas.vg.*

ref T6714
2018-02-21 14:04:59 -05:00
Cedric Bail 4959286c29 evas: add output coordinate debug. 2018-02-21 09:39:04 -08:00
Mike Blumenkrantz 1e522cc71d Efl.Text.Cursor: cursor -> text_cursor 2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 76eb02303a efl: rename player.position property -> player.pos
position conflicts with gfx.position; this could maybe be named better?
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 005f3ef955 evas_textgrid: size -> grid_size
this conflicted with efl_ui_base.size
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz e87567c683 evas_table: remove mirrored property
use efl_ui_base.mirrored instead
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz f19da9b4a8 evas_grid: size -> grid_size
this conflicted with efl_ui_base.size
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 2caaf09ea2 evas_grid: remove mirrored property
use efl_ui_base property
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz f903665957 evas: move smart_objects_calculating to Efl_Canvas 2018-02-15 13:11:00 -05:00
Mike Blumenkrantz ee689bb000 evas: remove Evas_Canvas.smart_objects_calculate
also implement Efl_Canvas method
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 1813c2084c evas: move more canvas method implementations into evas_main.c 2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 099f9ba8a9 evas: remove Evas_Canvas.object_top_in_rectangle_get
also implement Efl_Canvas method
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 17687f4066 evas: remove Evas_Canvas.objects_in_rectangle_get
also implement Efl_Canvas method
2018-02-15 13:11:00 -05:00
Mike Blumenkrantz 7bfaf6b63d evas: remove Evas_Canvas.object_top_at_xy_get
also implement Efl_Canvas method
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 420ba4691d evas: remove Evas_Canvas.objects_at_xy_get
also implement Efl_Canvas.objects_at_xy_get

note that any function which returns an iterator cannot be @const since
it's necessary to wref the object to ensure the iterator's lifetime
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 3789e3e1dc efl: merge list->iterator creation function into evas_main.c and reuse
this deduplicates a large amount of code
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 0a9bb2543f evas: move more canvas functions into evas_main.c
typechecking is an important part of compilation
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 4b91654e5f evas: move evas_stack.c -> evas_stack.x
this file contains canvas methods which should be subject to compiler
type checking, requiring that they be included in the file which contains
the eolian generated code
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 59583a6f89 evas: properly implement evas_image_max_size_get() as a wrapper
ref 457dc16cffdd5f9c6ce42e72beddad06fa36f0c0
2018-02-15 13:10:59 -05:00
Mike Blumenkrantz 29f035cef8 evas: move canvas eolian functions from image.c -> main.c
this reveals existing breakage which went unnoticed due to the compiler
being unable to do type checks since the generated eolian code was not included
2018-02-15 13:10:59 -05:00
subhransu mohanty 44c23ddec3 evas/vg: reset the path data in destructor.
Summary: As the gfx_path mixin class destructor is not called hence explicit call of reset.

Reviewers: jpeg, SanghyeonLee

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5803

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2018-02-14 12:47:40 -08:00
Wonki Kim 8988a02744 evas_polygon: Fix segfault while creating the object
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
2018-02-13 13:15:19 +09:00
Mike Blumenkrantz 536bfb7613 evas_vg: implement interpolate from Efl.Gfx.Path 2018-02-12 17:14:34 -05:00
Mike Blumenkrantz 09f2fab144 interfaces: merge all bounds_get methods into efl.gfx.path
ref 884fc35160
2018-02-12 16:59:48 -05:00
Mike Blumenkrantz 27ae060633 evas3d: use a type setter function with finalize instead of a custom constructor
resolves a conflict with the 'constructor' method name
2018-02-12 16:47:41 -05:00