Summary:
Example using static LOD in evas.canvas3d
It should be applied after D3731
Reviewers: Hermet, raster, cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3732
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: Code doesn't need to be copied every time when program is copied.
Reviewers: cedric
Reviewed By: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3799
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
Applications usually use edje syntax like as,
```
part { name :"bg";
type: SWALLOW;
description {
state: "default" 0.0;
rel1.relative: 0.0 0.0;
rel2.relative: 0.0 0.0;
align: 0.0 0.0;
min: 100 100;
}
}
```
But edje does not calculate it exactly without "fixed: 1 1".
So edje calculation is repeated until 4000 x 4000, it is waste of time.
Reviewers: woohyun, raster, Hermet, id213sin, cedric
Reviewed By: cedric
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3801
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This is a bit artificial, as all image objects are still based on
the Evas.Image main class. The inheritance tree alone does not
give much information on what features are supported by which
class (eg. only Efl.Canvas.Image supports the file interface for
file_set).
This replaces standard Evas_Object_Image when it is used "normally",
ie. it's an image from a file or from a pixel buffer. All other APIs
(proxy, snapshot, 3d, gl, ...) are disabled on this object.
Also, reduce number of failing calls when the object is not a legacy
object, but a legacy function is called. This is because a lot of
image APIs are called internally using the legacy APIs, often in
order to reset the state of the image object (eg. set file to NULL,
etc...)
This patch fixes an issue detected by Coverity where 'obj' is written
twice with the same value
CID1353363
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This patch fixes an issue detected by Coverity where 'obj' is written
twice with the same value
CID1353365
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This patch fixes an issue detected by Coverity where 'obj' is written
twice with the same value
CID1353365
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Summary:
Main flow: add several meshes(with different number of polygons) in one node,
enable LOD for node, set boundary distances to choose need mesh depend on distance
to the camera node, render only need mesh. Add API's enable lod in
evas_canvas3d_node module and set boundary distance to module
evas_canvas3d_mesh module Refactored function evas_canvas3d_node_mesh_collect
to calculate distance. Refactored _scene_render to have possibility pass to the
render only need LOD mesh.
Reviewers: cedric, Hermet, raster
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3731
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
Add spin lock to access to new flag can check to
status of the preload
Reviewers: jpeg, cedric, jypark
Subscribers: raster
Differential Revision: https://phab.enlightenment.org/D3775
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
Edje data structure is passed as a parameter, but in file.set method
_edje_fetch() is called one more time unnecessarily.
Reviewers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3788
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
This internal function was made for checking non-existence of
Edje Part when handling insert_before/after attributes.
However, checking is implemented in different way and this function
is not used anywhere.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3790
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary: meaningless suffix is attached to a word in error message.
Reviewers: cedric
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3794
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
When edje_cc inherits group, group's script wasn't copied.
So base group and inherited groups use same pointer.
When edje_cc makes lookups for script, loopkups is overwritten.
Test Plan: elementary_test -> shown error log
Reviewers: Hermet, woohyun, cedric, raster
Subscribers: jpeg
Differential Revision: https://phab.enlightenment.org/D3796
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
Use aditional temporary vector for intermedia results in case output vector
the same as target vector in functions:
eina_vector2_transform,
eina_vector2_homogeneous_direction_transform,
eina_vector3_cross_product,
eina_vector3_transform,
eina_vector3_homogeneous_direction_transform
It was in original version (in evas_vecN, module evas_3d_utils.h)
Enrich test suit for this case.
Reviewers: jpeg, cedric
Reviewed By: cedric
Differential Revision: https://phab.enlightenment.org/D3795
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
It was temporarily eoid, change it to eo_self which is more
descriptive. In this process I also made it a macro to prepare
for the proposed changes on the ML for the fallback implementation
for compilers that don't support the compound statements returning
values gcc extension.
The buffer class is more low-level and alpha is a pretty
common property. I still wonder how to share it with the canvas
and other things.
It doesn't belong to Efl.Gfx.Base since we could have plain old
buffers that are not evas objects (only in-memory buffers) but
Efl.Gfx.Base may also need the alpha flag.
- image_native_init
- image_native_shutdown
init() will be used to test whether the engine supports a
certain type of native image.
Note: Native image support is very much dependent on the engine,
and some stuff like opengl should work everywhere (even in sw
with osmesa) but that's not the case.
Annoying incomplete initializer warning. Apparently gcc/clang
don't consider {0} as good enough for "initialize everything to 0"
even though they do it.
Efl.Canvas.Snapshot and Efl.Canvas.Proxy are specialized
classes previously implemented as features of Evas.Image.
Note: this half of the work, as I suffered from a bad
merge and rebase with my work branch on top of master.
This checks whether the object was created with a legacy
API, ie without not using eo_add directly. This will be used
to help with the transition from EAPI to EO APIs, as some EAPIs
should not be used with the new EO types (eg. file_set on a
Proxy object).
By default it doesn't do anything besides ERR().
In DEBUG mode, it will return immediately.
The macro will return if eo_obj is NULL.
Those APIs should provide a cleaner interface than the
old data_set/data_get APIs, by making sure the operations are
atomic (ie. no need to call size_set, cspace_set and then data_set).
padding/duplicated borders are not supported.
TODO: Implement legacy API on top of the new API, instead of
this quick patch
Hopefully the doc and signature are better than the current
evas image equivalents data_get/data_set.
Those APIs are not like map/unmap so we need to decide which
model we prefer.
This interface groups all low-level animated image functions.
FIXME:
- Rename to Efl.Image.Animated once eolian is fixed
- Fix mess with emile enum (loop_hint)
It's not actually implemented anywhere. There's a flag that's
never read. Proper support would require quite some work.
Once we actually implement fill_spread support, we can bring
the API back without breaking compatibility.
Focus handlers are set incorrectly.
It causes windows process focus when they are acttually unfocused.
This patch corrects it.
Signed-off-by: Thiep Ha <thiepha@gmail.com>
If we fail to schedule a VBlank event, then we should disable custom
ticks and fallback to timer-based animators. This patch fixes some
issues with Intel Atom based setups where rendering would fail when
using custom animators.
@fix
Summary: win-builds provide libcairo-2.dll and not libcairo.dlL
Test Plan: ector test progral
Reviewers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3787
texture_free() accesses struct members which can be freed if image cache entry
reaches zero references
@fix
==30989== Invalid read of size 1
==30989== at 0x23BA2934: evas_gl_common_texture_free (evas_gl_texture.c:1506)
==30989== by 0x23BA9117: evas_gl_common_image_free (evas_gl_image.c:724)
==30989== by 0x23B80DA1: eng_image_data_put (evas_engine.c:988)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
==30989== Address 0x23a9e1d2 is 338 bytes inside a block of size 552 free'd
==30989== at 0x4C29E00: free (vg_replace_malloc.c:530)
==30989== by 0x882B2E2: _evas_common_rgba_image_delete (evas_image_main.c:343)
==30989== by 0x87B1E17: _evas_cache_image_entry_delete (evas_cache_image.c:205)
==30989== by 0x87B3C52: evas_cache_image_drop (evas_cache_image.c:950)
==30989== by 0x23BA90F5: evas_gl_common_image_free (evas_gl_image.c:722)
==30989== by 0x23B80DA1: eng_image_data_put (evas_engine.c:988)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
==30989== Block was alloc'd at
==30989== at 0x4C2AA98: calloc (vg_replace_malloc.c:711)
==30989== by 0x882B0A0: _evas_common_rgba_image_new (evas_image_main.c:295)
==30989== by 0x87B1F1B: _evas_cache_image_entry_new (evas_cache_image.c:253)
==30989== by 0x87B4170: evas_cache_image_data (evas_cache_image.c:1079)
==30989== by 0x23BA7EDE: evas_gl_common_image_new_from_data (evas_gl_image.c:333)
==30989== by 0x23B7F972: eng_image_new_from_data (evas_engine.c:531)
==30989== by 0x23B80D81: eng_image_data_put (evas_engine.c:984)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
==30989==
==30989== Invalid write of size 1
==30989== at 0x23BA293E: evas_gl_common_texture_free (evas_gl_texture.c:1506)
==30989== by 0x23BA9117: evas_gl_common_image_free (evas_gl_image.c:724)
==30989== by 0x23B80DA1: eng_image_data_put (evas_engine.c:988)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
==30989== Address 0x23a9e1d2 is 338 bytes inside a block of size 552 free'd
==30989== at 0x4C29E00: free (vg_replace_malloc.c:530)
==30989== by 0x882B2E2: _evas_common_rgba_image_delete (evas_image_main.c:343)
==30989== by 0x87B1E17: _evas_cache_image_entry_delete (evas_cache_image.c:205)
==30989== by 0x87B3C52: evas_cache_image_drop (evas_cache_image.c:950)
==30989== by 0x23BA90F5: evas_gl_common_image_free (evas_gl_image.c:722)
==30989== by 0x23B80DA1: eng_image_data_put (evas_engine.c:988)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
==30989== Block was alloc'd at
==30989== at 0x4C2AA98: calloc (vg_replace_malloc.c:711)
==30989== by 0x882B0A0: _evas_common_rgba_image_new (evas_image_main.c:295)
==30989== by 0x87B1F1B: _evas_cache_image_entry_new (evas_cache_image.c:253)
==30989== by 0x87B4170: evas_cache_image_data (evas_cache_image.c:1079)
==30989== by 0x23BA7EDE: evas_gl_common_image_new_from_data (evas_gl_image.c:333)
==30989== by 0x23B7F972: eng_image_new_from_data (evas_engine.c:531)
==30989== by 0x23B80D81: eng_image_data_put (evas_engine.c:984)
==30989== by 0x872681A: _evas_image_data_set (evas_object_image.c:1264)
==30989== by 0x87360B5: evas_obj_image_data_set (evas_image.eo.c:236)
==30989== by 0x8736B43: evas_object_image_data_set (evas_image.eo.c:741)
==30989== by 0x4820A4: e_comp_object_render (e_comp_object.c:3746)
==30989== by 0x477B92: _e_comp_object_pixels_get (e_comp_object.c:909)
==30989== by 0x872CF52: evas_process_dirty_pixels (evas_object_image.c:3154)
==30989== by 0x872DD16: _evas_image_render (evas_object_image.c:3389)
==30989== by 0x872DB01: evas_object_image_render (evas_object_image.c:3351)
==30989== by 0x879C524: evas_render_mapped (evas_render.c:1802)
==30989== by 0x879E82A: evas_render_updates_internal_loop (evas_render.c:2380)
==30989== by 0x87A005D: evas_render_updates_internal (evas_render.c:2770)
==30989== by 0x87A140D: evas_render_updates_internal_wait (evas_render.c:3122)
==30989== by 0x87A1502: _evas_canvas_render_updates (evas_render.c:3144)
==30989== by 0x871ED0D: evas_canvas_render_updates (evas_canvas.eo.c:354)
==30989== by 0x8720C5F: evas_render_updates (evas_canvas.eo.c:1089)
==30989== by 0x22F65C35: _ecore_evas_drm_render (ecore_evas_drm.c:1072)
==30989== by 0x7416F7B: _ecore_evas_idle_enter (ecore_evas.c:172)
==30989== by 0xDDE3577: _ecore_call_task_cb (ecore_private.h:282)
==30989== by 0xDDE3A5E: _ecore_idle_enterer_call (ecore_idle_enterer.c:174)
==30989== by 0xDDE836B: _ecore_main_loop_iterate_internal (ecore_main.c:2261)
==30989== by 0xDDE67B8: ecore_main_loop_begin (ecore_main.c:1284)
==30989== by 0x4407B6: main (e_main.c:1087)
The test depends on the host system having IPv6 setup on the loopback device.
This is not always the case even if we have a system that does have
"struct ipv6_mreq", our HAVE_IPV6 test, and would support it.
Skip here if we can't fetch an IPv6 address. The IPv4 test is still running
regardless.
The device struct is API, so its copy of the fb pointer needs to be
kept in sync with the output struct's. We do this when the flip completes
to try to prevent access to an fb that's about to flip.
This fixes Enlightenment screenshots.
@fix
I found a way to keep eo_add() the way it was and gracefully degrade to
a portable (but not as fast) solution for compilers that don't support
the compound macros returning a value gnu extension: ({int a; a;}).
I'm reverting these changes now, and I'll introduce the fallback as soon
as I can.
This reverts commit b85bb37183.
Summary:
Developer cannot notice that any description didn't applied due to missing description or typo.
This message will be helpful to make correct the application.
Reviewers: cedric, Hermet, raster
Subscribers: soohye.shin, minkyu, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3783
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
It has been decided that we would not use any namespace for interface
and they will sit in efl main namespace.
This patch doesn't correct the naming of the event has we don't have a
prefix for event. We do still have EFL_ANIMATOR_EVENT_ANIMATOR_TICK,
instead of a nicer EFL_EVENT_ANIMATOR_TICK.
EINVAL is bad, we can't go on. If we treat it like it's not a fatal
error we'll end up spinning on the fd and constantly retrying sends
on the dead wayland connection.
@fix
Coverity reports that 'ctx' may be NULL here and we should check it
before usage (as is done above).
Coverity CID1339785
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
This patch fixes a potential resource leak where we would previously
create a new eina_array and then possibly return from this function
(when checking validity of 's' parameter) without freeing the newly
created array.
Coverity CID1350291
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
As ecore_drm_private.h already includes config.h header, we don't need
to include it here in these files also
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
As portions of this code have been derived from existing code in
Weston, we should also be including their copyright/licence text to
give credit.
NB: Fixes T3286
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Reverting this at Felipe's request following my email. There are many
things I strongly object to in this commit. I've touched the surface of
those on the ML (which doesn't work at the moment), though we need to
better discuss it.
The gist:
1. dlsym is a really bad hack that is not even needed.
2. I don't see why eo should even be aware of promises. It's not aware
of list, hash and etc.
3. The eolian changes were done wrong.
This should have been discussed and consulted before done, even if only
because of the amount of hacks it includes and the cross-domain (ecore,
eo and eolian) nature of it.
This reverts commit f9ba80ab33.
While we had the functionality to generate type stubs header we never had
these tested in our unit test setup. Adding to simple cases for struct
and typedef which we already use for normal header generation tests.
Imagine this. You have an object. You pass this object handle as a
message to another thread. Let's say it's not a UI object, so
something you might expect to be able to be accessed from multiple
threads. In order to keep the object alive you eo_ref() it when
placing the message on a queue and eo_unref() it once the message is
"done" in the other thread. If the original sender unref()ed the
object before the message is done, then the object will be destroyed
in the reciever thread. This is bad for objects "expecting" not to be
destroyed outside their owning thread.
This allows thius situation to be fixed. A constructor in a class of
an object can set up a delete interceptor. For example if we have a
"loop ownership" class you multi-ple-inherit from/use as a mixin. This
class will set up the interceptor to ensure that on destruction if
pthread_self() != owning loop thread id, then add object to "delete
me" queue on the owning loop and wake it up. the owning loop thread
will wake up and then process this queue and delete the queued objects
nicely and safely within the "owning context".
This can also be used in this same manner to defer deletion within a
loop "until later" in the same delete_me queue.
You can even use this as a caching mechanism for objects to prevernt
their actual destruction and instead place them in a cached area to be
picked from at a later date.
The uses are many for this and this is a basic building block for
future EFL features like generic messages where a message payload
could be an eo object and thus the above loop onwership issue can
happen and needs fixing.
This adds APIs, implementation, documentation (doxy reference) and tests.
@feature
This reverts commit 7f4ea1a79c.
This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
This reverts commit 1affc60d00.
This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
This reverts commit e26fcbb1dc.
This reverts one of three parts of the try to get sub directory
compilation back into eina. It breaks our distcheck though and I
talked to Cedric about it and he prefers to revert these as we might
need to go another route to bring this functionality back. Details
will come to the mailing list.
Add a promise object that allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.
The usage is like this in a .eo file:
class Foo {
methods {
bar {
params {
promise: Promise<int>;
}
}
}
}
Which will create the following API interface:
void foo_bar(Ecore_Promise** promise);
and the equivalent declaration for implementation.
However, the API function will instantiate the Promise for the
user and the implementer of the class.
This iterator is convenient when you already have a C-Array and you
need to pass this array to a function receiving an Eina_Iterator.
int array[] = {1, 2, 3, 4};
int* array2[] = {&array[0], &array[1], &array[2], &array[3], NULL};
Eina_Iterator* iterator = eina_carray_iterator_new((void**)array);
Summary:
When glib support is enabled (HAVE_GLIB), _ecore_glib_init()
was always reserving resources. However, its counterpart may not
be called when:
- glib is not always integrated and
- when a user didn't explicitly required the integration.
Calling _ecore_glib_init() within the request code will cause the
resources to be reserved only when the integration with glib is
required and furthermore guarantees that resources always have a
chance to be released.
Reviewers: cedric, raster
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3749
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary: While making new changes after rewieving D3710 we met this bug again, removing eo_unref is the best way to fix it because _eo_ref_replace from D3021 makes nothing special.
Reviewers: cedric, raster, Hermet
Subscribers: jpeg, artem.popov
Differential Revision: https://phab.enlightenment.org/D3745
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
If not found edje part description, edje just set default description in spite of RTL status.
This adds to call function for getting the correct description as RTL status.
Reviewers: raster, Hermet, cedric
Subscribers: minkyu, sju27, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3735
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
With scim installed we can run into hangs of the test suite when the ecore_imf
scim module tries to connect to the scim on the system. This has happened again
and again on different installations and made the test suite really fragile.
We would need to make sure that scim is configured on the host before we could
run this test. It might be a candidate for skipped tests where we check if the
env has all we need to run the test and if not skip it. We don not have all the
needed pieces in place for this so the best we can do to make the test runs less
fragile is disabling scim module loading for now.
This small patch just fixes up some spelling errors in comments. No
functional changes.
Reviewers: zmike, devilhorns
Reviewed By: devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3753
Mostly unused vars following the removal of eo_do_ret().
However, there are some cases where the migration script got some things
wrong, and I had to manually fix them.
I just ran my script (email to follow) to migrate all of the EFL
automatically. This commit is *only* the automatic conversion, so it can
be easily reverted and re-run.
These file needed some manual adjustments in addition to the automatic
migration, that's why these are separate from the previous and next
commits, so I can easily know there are additional changes to these, and
it wasn't just the script.
The migration scripts breaks with some weird cases, here I manually
migrated some parts, and just removed the eo_do from others without
actually migrating (so I could deal with that later).
The syntax is described in: https://phab.enlightenment.org/w/eo/
Summary:
eo_do(obj, a_set(1)) -> a_set(obj, 1)
eo_do_super(obj, CLASS, a_set(1)) -> a_set(eo_super(obj, CLASS), 1)
eo_do_*_ret() set of functions are no longer needed.
This is the first step, the next step would be to also fix up eo_add()
which currently still uses the old syntax and is not 100% portable.
@feature
Create specific structures for each event:
- Ecore_Cocoa_Event_Window_Focused
- Ecore_Cocoa_Event_Window_Unfocused
- Ecore_Cocoa_Event_Window_Destroy
They are currently hold the same data, but this will allow not to break
the event protocol when future extensions will be needed.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Lost and got focused have been renamed FOCUSED and UNFOCUSED to mirror
the focus API in Elementary.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This type is used as a bridge between objective-c objects (which are
ALWAYS pointed to) and the C interface.
Ecore_Cocoa_Object* is a less ugly substitute for void*.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
These outputs are not giving any more information besides what we already get:
Ecore C++ headers compilePASS: tests/ecore_cxx/cxx_compile_test
(Ignoring the problem with the newline) The test name tells it all and we are
just filling the log.