Commit Graph

2629 Commits

Author SHA1 Message Date
Youngbok Shin f4f9753c20 Evas: Add API to reinit the language and use it in elementary.
Summary:
evas_common_language_from_locale_* functions kept static pointers
inside of its functions. Once these function was called, it was never reset.
It made big problems for harfbuzz and hyphenation. Also, Elementary
provides elm_language_set() API. Then we need to support it fully.
@fix

Test Plan: Test case for hyphenation is included in Evas test suite.

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

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3864
2016-04-08 11:24:32 +01:00
Jean-Philippe Andre f253f9a7bc Evas 3d: Fix compilation for Windows
near and far are #defined in windows.h. Old legacy stuff.
To be sure the code compiles, rename the variables.

Fixes T3423
2016-04-08 11:13:06 +09:00
Jean-Philippe Andre d1709a2b57 Efl: Rename flip and orient enums
Efl.Flip is now the enum, the interface is Flipable.
We could even use names like Efl.IFlip a la Java.

eo_prefix is used to have pretty names in C. legacy: null
is removed from the enums. orient_x0 is removed and only
defined in C with #define
2016-04-07 17:32:40 +09:00
Yeshwanth Reddivari 98edbd23a4 Interface: Flip and orientation interface
Summary:
Added flip and orientation interface and used them in evas_image.
Removed efl_image_orientation_set API and used efl_orientation_set and efl_flip_set API.
In implementation part, converted enums back and forth in order to keep current implementation as it is.

Test Plan: src/examples/evas/evas-images5.c

Reviewers: singh.amitesh, raster, tasn, herdsman, woohyun, cedric, felipealmeida, jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3844
2016-04-06 10:46:39 +09:00
Jean-Philippe Andre df03631ef6 Evas smart: Mark all smart clippers as no_render
This allows doing ugly things such as setting a clipper/mask
on any smart object, without having to worry about seeing a
white rectangle cover the whole screen.

While the above scenario is not a great idea (bypass elementary in
its handling of the clipper), having a big white rect covering the
entire UI seems even worse.

I wonder if elm objects shouldn't simply allow user clippers, and
somehow manage them along with the smart object internal clipper.
2016-04-05 18:20:36 +09:00
Carsten Haitzler 776f4cb112 evas: image obj - use vath to find images (sync not async) 2016-04-05 16:22:59 +09:00
Carsten Haitzler b132ce65ec evas - fix leak because cutouts_fre .. doesnt free - it just resets to 0
this works with 7166e6b859 and fixes a
leak added because ... free does not free!
evas_common_draw_context_cutouts_real_free(0 now actually frees the
rects, but evas_common_draw_context_cutouts_free() before did not.

@fix (follow on from 7166e6b859)
2016-04-01 17:54:37 +09:00
Minkyoung Kim f10672dd74 evas : remove native.func.data variable and data argument of native calblacks.
Summary:
Evas Image should be independent of render engine.
So remove native.func.data member of RGBA_Image, Evas_GL_Image struct.
And remove data argument,too.

Test Plan: Local test, Tizen3.0 mobile, Desktop englitenment

Reviewers: jpeg, spacegrapher, wonsik

Subscribers: cedric, dkdk

Differential Revision: https://phab.enlightenment.org/D3850
2016-04-01 12:09:06 +09:00
Carsten Haitzler 7166e6b859 evas sw render: fix previous thread fix to be portable
this fixes the fix 4d6a8a7fce to be
portable to platfomrs that do not support __thread - seemingly openbsd
does not (argh!) and maybe others. so on these platforms then they
dont get the optimization of keeping a cutout rect pool to avoid
re-allocation.

this also every 4096 draws "resets" the cutout cache so it doesnt
expand and stay expanded forever.

@fix
2016-04-01 11:29:50 +09:00
Carsten Haitzler 4dee873ab6 evas render: fix updates sometimes are list of rects sometimes updates
ssometimes the evas render updates are a list of Render_Updates
structs ... sometimes Eina_Rectangles. this is horrible and i think a
bug turns up (but its not reproducable on linux - just bsd) with an
invalid free ... likely because we free() a ptr from the mem pool
eina_rectangle gets rects from. thats most likely the cause of
https://phab.enlightenment.org/T3226 - but as i can't know for sure,
this is a guess, but readiong the code i see posible vectors of
problemss here ... maybe.

so this redoes the update rects to ALWAYS be Render_Updates struct
and appropriately returns correct structures etc. etc. in api which
demand a list of Eina_Rectangles there.

pending testing on foreign sysstems to confirm this by @netstar

@fix
2016-04-01 08:57:09 +09:00
Mike Blumenkrantz 46d214293e textblock: support escaped ' tag
while not in the official html4 spec, this was supported by all browsers
except IE during the html4 era and is now included in html5.

@fix
2016-03-29 15:40:12 -04:00
Jean-Philippe Andre 5917b49f59 Evas: Another fix for no-render
Despite the previous patches, no-render objects could be
partially visible. Eg a fileselector marked as no-render
would have its file list visible. All other children were not
shown.

I think this is not the last fix for this feature, but
eventually source_visible will have to die internally
and be replaced by no-render.

Thanks @yakov-g for the report.
2016-03-29 19:01:17 +09:00
Jean-Philippe Andre c41bae817c Evas.Image: Add NULL check before calling engine function 2016-03-29 15:19:54 +09:00
Jean-Philippe Andre a5b89d8ab3 Evas.Image: Remove pixels_dirty and pixels_callback
Those APIs belong to legacy, not Eo. Also, the image object
shouldn't be used directly for GL rendering, instead the GLview
widget should be used.
2016-03-29 14:54:03 +09:00
Jean-Philippe Andre 8407971a1a Evas: Disable events on no-render objects
Source events still work for proxies (if the flag is set).
2016-03-29 10:43:00 +09:00
Jean-Philippe Andre 8fb8e6d257 Evas render: Fix no-render with smart objects
Setting the no-render flag on an elm widget had no effect,
as it was not properly propagated to its children. This should
fix that, but I'm not a fan of the solution.

Fixes T3371
2016-03-29 10:43:00 +09:00
Jean-Philippe Andre cb93c26db7 Evas proxy: Implement buffer map/unmap 2016-03-28 16:40:02 +09:00
Jean-Philippe Andre 22353e31e1 Efl.Canvas.Image: Remove object data for maps
The engine is responsible for the complete tracking of
maps.

Also, make buffer_unmap return bool.
2016-03-28 16:40:02 +09:00
Jean-Philippe Andre 488854af2b Efl.Gfx.Buffer: Switch to void* data and signed ints
1. unsigned char* as a return type was not even compatible
   with the default colorspace (ARGB: 32 bits).

2. Change all unsigned to int for... uh... simplicity
   unsigned is more correct than int for things like width,
   size or stride, but in fact having both ints (x,y) and unsigned
   ints makes the code more complex.
   This is a matter of personal taste.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre d5b0b1e683 Evas: Add SW engine map/unmap functions
Also, fix some of the code using them.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 39a970835b Evas: Remove unimplemented border_set/get (engine internal) 2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 28a03d6e19 Evas: Remove unimplemented image comment (internal)
This is a minor cleanup of RGBA_Image.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 8b9f525c01 Evas.Image: Add ERR in long-deprecated functions
- evas_object_image_data_convert()
- evas_object_image_pixels_import()
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 326ff9ae82 Efl.Canvas.Image: Implement support for map/unmap
Now the real hard work is to actually implement support inside
the engines: SW and GL generic.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 91e0bdb1e7 Evas: Simplify direct access to image data
This should avoid issues with image_data_get from the engines,
when we really just want to fetch the original data pointer.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 08c1160888 Efl.Canvas.Image: Implement raw data_set/copy/get
No more refcount. This is only to initialize the data from
an external buffer. data_get will only work if data_set was
used (not even copy_set).
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre f78cbac9e6 Evas.Image: Remove buffer_set/get
This will be properly implemented by the subclasses. In particular,
map/unmap will be used where it makes sense, and data_get/set will
be limited to Efl.Canvas.Image and Surface.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre d4e713a18c Evas.Image: Move stride.get away from Evas.Image
stride does not apply to all image objects, eg. proxies or 3d scenes.
it will be implemented by the classes that support stride and pixel
data access
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 0d41ad0c83 Emile: Move colorspaces to Efl.Gfx
A small hack to the toolchain allows us to generate enums with eolian
for use by Eet and Emile (internal or otherwise non-eo libraries).

Thanks to how BUILT_SOURCES works, the eo.h files required by Emile
will be generated before they are used.

This adds a partial dependency on eo for eet and emile:
 - package dependency
 - include dependency

There is no library link dependency.
2016-03-28 16:40:01 +09:00
Jean-Philippe Andre 83b8b8c958 Evas.Image: Move data_set/get to legacy file
Those functions will be replaced by map/unmap
2016-03-28 15:53:15 +09:00
Carsten Haitzler 4d6a8a7fce evas sw render: cutout rects may be used in multiple threads
several draw funcs keep a static Cutout_Rect *rects = NULL; variable
to cache cutout rects to avoid re-allocating them a lot etc. this is
fast and handy but we may use these from multiple threads. thats bad
.... mmmkay. so this fixes it the dirty way - makes them thread local.
:)

this fixes T3348 - the crash mentioned by @zmike

@fix
2016-03-26 10:52:14 +09:00
Jiwon Kim c23283944b Evas textblock: fix null-derefernce in _style_match_tag()
Summary:
add null check in _style_match_tag()
if evas_object_textblock_text_markup_set() is called with markup text before setting style,
segmentation fault is occurred in _style_match_tag()
@fix

Test Plan:
Insert this situation to test suite
 -> test id : evas_textblock_simple

Test for without this patch:
 1. apply patch just "src/tests/evas/evas_test_textblock.c" partially.
 2. $make check

Test for with this patch:
 1. apply this patch completely (2 files)
 2. $make check

Reviewers: id213sin, herdsman

Subscribers: Blackmole, cedric, jpeg

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D3818
2016-03-24 10:17:57 +02:00
Boris Faure 65892e2d8a evas_object_textgrid: try bolditalic if original is book 2016-03-23 15:32:50 +01:00
Boris Faure bdec343985 evas_object_textgrid: also try bold font when original is of weight Book
and add debug
2016-03-23 15:28:13 +01:00
Daniel Hirt 4013dccda6 Evas font: fix width calc in last_up_to_pos
Width calculations should consider the x_bear. This has been leading to
inconsistent results between wrapping calculation during layout and the
final formatted size.

Also, we should stop our walk only when exceeding 'x', so changed "<="
to "<".

@fix
2016-03-23 15:31:20 +02:00
Jean-Philippe Andre b82382e958 evas: NEON scaling up fixed
Summary:
Previous implementation loaded data from memory first and then checked the borders.
Here I check the borders first as it is for C implementation.
This prevents read of non-accessible memory.

Reviewers: cedric, jypark, Hermet, jiin.moon, jpeg

Reviewed By: jpeg

Projects: #efl

Differential Revision: https://phab.enlightenment.org/D3809
2016-03-22 13:49:05 +09:00
Cedric BAIL fd80e26f06 evas: make no longer supported object, legacy only.
So I forgot to clean my hard drive from previously generated files,
and obviously everything still worked. This lead to having to roll back
evas_smart_clipped.eo as a public eo object until we merge elementary.

Still I would like someone to take a look at elm_pan.eo and figure out
how to not rely on smart clipped there.
2016-03-21 16:31:26 -07:00
Ji-Youn Park 7ebeec3dec Evas.Draggable_Interface: add drag_target property
object can set this property true if object can be target of dragging content.
2016-03-19 09:44:51 +08:30
Cedric Bail 11887c62a2 evas: include Eet.h as we do export a function using Eet_Data_Descriptor.
This was spotted by Nicolas Aguirre while building on Yocto which has
more agressive build option and warning.
2016-03-18 10:23:38 -07:00
Jean-Philippe Andre b8f682b842 Efl.Gfx.Fill: Rename filled to fill_auto
fill_filled is a strange name for the property.
fill_auto seems to make more sense. If you disagree, scream at
me or revert this commit.
2016-03-18 13:28:45 +09:00
Jean-Philippe Andre 9d4ca6f352 Evas.Image: (eo) fill_set now unsets the filled flag
There's no point in calling fill_set AND fillet_set(false).
If a users wants to specify the fill, that should be enough
to switch to non-filled mode.

Maybe the "filled" mode should even be called auto or something?
2016-03-18 13:28:45 +09:00
Cedric BAIL 5f908de18d evas: fix access to possibility undefined function. 2016-03-17 16:12:51 -07:00
Jean-Philippe Andre 0ac87d6a91 Efl.Canvas.Image: Add forgotten files!
Oh...
2016-03-17 14:14:06 +09:00
Jean-Philippe Andre ca65f66fc0 Efl.Canvas.Surface: Fix linking of inexisting functions
The EO files specified some functions that were not implemented.
Somehow this links fine with recent GCC but older versions have
trouble.
2016-03-17 14:02:26 +09:00
Jean-Philippe Andre 8c398c365c Evas.Image: Simplify inheritance tree of image classes
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).
2016-03-17 13:10:35 +09:00
Jean-Philippe Andre 8367f497b8 Evas.Image: Create Efl.Canvas.Image for file & data images
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...)
2016-03-17 13:10:35 +09:00
Jean-Philippe Andre edafd4ec34 Evas: Improve EVAS_OBJECT_LEGACY_API a bit more
This now calls EINA_SAFETY_ERROR which makes it easy to then
break inside _eina_legacy_error.
2016-03-17 13:10:35 +09:00
Jean-Philippe Andre 6ac68c9252 Evas.Image: Move all legacy EAPI out of evas_object_image.c
Some of these functions are still be in use by the new EO objects,
like data_set/get/copy_set.
2016-03-17 13:10:35 +09:00
Jean-Philippe Andre 6b03d46d54 Evas.Image: Fix ERR message (invalid call)
There was an unintended change from a silent return to EINA_SAFETY
inside _evas_object_image_free(). This avoids calling the function
altogether.
2016-03-17 13:10:35 +09:00
Chris Michael 7cbd8c7b93 evas: Fix incorrect expression in efl_canvas_surface_x11
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>
2016-03-16 09:24:20 -04:00
Chris Michael df12843512 evas: Fix incorrect expression in efl_canvas_surface_tbm
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>
2016-03-16 09:22:46 -04:00
Chris Michael 114d010fc1 evas: Fix incorrect expression in efl_canvas_surface_wayland
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>
2016-03-16 09:21:08 -04:00
Oleksandr Shcherbina 296e8c22b0 evas.canvas3d: support static LOD technic
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>
2016-03-15 12:49:39 -07:00
jiin.moon cdb7286485 evas: some changes for preload thread dead lock issue
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>
2016-03-15 11:57:25 -07:00
Tom Hacohen 8706d03b43 Change the EFL according to the renaming of the eo_add() current object. 2016-03-15 15:25:54 +00:00
Jean-Philippe Andre b239098441 Efl.Image: Move alpha to Efl.Gfx.Buffer
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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 97c9ced648 Efl.Gfx.Buffer: Simplify data_get/set
Remove alpha, l, r, t, b and output length. Those are simply
too many parameters, making the function too inconvenient to use.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 055ea6445a Evas image: Move content_hint and scale_hint to Efl.Image 2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 35f8d81d97 Evas image: Deprecate evas_object_image_alpha_mask_set 2016-03-15 11:11:59 +09:00
Jean-Philippe Andre b7e0eec089 Evas.Image: Fix legacy proxy API 2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 0c95b69474 Evas.Image: Move native surfaces to Efl.Canvas.Surface
X11, TBM and Wayland support are implemented for now.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 20b4d9dd6a Evas engines: Add internal functions for native images
- 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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre a58a3532e3 Evas.Image: remove video surface
Video stuff should move to a proper player class. I still wonder
how exactly Tizen video should be handled, as they continue to
reject emotion.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 7ddb73b177 Evas: Move 3d to Efl.Canvas.Scene3d
This still seems a bit redondant with the underlying
Evas.Canvas3d.Scene class.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 06cf9e6bea Evas.Image: Complete implementation of proxy and snapshot
This moves the EO APIs away from Evas.Image and adds the required
legacy bindings.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 68beccd1a9 Evas.Image: Add new classes Snapshot and Proxy
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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 0fc0db0020 Evas: Add internal macro EVAS_OBJECT_LEGACY_API
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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre c52a53c3dc Evas Image: Implement Gfx.Buffer get/set/copy_set APIs
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
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre ba53f0e785 Efl.Gfx.Buffer: Introduce buffer_set/get/copy_set
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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre b458341a13 Efl.Gfx.Buffer: Add interface skeletton 2016-03-15 11:11:59 +09:00
Jean-Philippe Andre e3de15d726 Efl.Image: Fix documentation for ratio + implement in evas image 2016-03-15 11:11:59 +09:00
Jean-Philippe Andre fd2c4b4a26 Evas image: Create interface Efl.Image.Animated
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)
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 544ae716ed Efl.Image: Improve documentation a bit
This interface needs to be extended and cleaned up... this will
happen in the following patches.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre b5d87aef1c Efl.Gfx.View: Rename property size to view_size
size is an insanely generic name, so there would be clashes
in language bindings. Use eo_prefix.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre 2d10127524 Evas image: Move filled property to Efl.Gfx.Fill and set as default
The filled property should be set to true by default since it
makes more sense. Legacy APIs behaviour is preserved by setting
the default to false.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre e9508ea80e Efl.Gfx.Fill: Remove fill_spread
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.
2016-03-15 11:11:59 +09:00
Jean-Philippe Andre b640cb5ba9 Evas filters: Simplify evas_filter_dirty
Objects can mark themselves as changed rather than having all this
duplicated code inside the mixin.
2016-03-15 11:11:59 +09:00
Cedric BAIL 0ff7429ea7 evas: move Evas_Polygon to become Efl_Canvas_Polygon.
TODO: add support for 2 points (aka line).
2016-03-14 15:12:52 -07:00
Boris Faure b0d039aa02 evas_text_grid: display bold/italic/bolditalic fonts if available 2016-03-12 18:42:50 +01:00
Boris Faure f3dc094310 evas_text_grid: remove optimisation (will come back later) to make code more readable 2016-03-12 18:10:03 +01:00
Tom Hacohen 66b4290d91 Revert "Vg node: modify so the eo_add migration script won't break."
This reverts commit 6ac1fb78d8.
2016-03-11 12:29:03 +00:00
Tom Hacohen f24210caac Revert "Automatic migration to the new eo_add syntax."
This reverts commit 4f949a2757.
2016-03-11 12:29:03 +00:00
Cedric BAIL 685681c864 efl: rename efl.core.animator to efl.animator.
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.
2016-03-10 13:14:13 -08:00
Tom Hacohen 4f949a2757 Automatic migration to the new eo_add syntax. 2016-03-09 16:09:14 +00:00
Tom Hacohen 6ac1fb78d8 Vg node: modify so the eo_add migration script won't break. 2016-03-09 16:09:14 +00:00
perepelits.m 74161be6f8 Evas: fix camera node adding to scene
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>
2016-03-04 16:09:51 -08:00
jiin.moon 41b8a320a0 evas: fix preload thread deadlock issue
Summary: Wrong condition makes deadlock issue.

Reviewers: jpeg, jypark

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-03-04 16:09:51 -08:00
Tom Hacohen f1b1c5354b Manually fix extra eo_do calls that were added after I migrated 2016-03-03 10:03:55 +00:00
Tom Hacohen 23a6b12183 Fix migration script mistakes and compilation warnings.
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.
2016-03-03 09:58:08 +00:00
Tom Hacohen f21ade6123 Automatic migration to Eo4.
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.
2016-03-03 09:58:08 +00:00
Tom Hacohen 438e1db893 Manually semi-migrate files in preparation for 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).
2016-03-03 09:56:20 +00:00
Jean-Philippe Andre bbc616e064 Evas filters: Fix meaning of data 'execute' flag
The doc said it would behave like "value = data" but actually
the data part was executed directly. This should fix that.
2016-03-02 13:11:29 +09:00
Jean-Philippe Andre bafe723991 Evas filters: Mark object as changed on data_set
This fixes the new test case.
2016-03-02 12:57:23 +09:00
Jean-Philippe Andre 2409784df1 Evas text: Add legacy filter APIs
Those should now be considered stable, even if their internals
may change. Also, these APIs are in Tizen so adding these will
help merging Tizen EFL and upstream.
2016-03-02 12:57:23 +09:00
Jean-Philippe Andre b369989a79 Evas filters: Fix bad stringshare usage
Make sure the filter uses properly initialized state names and
don't call stringshare_del on a static string.
2016-03-02 12:57:23 +09:00
Jean-Philippe Andre 24f19dc770 Efl.Gfx.Filter: Rework APIs and mark as stable
- Remove @beta flags,
- Update @since to match stabilization,
- Change methods to properties with keys,
- Use eo_prefix and add filter_ prefix to all properties since
  they use very generic names,

The filter API stays under Efl.Gfx since there are other kinds of
filters, and this one is the particular "graphical filter" or
"effect" API.

The EO API mostly not change from an application point of view,
except for "source_get" which now returns a string directly. Also,
state and data can now be queried.
2016-03-02 12:57:23 +09:00
Carsten Haitzler e167154520 evas render2 - move empty region data into const land so it is in RO mem
this should ensure these constants are in read-only memory if
possible iof they are marked as const as well as static
2016-03-01 13:13:33 +09:00
Carsten Haitzler 1585d242da evas - render2 - silence new gcc warnings about possibly freeing static
This one is new:

In file included from lib/evas/canvas/render2/evas_render2.c:5:0:
In function ‘_region_break.isra.5’,
    inlined from ‘region_add’ at
lib/evas/canvas/render2/region.c:847:41:
lib/evas/canvas/render2/region.c:107:62: warning: attempt to free a
non-heap object ‘_region_brokendata’ [-Wfree-nonheap-object]
 #define FREE_DATA(reg) if ((reg)->data && (reg)->data->size)
free((reg)->data)
                                                              ^
                                                              lib/evas/canvas/render2/region.c:184:4:
note: in expansion of macro ‘FREE_DATA’
    FREE_DATA(region);

While it won't actually free is because if using brokendata the size
is 0 and it'll skip it, add in a check to see if region->data is the
brokendata static
2016-03-01 13:09:50 +09:00
Shuhrat Dehkanov f3d978e04c Update documentation text
Summary:
The word 'english' has several issues:
 - the whole documentation and source code is in English,
   there is no point in mentioning here specifically
 - the character 'E' needs to be capitalized, as in
   Ecore, Evas, Elementary

Reviewers: zmike, herdsman

Subscribers: cedric, seoz, jpeg

Differential Revision: https://phab.enlightenment.org/D3740
2016-02-29 07:02:20 -05:00
Tom Hacohen e71e6561ee Eo callbacks: Migrate all of the EFL to the new event cb signatures. 2016-02-29 11:33:27 +00:00
Daniel Hirt 409f45478b Evas textblock: add a stringshare fastpath to markup_set
This optimization makes use of already stringshare'd text and avoids
unnecessary stringshare_add calls in markup_set. It improves the
performance of edje_calc when reapplying text to the textblock part.
2016-02-29 08:59:24 +00:00
Daniel Hirt c7d45032dd Evas textblock: fix cached markup's stringshare refs
The last fix 34020ed131 was missing a
stringshare_del for the NOP case of markup_set. It led to a
constantly increasing ref count of the cached markup.

@fix
2016-02-28 18:00:08 +02:00
Jean-Philippe Andre 17e3f8c1a6 Evas Filter: Use Eo.Base.constructor in the mixin
This is made possible by inheriting first from an interface
instead of Eo.Base, thus implementing the Eo.Base interface.
2016-02-26 18:36:23 +09:00
Tom Hacohen 34020ed131 Evas textblock: Fix markup cache, was completely broken.
The markup cache was completely broken. It was not compared correctly,
so it wasn't even used, but regardless it was cleared just after being
set in some of the cases.

This is the first part of a performance regression fix in elm label.

@fix
2016-02-26 09:13:38 +00:00
Tom Hacohen 8c1933c388 Evas image: Migrate all the remaining types to Eolian. 2016-02-17 12:24:22 +00:00
Tom Hacohen 094a1f2b5e Evas canvas3d: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-17 10:22:34 +00:00
Tom Hacohen 1c8ae97b83 Evas canvas3d mesh: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-17 10:00:11 +00:00
Tom Hacohen 82caec2888 Evas canvas3d texture: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-17 09:48:34 +00:00
Youngbok Shin d9b93542cf Evas font: allow ":fallbacks" keyword when Evas parses font keyword
Summary:
Developers could use fallback fonts using only font_fallbacks keyword.
The keyword is only allowed for Evas Textblock. It has to be common
feature for other text type objects.
Applying this patch, Text and Textgrid can add fallback fonts.
@feature

Test Plan:
Set font like the following example to Textblock, Text, Textgrid.
Sans:fallbacks=Inconsolata

Reviewers: tasn, herdsman, woohyun

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3704
2016-02-17 09:23:06 +00:00
se.osadchy 780ec5d029 evas: Update evas_3d_utils, replace Evas_Vec.
Summary: Change Evas_Vec2(3) to Eina_Vector2(3).

Reviewers: cedric, Hermet, jpeg

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3686
2016-02-17 16:12:35 +09:00
Youngbok Shin 471c7635ee Evas Text: Update text layout when ellipsis is changed without resize
Summary:
When only ellipsis is changed from 0.0~1.0 to -1.0 without resize,
the text is never updated. Because, previous state for ellipsis is never kept
and used properly to check when Evas Text needs to be updated.

It does not have any effect when ellipsis is changed from -1.0 to 0.0~1.0.
Because, Evas text always resize itself according to its text size.
So, necessarily, Evas text object has to be resized to the smaller size.
Commonly, Edje will handle its size if Evas text needs to be ellipsized.
@fix

Test Plan: Test case is included.

Reviewers: tasn, woohyun, herdsman

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3448
2016-02-16 17:42:11 +02:00
Tom Hacohen 511c4deb84 Evas box: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-16 14:33:32 +00:00
Tom Hacohen 0fa24ee175 Evas out: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-16 10:06:46 +00:00
Tom Hacohen 9c44e1c2dd Evas ector buffer: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-16 09:48:22 +00:00
Tom Hacohen d9d3acc45a Evas vg: Fix Eolian warnings.
This includes either migrating types to eolian, fixing namespace or
importing extra types.
2016-02-16 09:45:47 +00:00
Tom Hacohen 7293d234e5 Efl vg: Use correct types in eolian file. 2016-02-16 09:35:22 +00:00
Youngbok Shin b85ae77633 Evas text: set NULL free'd pointers in evas_object_text_free()
Summary:
_render_pre() function could be called for an object which is
going to be deleted. According to state changes of the object,
text could be recalculated with free'd pointers. It caused an
invalid read and crash.
@fix

Test Plan:
1. Apply D1747.
2. Run elementary_test.
3. Put any character in elm_entry and change paragraph direction.
4. Put any character again.
5. It can cause a crash which is caused by invalid read in Evas Text.

Reviewers: herdsman, woohyun, tasn, raster

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3445
2016-02-15 10:41:37 +00:00
Daniel Hirt d79a1ade6c Evas textblock: ifdef unused 'hyphens' code
The usage of the 'hyphens' array is only relevant when
"--enable-hyphen" is used.
This fixes the dead code addressed in
5b083ace84.
2016-02-14 15:46:23 +02:00
Daniel Hirt 196029316d Revert "Evas textblock: Properly ifdef hyphenation out."
This reverts commit 5b083ace84.

The "--enable-hyphen" option refers to using the optional hyphenation
dictionaries. We support hyphenation via SHY-HYPHEN hints regardless of
this option.
The following commit will provide finer handling to address the issue in
the reverted one.
2016-02-14 15:46:10 +02:00
Ivan Furs 5af22ba27a evas: optimize Canvas3D calculation of bounding space
Summary: Bounding box and sphere will calculate if user need callback of collision or data of box or data of sphere.

Reviewers: sri.hebbar, cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-02-12 21:25:55 +01:00
Tom Hacohen 4bfcc8a347 Eolian eina_types: Add Eina.Matrix3 and start using it. 2016-02-12 14:41:40 +00:00
Tom Hacohen 5b083ace84 Evas textblock: Properly ifdef hyphenation out.
I found this thanks to coverity. There was some code that we were running
although hyphenation was actually off.

CID 1341062.
2016-02-12 12:21:06 +00:00
Youngbok Shin 0186f87c49 Evas textblock: Fix _dict_hyphen_load could return an uninitialized pointer
Summary:
If there are hyph_*.dic files except for requested language,
"dict" pointer could be return without initialized. It doesn't make any
warning messages when it is compiled. Normally, it is NULL implicitly.
But, it is good to set NULL explicitly for understanding code.

Test Plan: N/A

Reviewers: herdsman, tasn, woohyun

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3674
2016-02-12 09:46:44 +00:00
Youngbok Shin b4f254e1a3 Evas font: Use proper enum value for extrabold
Summary:
ULTRABOLD is identical to EXTRABOLD in freetype.
But, "extrabold" word is added for FC_WEIGHT_EXTRABOLD.
So, it has to be changed to use EXTRABOLD instead of
ULTRABOLD. It was mistake in my previous commit.
@fix

Test Plan: N/A

Reviewers: tasn, herdsman, woohyun

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3673
2016-02-11 10:17:46 +00:00
Florent Revest 1d99c5b907 evas: include Eet.h where it's needed.
This patch is applied by OpenEmbedded project to let evas build
correctly in crosscompilation environnement.
cf: https://github.com/openembedded/meta-oe/blob/master/meta-efl/recipes-efl/efl/efl/0002-evas_3d-Add-Eet.h-includes.patch

@fix

Signed-off-by: Nicolas Aguirre <aguirre.nicolas@gmail.com>
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-02-10 10:46:45 -08:00
Mike Blumenkrantz da127a69d0 evas: check EINA_MEMPOOL env var when creating evas mempool allocators
this should really be a utility function already since all mempools in efl use
the exact same code...
2016-02-05 14:35:28 -05:00
Youngbok Shin 931b225895 Evas textblock: Save memory space reducing unused hyphen dictionary loads
Summary:
Commonly, only few hyphenation dictionaries are used at a application.
So, loading all of dictionary files could cause waste of memory.
Evas textblock has to load hyphenation dictionaries only when it is
really needed.

Test Plan: N/A

Reviewers: woohyun, tasn, herdsman

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3626
2016-02-04 17:30:58 +02:00
Youngbok Shin 33ea565347 Evas: Use proper language for harfbuzz shaping
Summary:
Evas Text, Textblock, Textgrid keeps own language information.
This language information could be vary from the result of setlocale().
Especially, Evas Textblock supports <lang> tag. The language could be
changed in the middle of text. All of these language has to be used
for harfbuzz shaping.
@fix

Test Plan: N/A

Reviewers: herdsman, raster, woohyun, tasn

Reviewed By: tasn

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3628
2016-02-04 10:07:08 +00:00
Youngbok Shin 757f842992 Evas textgrid: Use default language according to locale
Summary:
Use default language according to locale.
It's the same as the recent changes on Evas Text, Textblock.
@feature

Test Plan: N/A

Reviewers: herdsman, raster, tasn

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3642
2016-02-03 09:34:32 +00:00
Cedric BAIL bdd163fce8 evas: don't emit EVAS_CALLBACK_MOVE event if nobody is listening.
This give a constant improvement of 2% over a total benchmark run while scrolling
genlist. This benchmark included setup and destruction of the scene, so under
estimate the cost of the callback emit.
2016-02-02 10:47:25 -08:00
Cedric BAIL 1ec244a09e evas: no need to call legacy function internally when we can just dereference some pointers. 2016-02-02 10:47:25 -08:00
Cedric BAIL f1bf1e58df eo: return a value when adding or removing callback to help the caller manage state. 2016-02-02 10:47:25 -08:00
Cedric BAIL e8134e868a evas: make evas object an animator provider. 2016-02-02 10:47:01 -08:00
Cedric BAIL 62030c1003 evas: make evas a provider of animator. 2016-02-02 10:45:42 -08:00
Cedric BAIL bf26946ba1 evas: move canvas event to be declared inside proper eolian file. 2016-02-02 10:45:42 -08:00
Hermet Park 909af58b8e evas/canvas: fix an incorrect sizing of smart object bounding box.
height of the children b-box should be arranged by parent y-pos.

Signed-Off-By: KeuckDo Bang <keuckdo.bang@samsung.com>
Signed-Off-By: MinKyu Kim <imetjade.kim@samsung.com>

@fix
2016-02-02 21:19:46 +09:00
Hermet Park a382e92017 Revert "Revert "increase recalculation_cycle.""
This reverts commit 9efdf309ce.
2016-02-02 19:25:28 +09:00
Youngbok Shin cd01636d76 Evas textblock: Use a common thickness and position at a underline.
Summary:
If a underline is drawn with seperated thickness and position, it doesn't look good.
It will take the thickest and the lowest underline.

@feature

Test Plan:
Set the following markup text in Evas Textblock.
<underline=on underline_color=#fff><font_size=20>Markup text <font_size=50>with</font_size> underline tag</font_size></underline>

It shows the underline is split to 3 underlines with different thickness and positions.
Commonly, underline has to be drawn with same thickness ans position per each line.

Reviewers: woohyun, herdsman, tasn

Reviewed By: tasn

Subscribers: jpeg, raster, subodh6129, cedric

Differential Revision: https://phab.enlightenment.org/D2971
2016-02-02 10:22:09 +00:00
Youngbok Shin d15d91e0da Evas Text/Textblock: Use locale for lang as default.
Summary:
The configuration files for Fontconfig can describe
how font list is made according to language information.
EFL also set the language for each Evas textblock styles
and used for loading font list.

But, this is inconvenient to use if we want to apply language
for loading font list according to system-wide locale information.
This patch will apply locale information for font list if there is
no specific language in description.

And it also add [lang=auto] for Evas Textblock.
auto - It loads locale for language.
none - It disables language.

@feature

Test Plan: N/A

Reviewers: woohyun, herdsman, tasn

Subscribers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D3344
2016-02-02 10:22:09 +00:00
Hermet Park 9efdf309ce Revert "increase recalculation_cycle."
This reverts commit 524fd2f6fc.

rollback until release 1.17
2016-02-02 18:11:19 +09:00
Hermet Park f6722e63fa Revert "evas/canvas: simple optimization."
This reverts commit ca124ce5ce.

rollback until release 1.17
2016-02-02 18:09:01 +09:00
Hermet Park ca124ce5ce evas/canvas: simple optimization.
We don't need to reorder the clist here as far as I reviewed.
Because, the clist nodes will be calculated all in one.

If I'm wrong please ping me.
2016-02-02 17:59:27 +09:00
Hermet Park 524fd2f6fc increase recalculation_cycle.
256 is too short.
entry can be much larger than this calculation cycle.
2016-02-02 17:54:29 +09:00
Jean-Philippe Andre 2c61aa0d54 evas: Fix typo in previous clip issue fix
See 100a7006b8.

This typo actually caused some really rare crashes to happen
(even rarer than the one I fixed originally). Crashes nonetheless.
2016-02-01 20:29:15 +09:00
Jean-Philippe Andre 100a7006b8 Evas clip: Fix rare crash in _render_pre_clipper_change
Use delete callback instead of direct call to clip_unset,
which lets us know that clip_unset() is called during the
clipper's deletion, as opposed to a simple call.

We can then make sure that the previous object state does
not point to invalid data anymore.

Here is a scenario that could have crashed:
- load and show an edje object, hide it
- change its theme or style
- show it again

@fix
2016-01-28 12:19:53 +09:00
Chris Michael cbf2aa2bf9 evas: Fix explicit NULL dereference
This patch fixes an Coverity issue that if 'dst' gets set to NULL (as can
happen above) then this eo_do call may segfault as it is directly
accessing 'dst->buffer'.

@fix
CID1347415

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-27 12:07:38 -05:00
Chris Michael 64aff0a7f0 evas: Fix segfault when trying to determine overlay usage
Previously, _evas_render_can_use_overlay would segfault here when
trying to make use of an Evas_Video_Surface. This is because eo_tmp
variable was never reassigned to be the smart parent before we tried
to get eo data from it.

@fix

NB: Thanks Frenchie !! ;)

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-01-25 16:10:25 -05:00
Ji-Youn Park c11764534b evas: Updated documentation of evas_object_image_save. 2016-01-23 18:06:07 +08:30
Ji-Youn Park d395a867a4 evas: Updated documentation of evas_object_image_save. 2016-01-23 17:16:34 +08:30
Jean-Philippe Andre 26e74c4219 Evas filters: Fix transform filter (crashes & blend)
out was simply not initialized if the source and destination
were the same. The COW flag is required here to separate input
and output properly. Also, the source & destination pointers
were badly calculated and could overflow.

Instead of using memcpy this filter was supposed to use the
blend functions. This patch also fixes that.

In order to make this filter actually useful (think text reflection
on a flat surface), more information needs to be passed to the Lua
script, such as the text ascent, descent, etc...
2016-01-22 15:35:23 +09:00
Jean-Philippe Andre 1e35a5239b Evas filters: Fix inconsistency in transform API
This is a minor change, makes 'output' the default target for
the transform filter. This is consistent with all the other
filters. This is not exactly a bug fix but it doesn't break
compatibility with the earlier explicit form and improves the API
for 1.17.
2016-01-22 15:35:23 +09:00
Jean-Philippe Andre 139e27314c Evas filters: Disable debug mode!
Ooops, I must have let this in by mistake.
2016-01-22 15:35:23 +09:00
Jean-Philippe Andre c2522dd736 Evas filter: Rename constructor/destructor to ctor/dtor
This avoids a name clash with Eo.Base.
2016-01-13 18:51:20 +09:00
Jean-Philippe Andre 22324f21b3 EFL: Mark EOLIAN functions as static when possible
This affects mostly evas filters.
2016-01-13 15:34:20 +09:00
perepelits.m ba31dc7194 Evas: remove extra if from evas_3d_utils.h
Summary: remove extra if from evas_3d_utils.h according to Coverity (CID1339788)

Reviewers: raster, Hermet, cedric

Subscribers: jpeg, artem.popov

Differential Revision: https://phab.enlightenment.org/D3558
2016-01-13 14:50:59 +09:00
Jean-Philippe Andre 65715dafc5 Evas filters: Fix unused variables
Thanks @stefan_schmidt for the report
2016-01-13 14:50:58 +09:00
Jean-Philippe Andre 81ed0de016 Evas render: Fix typo (use & instead of &)
Thanks @stefan_schmidt for the report
2016-01-13 14:49:41 +09:00
Tom Hacohen 987fde58a7 Evas textblock: Remove redundant NULL check.
Detected by smatch.
2016-01-12 11:00:01 +00:00
Tom Hacohen e64192f446 Evas textblock: slight style fixes. 2016-01-12 10:55:49 +00:00
perepelits.m 687df102d6 evas: fix optimization of vertex count in convex hull
Summary: FLT_COMPARISON should be used everywhere in evas_3d_utils.h

Reviewers: cedric, raster, Hermet

Subscribers: jpeg, artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-09 00:33:51 +01:00
Jean-Philippe Andre 25ccef095e Evas filters: Fix minor compilation warning 2016-01-07 19:19:09 +09:00
Jean-Philippe Andre 52dfd61833 Evas filters: Fix async render and unify SW + GL
SW async render mode was broken because it was party sync, partly
async (bad hack in a recent commit). This patch fixes that by
using a proper callback for render_post (main loop).

Since the engines and ector now abstract all pixel access functions,
the only difference between GL and SW is the async rendering.
2016-01-07 17:47:48 +09:00
Jean-Philippe Andre 1f291a6a5b Evas filters: Run immediately in async mode (flush vs. enqueue) 2016-01-07 17:47:48 +09:00
Jean-Philippe Andre c4b25604c7 Evas: Document Evas.Render_Op
1. MASK is not used for masking
2. only BLEND and COPY actually work

Should we merge Efl.Gfx.Render_Op and Evas.Render_Op?
(this would mean Efl.Gfx.Render_Op.copy = 2 instead of 1)
2016-01-07 15:12:34 +09:00
Jean-Philippe Andre 8822dcd115 Evas filters: Remove ERR message
GL filters now work. Slow, but they work.
2016-01-07 14:46:22 +09:00
Jean-Philippe Andre e61182f7ac Evas render: Fix render artifacts with a mapped object
Problem visible in Enventor "map" example, with the SW engine.

Fixes T2979
2016-01-07 11:12:51 +09:00
Jean-Philippe Andre f00f466250 Evas render: Distinguish has_map and can_map
This patch is a minor code cleanup before fixing T2979
(render artifacts inside Enventor).
2016-01-07 11:12:51 +09:00
Minwoo, Lee 3f5066278e evas: fix a NULL dereference issue
Summary:
If evas engine init failed, it can make crash.
For example
If opengl init failed, then ee->prop.window is 0
ecore_evas_gl_x11_options_new_internal
{
   if (!ee->prop.window)
     {
        ERR("evas_engine_info_set() init engine '%s' failed.", ee->driver);
        ecore_evas_free(ee);
        return NULL;
     }
}

ecore_evas_free calls evas_fonts_zero_pressure
and this time evas->engine.func is NULL so it makes crash.

Reviewers: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-06 13:36:40 -08:00
perepelits.m d2bb0eefc4 Evas 3d: Get hash table of scenes using the given node as root.
Summary: We need this to have an access to scene while running programs in edje-3d.

Reviewers: cedric, raster, Hermet, jpeg

Reviewed By: jpeg

Subscribers: jpeg, artem.popov

Differential Revision: https://phab.enlightenment.org/D3529
2016-01-06 13:50:21 +09:00
Jean-Philippe Andre c1b4728487 Evas filters: Final fix after the ector refactor
This implements a generic way of scaling buffers, using fake
RGBA_Image wrapping ector buffer maps. The underlying algo is
still the good old linear sw scaler.

Now the filters *should* be back to their previous level of
usability. Performance will probably be even worse than it was
before, for GL, as more glReadPixels may be involved. Optimization
now consists in actually implementing the filters with GL shaders.
2016-01-05 16:02:27 +09:00
Jean-Philippe Andre 0d5b42e6bb Evas filters: Move evas image creation to the engine
Evas filters is now more and more unaware of evas images (RGBA_Image)
and the engine + ector take care of everything.

Still left to do:
- map / unmap an FBO buffer into RO or RW memory
2016-01-05 15:43:44 +09:00
Jean-Philippe Andre 9e0670a705 Evas filters & Ector GL: Prepare ground work for GL buffers
This fixes crashes, adds safety, and notes a couple of things that
are not yet implemented:
- Make an Evas_GL_Image from an RGBA_Image so we can draw it on the
  canvas. This means Evas.Ector.GL.RGBA_Image.Buffer
- Readable Evas_GL_Image objects with gl_read_pixels
  --> Implement proper map() & unmap() for GL buffers
2016-01-05 15:43:44 +09:00
Jean-Philippe Andre eda13b7298 Evas filters: Relax limitations about colorspaces
Since Ector Buffer implicitly converts colorspaces, we
can allow more commands to work even if they are suboptimal.

Now all filters should support any combinaison of input, map/mask
and output colorspaces.
2016-01-05 15:43:44 +09:00
Jean-Philippe Andre 7d636630cf Evas filters: Fix proxies following previous refactor
FIXME:
 - GL support is still shaky
2016-01-05 15:43:44 +09:00
Jean-Philippe Andre 57902fffd3 Evas filters: Use Ector.Buffer instead of RGBA_Image
This is a major refactoring of the evas filters submodule.

Use Ector.Buffer and the map/unmap methods instead of directly
accessing image buffers with RGBA_Image. RGBA_Image is still
used under the hood, for two reasons:
 - Required for the final output (blend onto Evas itself)
 - Required for the scaling routines

FIXME:
 - Breaks proxy support (ie. all kind of texturing).
 - This breaks filters support for the GL engine.
2016-01-05 15:43:44 +09:00
Jean-Philippe Andre e3af2783ff Evas filters: Minor debug improvement 2016-01-05 15:43:44 +09:00
Jean-Philippe Andre 9bd36f7c43 ector eo: fix indentation (tabs --> spaces)
Why? Why would an editor replace 8 spaces by a TAB?
WHYYYYYY?
2016-01-05 15:43:43 +09:00
Jean-Philippe Andre 7a8879ba8b ector: add engine-specific evas image buffer wrapper
Since Evas still relies entirely on Image_Entry and Evas_GL_Image,
we will need an engine-specific wrapper object creating a Buffer
around an existing cached image.

Currently only SW support is implemented. GL will be more fun to
do (with glReadPixels and whatnot).
2016-01-05 15:43:43 +09:00
Jean-Philippe Andre 61fcf8e497 Evas filters: Fix crazy code (only when DEBUG=1) 2016-01-05 14:54:04 +09:00
se.osadchy 2127547cb9 evas: create Eina_Vector2 structure and add functions.
Summary: Only copy code from evas_3d_utils, rename evas to eina and add documentation.

Reviewers: Hermet, raster, jpeg, cedric

Reviewed By: jpeg, cedric

Subscribers: jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-04 15:06:00 -08:00
perepelits.m e6ccfcedd8 evas: fix convex hull.
Summary:
There were some problems with second and third vertices in the first triangle of convex hull. It is very hard to see this errors because it could cause
an excess of triangles inside of convex hull, I have used blender to find them.

Reviewers: raster, Hermet, cedric

Reviewed By: cedric

Subscribers: jpeg, artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-01-04 14:50:45 -08:00
Tom Hacohen ebe09c4854 Evas textblock: Clean up ellipsis handling code.
This cleans up the previous commit a bit by isolating the calculation
code and using a temporary descriptively named variable for the calculation.
2016-01-04 15:12:10 +00:00
Youngbok Shin 3252e3bf78 Evas Textblock: Fix ellipsis when textblock is resized to formatted h.
Summary:
it->h is sum of max ascent and max descent. It shouldn't be used
when handle ellipsis. Because, Evas Textblock uses these values for
each lines differently according to its location.
(start, end, else, single)
So, for handling ellipsis exactly, it has to be fixed.

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

Reviewers: woohyun, tasn, herdsman

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3475
2016-01-04 15:12:10 +00:00
Jean-Philippe Andre 2ac9e788c6 Evas: Implement ARGY88 and GRY8 conversion to ARGB8888
This is adding support for a deprecated function, but apparently
it is used.

Also, remove crazy abort() inside the data_put function.

Fixes T2991
2015-12-29 22:05:50 +09:00
Jean-Philippe Andre b13502f20a Evas 3d: Fix some potential crashes
Those were happening before the previous patches.
2015-12-29 16:18:36 +09:00
Jean-Philippe Andre 92f17399a7 Evas 3d: Improve error messages in model load & save
See make check's evas_suite ouput
2015-12-29 16:08:05 +09:00
perepelits.m e6bba4d91c [Evas] Refactor model's savers and loaders.
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)

Everything is OK with make check.

Reviewers: cedric, raster, Hermet, stefan_schmidt

Reviewed By: stefan_schmidt

Subscribers: jpeg, artem.popov

Differential Revision: https://phab.enlightenment.org/D3430
2015-12-29 13:28:56 +09:00
Mike Blumenkrantz 8981f08555 evas: handle existing pointer grabs when changing object pointer mode
in the case that pointer mode is changed on an object at any time after
a grab has been acquired by the object, grabs/flags must be adjusted for
this and other "pointer-in" objects in order to avoid permanently
breaking canvas events

@fix
2015-12-22 16:21:11 -05:00
Mike Blumenkrantz e4d11e2e4f evas: unset pointer ungrabs when using EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN
I have no idea what this mode was intended to do since there are no docs
and the related code in evas events is undocumented, so I can only speculate.

what I can say for certain is that this mode does grab, in opposition to its name,
and that until this commit any object which sets this pointer mode will
permanently break mouse eventing on the canvas

ref evas SVN 67264

@fix
2015-12-22 16:21:11 -05:00
Subodh Kumar 105960b24f Evas textblock: Fix some indentation and formatting.
Summary: Fix some indentation and formatting.

Reviewers: herdsman, cedric, tasn

Reviewed By: cedric

Subscribers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D3174
2015-12-18 15:14:05 +00:00
Minkyoung Kim 25ebd91555 evas/gl : Do not re-preload image data if texture is successfully uploaded with image data.
Summary:
'cached' flag is not enough to check whethere data is loaded and texture is uploaded.
so check more options for prevent re-preload image data on gl-backend.

Test Plan: Local Test (elementary_test : elm images)

Reviewers: jpeg, eunue

Reviewed By: jpeg

Subscribers: cedric, jiin.moon, wonsik, spacegrapher

Differential Revision: https://phab.enlightenment.org/D3446
2015-12-18 16:49:17 +09:00
Tom Hacohen 3d91e5eae8 Revert "evas: fix some indentation and formatting in textblock."
This patch was *REJECTED*. I don't understand why it was snuck in among
a batch of 24 other unrelated patches. That made me miss it originally,
  but found it now. This is wrong and shouldn't be in.

This reverts commit 3f0d0daf0d.
2015-12-17 12:51:37 +00:00
Subodh Kumar 43f50dc7db Evas textblock: Use width of item format to position cursor.
Summary:
Use width of item format to position cursor.

Sometimes it becomes very difficult to
position cursor over item and selection
becomes very difficult as we position the
cursor once the input X coord reached end of the item,
like one attached in the test plan. So this patch
decides over 50% of item width for X coord reaches
to position it at start or end.

@ix

Test Plan:
Attached setup shows how difficult to position cursor at the end when clicked
over item and selection is also very difficult. Consider such case in mobile
device, its becomes impossible to position cursor at the end and selection is
too much difficult.

{F27036}

Also added test cases in evas test suite

Reviewers: herdsman, tasn

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3390
2015-12-17 12:00:23 +00:00
Sung-Taek Hong 8c891ed049 evas_callback: Remove callbacks in reverse order with evas_event_callback_del
Summary:
 - This function is deprecated, because del_full should be used instead.
 - Still, the documentation specifies in which order the callbacks should
 - be deleted.

Reviewers: Hermet, jpeg, jaehwan

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3459
2015-12-17 16:03:26 +09:00
Mike Blumenkrantz fc4b927a83 evas: update/clarify RENDER_FLUSH callback docs 2015-12-15 17:57:37 -05:00
Mike Blumenkrantz fb8c547077 evas: do not unset/delete master clip after every frame
this is not ideal since it triggers a client-side rerender of every object
which was clipped to the master clip (double render) and then this ends up
forcing the server to rerender the same area twice as well

not only that, it causes all surface damages to to be the size of the entire
window - framespace for every frame

@fix
2015-12-15 17:24:52 -05:00
Mike Blumenkrantz 1d3c4162b3 evas: trigger FLUSH_PRE callback prior to kicking off an async render
while not occurring immediately before flush as in sync rendering, this
is functionally close enough that it will serve the purpose for which the
callback was intended, namely receiving a callback that occurs after render
update calculations have occurred but before flush happens

@fix

ref cbb447c878
2015-12-15 17:24:52 -05:00
Mike Blumenkrantz 092d7a6f3d evas: resize master clip if framespace|viewport.changed is set 2015-12-15 17:24:52 -05:00
Mike Blumenkrantz 990c23c840 evas: do not add unclipped smart members to the master clip
this is probably a pretty unlikely scenario, but messing with smart
members in this way is probably not a great idea

@fix
2015-12-15 17:24:52 -05:00
Jean-Philippe Andre 42744eff6f Evas VG: Fix clang warning 2015-12-15 15:05:03 +09:00
Youngbok Shin fcba96384f Evas Textblock: Fix NULL dereferencing issue
Summary:
Even if the given two cursor is NULL, it shouldn't be crashed.
@fix

Test Plan:
Test case included in Evas test suite.
Run "make check".

Reviewers: herdsman, tasn

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3422
2015-12-13 17:15:10 +02:00
Carsten Haitzler 22869bb94e evas - fix evas module locks to init/del when movile created/destroyed
we initted when we load and unload. this led to races with
locking/unlocking elsewhere as these expected us to be initted and we
were not yet. this fixes that!

@fix
2015-12-12 23:37:16 +09:00
Carsten Haitzler 000beb2f17 Revert "evas: trigger RENDER_FLUSH callbacks during async render"
This reverts commit cbb447c878.

1. this is wrong because evas_render_pipe_wakeup() is being called IN
THE RENDER THREAD. it... SENDS a wakeup back to the mainloop with

   evas_async_events_put(data, 0, NULL, evas_render_async_wakeup);

and you can see that evas_render_async_wakeup() calls
evas_render_wakeup() and in evas_render_wakeup() flush pre/post are
called, but since the trhead does the flush we cant realyl call
before/after, but it retains order... IF there are updates (haveup).

so calling these callbacks FROM a thread is now leading to apps
mysteriously exiting. this is mucho bad. just at random i now have my
terminals exiting.
2015-12-11 15:15:36 +09:00
Minkyoung Kim a9df72f611 evas: Do not preload data if data is cached.
Summary: Summary : If data is cached, need not to reload data.

Test Plan: Local tests

Reviewers: jpeg

Reviewed By: jpeg

Subscribers: eunue, spacegrapher, cedric, wonsik, jiin.moon

Differential Revision: https://phab.enlightenment.org/D3418
2015-12-11 14:05:12 +09:00
Mike Blumenkrantz cbb447c878 evas: trigger RENDER_FLUSH callbacks during async render
these callbacks are used, so ensure that they get called in the expected
order

@fix

 #PatchesFromCedric
2015-12-10 16:00:45 -05:00
Jean-Philippe Andre 4bcd2fa0f0 Revert "Evas: Refactor model's savers and loaders."
This reverts commit 01a32f64c0.

This broke make check with the following error:
evas_test_mesh.c:123:F:Meshes:evas_object_mesh_loader_saver:0: Failure 'res == 1' occurred

Reopen https://phab.enlightenment.org/D3420
2015-12-10 18:21:09 +09:00
perepelits.m 01a32f64c0 Evas: Refactor model's savers and loaders.
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)

I did it again because somehow test is passing now. It seems like this test suite is unstable.
Please, let me know if there are any errors after running distcheck.

Reviewers: cedric, raster, Hermet, stefan_schmidt

Subscribers: jpeg, artem.popov

Differential Revision: https://phab.enlightenment.org/D3420
2015-12-10 16:50:06 +09:00
Pankaj Mittal 1363cd757a evas_eet: Add Type Safety check
Summary:
The Function _evas_canvas3d_eet_file_free(void) is referenced in  evas_model_load_file_eet()(file:evas_model_load_eet.c at line 122).
This call is  under condition
        if ((eet_file->mesh == NULL) || (eet_file->header == NULL)).
when  either eet_file->mesh or eet_file->header are NULL, dereference of the corresponding pointer in function "_evas_canvas3d_eet_file_free()"
will generate Segmentation Fault.

@fix

Reviewers: raster, Hermet, tasn, wonsik, spacegrapher, cedric, jpeg

Subscribers: singh.amitesh, sachin.dev, alok25, yashu21985, mvsovani, cedric

Differential Revision: https://phab.enlightenment.org/D3369
2015-12-10 16:26:56 +09:00
Youngbok Shin 20ef85e307 Evas text: Fix Evas Text truncated text case.
Summary:
Evas Text only concerns about a advance of each text item.
When a width of last character is bigger than its advance, the last character can be truncated.
And the different line size calculation caused different aligning between Evas Text and Evas Textblock.
So, the width of last character will be considered in Evas Text just like Evas Textblock.
@fix

Test Plan:
The following text shows how the size calculation is different between Evas Textblock and Text.
Get native size from Evas Textblock and get width(geometry) of Evas Text.
You can see the width of Evas Text is bigger than native size of Evas Textblock.
(adv > width)
こんにちは。

The following text will be truncated without this patch.
(adv < width)
ନୂଁ

Reviewers: woohyun, tasn, herdsman

Subscribers: jpeg, cedric

Differential Revision: https://phab.enlightenment.org/D3004
2015-12-09 11:10:46 +02:00
Jean-Philippe Andre 31984449a5 Evas filters: Move 'fill' to its own file 2015-12-09 11:45:34 +09:00
Stefan Schmidt 96a9d75e0c Revert "evas: refactor model's savers and loaders."
This reverts commit 32c33ed64d.

This refactor broke the evas test cases for the model loaders and savers. I gave
it a week to get fixed but a first try did not succeed and its blocks a lot of
other automated testing. To be honest, it should have never gone it when it
breaks existing test cases. Once fixed this refactor can happily go in.

Fixes T2905
2015-12-08 22:33:05 +01:00
Daniel Hirt 7e8e392db6 Evas textblock: improve and fix line range rectangles
The line range rectangles geometries needed a bit of adjusting. I
started out with fixing T2648. In order to fill the gap between the end
of the line and the margins, the geometry of the last line's character
was used. I am not really sure why. Anyway, we have the line geometry,
so I replaced it with that.

Then, it led me to do some alignment checks, and indeed alignment cases
were not treated. For instance, an LTR paragraph could have a line
aligned with a value greater than 0.0. That means that we should fill
the gap from the left of the line, if it was the last line in a
multi-line selection. The inverse case is for RTL.

I think it now works as it should. Will see if the selection logic is
missing some more stuff once I come up with more example cases.

Fixes T2648.

@fix
2015-12-08 17:19:18 +02:00
Tom Hacohen 3896c03cff Evas render2: Fix always false comparisons.
This looks like a classic copy and paste error. It didn't make any sense
before, and it seems like no one was going to take a look at it.
This looks correct. If this breaks something (is render2 even used),
someone should remove those lines. I wasn't entirely sure if I should
just remove them, or correct them, as some of the code looked redundant
anyway.
2015-12-08 11:35:25 +00:00
Jean-Philippe Andre 15d5125d6e Evas filters: Remove unused variable 2015-12-08 14:57:51 +09:00
Jean-Philippe Andre d8b5e5da7b Evas: Remove unwanted file added by accident
From commit 82504d9d77
2015-12-08 14:54:21 +09:00
se.osadchy 82504d9d77 evas: recognize duplicated data structure with eina_quternion and ector.
Summary:
Move data structure and functionality to eina_quaternion from evas_vec4.

Reviewers: raster, Hermet, cedric

Subscribers: jpeg, Oleksander

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-12-07 16:36:16 -08:00
Chris Michael ef3ef643c2 evas: Fix definition of framespace in canvas eo file
The definition of 'framespace' in the canvas eo file is incorrect.
Framespace is the space occupied by the window frame within the canvas viewport

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-12-07 15:36:42 -05:00
Daniel Hirt 1d48dd90b2 Evas textblock: fix evas_textblock_cursor_line_set
The line_set function should set the cursor to the first logical
position in the line. We can't use the first text position of the
first item in the line, due to BiDi considerations (the line may be
reordered). I've split evas_textblock_cursor_line_char_first to avoid
code duplication, as it already handles these cases.

@fix
2015-12-07 18:21:00 +02:00
Vincent Torri 3b44645363 efl: add binary mode to f(re)open() calls
This allows better compatibility with Windows

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-12-05 21:04:36 +01:00
Youngbok Shin 76fa1159c5 Evas textblock: Skip layout logic for an text item which doesn't have font.
Summary:
Evas textblock could cause infinite loop if there is no fonts to use.
If there is no fonts, text_props.text_len is never set.
When text_props.text_len is 0, the for loop in _layout_par runs forever.
It is ridiculous to use Textblock without fonts. But, it shouldn't runs
infinite loop in any situation.

@fix

Test Plan:
1. Remove all of fonts in your EFL or Tizen device.
   (Or you can test it modifying some codes in Textblock by skipping load fonts.)
2. Run elementary_test -to entry3 or see any multiline textblocks.

Reviewers: tasn, herdsman, woohyun

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3402
2015-12-04 14:46:35 +00:00
Jean-Philippe Andre 8f4018b690 Evas filters: Implement mix3 func for rgba masking
This operation was faked by running a mul and a blend ops. Now
they are combined into one. A GL shader should also be able
to do this in a single pass.
2015-12-04 16:10:06 +09:00
Jean-Philippe Andre ecc7da9cba Evas filters: Use Efl.Gfx.Render_Op
Some filters are now broken. Yay for refactoring! Will be fixed
in the following commit.
2015-12-04 16:09:53 +09:00
Jean-Philippe Andre b5500a8644 Evas: Move alpha functions to static_libs/draw
This is a pretty simple code refactor, moving pixel handling
to the new draw lib.
2015-12-03 18:42:50 +09:00
Jean-Philippe Andre 615b2442b7 Ector: Move drawhelper to static_libs
Rename a few things:
 - draw helper -> efl_draw
 - Ector_Rop -> Efl.Gfx.Render_Op
 - ECTOR_ bla bla -> DRAW_ bla bla (base pixel ops)
 - ector_memfill -> draw_memset32 (and invert arg order to match memset)

The main rasterizer file is now draw.h in static_libs/draw
This is a non functional change, simple code refactor.
2015-12-03 18:42:50 +09:00
se.osadchy ce4146ec63 evas: fix bug with logic with eina_matrix in evas_3d_utils
Summary: Also need to fix logically dead code in coverity.

Reviewers: raster, Hermet, cedric

Subscribers: jpeg

Maniphest Tasks: T2832

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-12-02 14:15:01 -08:00
Cedric BAIL d577366acb evas: properly clean up all memory. 2015-12-02 12:31:59 -08:00
Daniel Hirt 59e9e2ddc8 Evas textblock: fix height on line wrapping
Line advance should finalize the line with its last item, and not the
item we're currently wrapping. This fixes T1583, where some line
wrapping cases would look different than their equivalent <ps>
versions.

@fix
2015-12-02 15:06:32 +02:00
Youngbok Shin 809d8fdafe Evas Textblock: Fix text disappear issue when text is made up with multiple items.
Summary:
Text is disappearing when we resize a singleline Evas Textblock with ellipsis.
It is happened by putting a Text item at logical_items list without considering about logical position.
It is only happended the text is made up with multiple items.
@fix

Test Plan:
1. Run elementary_test
2. Click Label Ellipsis
3. Resize the window dynamically and see the result.

Reviewers: woohyun, tasn, herdsman

Subscribers: jpeg, subodh6129, shilpasingh, cedric

Maniphest Tasks: T2709

Differential Revision: https://phab.enlightenment.org/D3022
2015-12-02 09:52:01 +02:00
perepelits.m 32c33ed64d evas: refactor model's savers and loaders.
Summary:
Move common part to a separated document.
Make code more readable using smaller functions. (from Task T2713)

Reviewers: cedric, raster, Hermet

Subscribers: artem.popov

Differential Revision: https://phab.enlightenment.org/D3373
2015-12-01 16:39:29 -08:00
Youngbok Shin 917fdbd597 evas: fix a NULL dereference issue in font.
Summary:
eina_list_remove returns Eina_List pointer.
It could be NULL if the last list item is removed.
And the returned Eina_List pointer could be different from the given list.
So, calling free for fdir->data after fdir's address is changed is dangerous.
@fix

Test Plan: Run expedite or test app with evas_font_path_append() API.

Reviewers: stefan_schmidt, jpeg

Reviewed By: jpeg

Subscribers: stefan, jiin.moon, cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-12-01 15:03:51 -08:00
Stefan Schmidt 3a11868201 evas_3d_utils: do not bitwise AND against 0 in condition
We need to check against the state here and if the compilers assignes 0 to the
first item in an enum we are screwed here as the bitwise AND will always
evaluate to false.

This is a re-incarnation from a486671bce
2015-11-30 17:36:24 +01:00
Stefan Schmidt 54abe37c44 evas_font_dir: do not passed free'd memory to eina_list_remove()
Free the actual memory after we removed it from the list.
2015-11-30 17:36:24 +01:00
Vincent Torri db8d1883d7 Evas: use LC_MESSAGES on Windows to fix compilation
Compilation is broken on Windows because LC_MESSAGES does not exist on this platform
Include Evil.h to provide support of LC_MESSAGES

@fix
2015-11-30 16:28:02 +00:00
Chris Michael 886c20a43b evas-3d: Fix missing field initializers
Clang spits warnings here about missing field initializers for
Evas_Vec3 (missing y and z fields), so we will explicitly initialize
them to 0 (matching the x field).

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-11-30 09:15:53 -05:00
Tom Hacohen 2c9a79e939 Revert "Evas: Temporarily hack OT_SUPPORT to fix textgrid"
Fixed in upstream, see T2865.

This reverts commit 8ccea8233c.
2015-11-27 12:34:15 +00:00
Stefan Schmidt 043cfaa33b evas_common3d: use void to force empty function parameters
We have to use void in a function declaration if we want no function
parameters. Using just empty parenthesis means the function takes an
unspecified number of parameters.

We had it correct for most declarations and this series fixes it for
the rest.
2015-11-26 17:25:36 +01:00
Youngbok Shin 507baf4891 evas: Add ExtraLight, ExtraBold for font weight.
Summary:
Evas supports UltraLight, UltraBold as font weight.
These terms have same weight value as ExtraLight, ExtraBold.
Some applications, for example, fontforge, use ExtraLight, ExtraBold terms for these weight values.
So, it would be better to support these terms, too.
@feature

Test Plan: None

Reviewers: tasn, woohyun, herdsman

Reviewed By: herdsman

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3126
2015-11-26 10:16:14 +02:00
Jean-Philippe Andre 8ccea8233c Evas: Temporarily hack OT_SUPPORT to fix textgrid
See T2865.
Since Harfbuzz 1.1.0, terminology displays fonts funnily aligned to
the top. This is apparently because until 1.0.6 the y_offset was
always 0 for all glyphs, but since 1.1.1 the offset is actually
set.

This is a TEMPORARY fix. There might be an underlying issue left
here.

Harfbuzz changed behaviour in this commit:

  commit 44f82750807475aa5b16099ccccd917d488df703
  Author: Behdad Esfahbod <behdad@behdad.org>
  Date:   Wed Nov 4 20:40:05 2015 -0800

      [ft] Remove font funcs that do nothing
2015-11-25 16:44:04 +09:00
Subhransu Mohanty 609f74994b efl: make path stroke related api as non virtual.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-24 15:42:29 -08:00
Daniel Hirt 40dfc4a45d Evas textblock: add support for hyphenation wrap style
We now support hyphenation in style. Use "wrap=hyphenation" to use this
wrap option. It will hyphenate based on explicit SOFT HYPHEN (&shy;)
placement in the text, and with the (optional) assistance of dictionaries
compatible with Hunspell's "hyphen" library.

This wrap mode favors breaking at hyphen positions in a word, over moving
the whole word to the next line. It will put an additional "-" at the
break position if it was hyphened.

Enabling the hyphen dictionaries is done by adding these configure
options:
  --enable-hyphen (requires Hunspell's "hyphen" library installed)
  --with-dictionaries-hyphen-dir=DIR (specifies the install location of
          the actual .dic dictionary files e.g. /usr/share/hyphen)

Note that dictionary files are expected to be in the form of "en_US.dic"
or anything that ends with it e.g. "hyph_en_US.dic" (this how they are
        named in Arch Linux).

@feature
2015-11-24 14:31:05 +02:00
Minwoo, Lee 3700be959b evas: Fix text effect which has shadow direction
Summary:
If text object has outline and shadow effect (OUTLINE_SHADOW or OUTLINE_SOFT_SHADOW), and has shadow direction except BOTTOM_RIGHT then outline is not displayed.
So fix logic of style checking.

OUTLINE_SOFT_SHADOW effect of text object is different with text block, so fix it.

Test Plan: Make text obect with OUTLINE_SHADOW or OUTLINE_SOFT_SHADOW effect with any direction except BOTTOM_RIGHT

Reviewers: cedric, woohyun, herdsman, tasn

Subscribers: id213sin

Differential Revision: https://phab.enlightenment.org/D3047
2015-11-23 20:53:29 +09:00
Oleksandr Shcherbina d871ff8d11 evas: remove useless part of code in evas_convex_hull_get function
Summary:
@fix
CID: 1339788

Reviewers: raster, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-23 08:20:26 +01:00
Oleksandr Shcherbina 3a56b3f013 evas: fix uninitialize variable in convex_hull_vertex_set function
Summary:
A bit of useless claim, becouse parameter coord always have value 0 or 1 or 2.
May be for escape problem in future.
@fix
CID: 1339781

Reviewers: raster, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-23 08:18:53 +01:00
Oleksandr Shcherbina 6866d256e8 evas: fix possible accsess to NULL pointer in Evas.Canvas3d.
Summary:
@fix
CID:1339784

Reviewers: raster, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-23 08:16:12 +01:00
Oleksandr Shcherbina 5d4f3b22c4 evas: fix unreachable code in _generate_unic_color_key function in Evas.Canvas3D.
Summary:
Have a sence. It is hard to assume that more that 16 million color will be used.
@fix
CID: 1339790

Reviewers: raster, cedric

Reviewed By: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-23 08:12:00 +01:00
Jean-Philippe Andre 58a1b2767e Evas render: Fix another map clip render issue
This time it's only about performance. We seem to be setting the
changed flag too often, which might trigger unnecessary redraws.

- map flag is set if there is currently a map AND it's not an image
  object (because images can map themselves)
- hmap flag is set if there was a map before

So, map != hmap does not imply a transition between a mapped and
non-mapped state. Add an extra check before marking the clip
as dirty and changed.
2015-11-20 14:23:29 +09:00
Cedric BAIL 412191e5f8 ector: improve uploading of GL texture for vector graphism
This rely on a faster code path to upload dynamic texture. Once we get support
for gbm, we should see significant performance improvement in speed, but this
first step is already a 5 times improvement (Ok, we get from really bad, to not
really useful...).
2015-11-19 14:52:10 +01:00
Youngbok Shin a9b4be11e1 Evas object: Add paragraph_direciton APIs
Summary:
It adds evas_object_paragraph_direction_set, get APIs.
The APIs set or get paragraph direction to/from the given object.
It changes BiDi calculations and affect the direction and aligning of text.
It doesn't have any effect to text without Fribidi library.

The default paragraph direction is EVAS_BIDI_DIRECTION_INHERIT.
If dir is EVAS_BIDI_DIRECTION_INHERIT, paragraph direction is changed
according to smart parent object. If there is no smart parent object,
paragraph direction works as EVAS_BIDI_DIRECTION_NEUTRAL.

@feature

Test Plan:
Test cases included to the following files.
- evas_test_textblock.c
- evas_test_text.c
- evas_test_object_smart.c

Run "make check".

Reviewers: woohyun, raster, herdsman, tasn

Subscribers: c, raster, cedric

Differential Revision: https://phab.enlightenment.org/D1690
2015-11-19 11:43:39 +00:00
Tom Hacohen 1e1e50ca06 Evas text: Fix last up to pos error return value.
This commit also simplifies the code a (tiny) bit.

This fixes the bug introduced in:
392df9479f
2015-11-18 10:56:48 +00:00
Tom Hacohen 3b7ff8ece4 Evas text: Remove useless FIXME. 2015-11-18 10:53:29 +00:00
Subodh Kumar 392df9479f Evas text: Fix memory leak
Summary:
Fix memory leak

Position is getting returned without
freeing the temporary logical item list.

@fix

Test Plan: NA

Reviewers: tasn, raster

Reviewed By: raster

Subscribers: raster, cedric

Differential Revision: https://phab.enlightenment.org/D3345
2015-11-18 10:52:34 +00:00
Daniel Hirt 4c086b6e1b Evas language: add full locale language getter
evas_common_language_from_locale_get truncates the country letters in
the language. We don't always want that (one example is dictionaries).
2015-11-17 16:20:21 +02:00
Tom Hacohen 8fcf9a0fe6 Evas language: Fix language from locale function.
This function was trying to infer from the LANG env var, though it should
have just queried the locale all along, as the language we want is the
system's text language, and not necessarily the LANG variable's value.

@fix.
2015-11-17 12:07:42 +00:00
Subodh Kumar f1cffd7709 Evas text: Remove fixme marker
Summary:
Remove fixme marker

Algorithm used is good enough to sort
very few number of items, usually 2 to 6
items.

Test Plan: NA

Reviewers: herdsman, cedric, tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3312
2015-11-17 11:24:39 +00:00
Subodh Kumar d14dc12d3b Evas text: Remove tabs for readability
Summary: Remove tabs

Test Plan: NA

Reviewers: tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3337
2015-11-17 11:23:44 +00:00
Stefan Schmidt d94120a156 evas polygon: use Eina_Bool for one-bit bitfield
Make sure we are using a unsigned var here. Best go with a Eina_Bool directly.
2015-11-13 13:31:34 +01:00
Minwoo, Lee c196422e63 evas textblock: fixed ascent/descent calculation
Summary:
If textblock has linegap and multi language, ascent/descent calculation is
incorrect.
In _layout_format_ascent_descent_adjust(), descent is accumulated.
(for example, for a line gap of 50, the first line gap is more than 100)

Test Plan:
Textblock has "linegap=50" and multi language (ex.
        "This is a test suite for line gap -
        ഈ ലൈൻ വിടവ് ടെസ്റ്റ് ടെസ്റ്റ് ടെസ്റ്റ് ടെസ്റ്റ് ഒരു പരീക്ഷണ വെയര് ")
Added test suite in evas_test_textblock.c file.

Reviewers: tasn

Subscribers: subodh6129, cedric

Differential Revision: https://phab.enlightenment.org/D3311
2015-11-13 12:27:59 +00:00
Tom Hacohen 592b786645 Evas text: Change bitfield bool types to Eina_Bool.
This is really just a safety measure, as we always just check if the value
is true. However, with char the potential values are -1 and 0, and with
Eina_Bool they are 1 and 0, so fixing that.

Thanks to the "sparse semantic parser" for detecting that, and to Stefan
for reporting.
2015-11-12 15:49:45 +00:00
Daniel Zaoui 10d5768ef7 Evas: import Evas types inside canvas Eo file 2015-11-11 15:40:56 +02:00
Joogab Yun 25bcf4c64f Evas: Fix bug in evas_cache_image_dirty()
Summary: Code which shouldn't be removed was removed by '800279c23bdb0e925f112c96516dcc96a5487684'

Reviewers: spacegrapher, cedric, jpeg

Reviewed By: jpeg

Subscribers: scholb.kim, dkdk, wonsik, cedric

Differential Revision: https://phab.enlightenment.org/D3278
2015-11-11 14:35:24 +09:00
Oleksandr Shcherbina 13b1756394 evas: add possibility to render current 3D scene to texture in Evas.Canvas3d
Summary:
Refactoring code of functions e3d_drawable_scene_render,
e3d_drawable_scene_render_to_texture,_shadowmap_render to have possibility
render in scene to additional texture
See T2761

Reviewers: Hermet, cedric

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-10 15:10:13 -08:00
se.osadchy 33809c969c evas: fix bug in evas_canvas3d_camera.
Summary: Change Eina_Quaternion to Evas_Vec4.

Reviewers: cedric, Hermet, raster

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-10 14:10:43 -08:00
Jean-Philippe Andre 7974f674aa Evas: Allow edje_decc to work with ETC images
This reuses the internal function data_get, data_put, image_save
respecting the border information and adding support for ETC
formats.

@fix
2015-11-10 16:12:21 +09:00
Jean-Philippe Andre 64de2f6ce5 Evas: Add some internal engine APIs
- image_file_colorspace_get
   This will be used to determine the best loading format, especially
   targeted at edje_cc / edje_decc so we can avoid ETC re-encoding.

- image_data_has
   Checks whether the image is currently loaded in (CPU) memory,
   and also returns the current colorspace.
2015-11-10 16:12:21 +09:00
Subodh Kumar 3f0d0daf0d evas: fix some indentation and formatting in textblock.
Summary: Fix some indentation and formatting.

Reviewers: herdsman, tasn

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 15:39:13 -08:00
Oleksandr Shcherbina 3af65dd4e2 evas: unification of color pick mechanism.
Summary:
Use same way using color pick under GLES and not:
 Use GL_RGBA texture insted of GL_RED
 Generate and pass to engine 3 components color of mesh
See T2761

Reviewers: cedric, Hermet

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 15:27:26 -08:00
Bogdan Devichev 8ab190daec evas: add common part of savers and loaders.
Summary:
Common part will make savers and loaders shorter and easier for understanding and refactoring.
https://phab.enlightenment.org/T2713 - due to this task.
Should be merged after https://phab.enlightenment.org/D3030

Should be merged to start adding refactored savers and loaders.

Reviewers: Hermet, raster, Oleksander, cedric

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 15:27:26 -08:00
Bogdan Devichev f416f5adde evas: move model save/load from common to common3d.
Summary:
Move model save/load to common3d.
Here also will be common algorithms  and structures which will be used in all loaders and savers.
See task https://phab.enlightenment.org/T2713.

Reviewers: cedric, Hermet, raster, Oleksander

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 15:27:26 -08:00
se.osadchy 3d77f55f91 evas: refactor duplicated data structure with eina_matrix.
Summary: Move data structure and functionality to eina_matrix from evas_mat.

Reviewers: raster, Hermet, cedric

Subscribers: Oleksander, cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 15:27:26 -08:00
perepelits.m 3031a4a5c6 evas: API for Convex Hull in Evas.Canvas3d
Summary: This API builds vertex and index data of convex hull around the given mesh.

Reviewers: raster, perepelits.m, Hermet, cedric

Reviewed By: cedric

Subscribers: cedric, artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-11-09 14:29:46 -08:00
Jean-Philippe Andre 16195d3100 doc: Deprecate filter reference page and link to the wiki 2015-11-09 16:21:45 +09:00
Carsten Haitzler 483cec924b evas - patch in one more if check for obj layer to avoid shutdown crash
this should fix T2715
2015-11-05 09:41:35 +09:00
Vitalii Vorobiov aefcb11444 Evas Text: avoid SIGSEV while ellipsis recalculation
Summary:
Fix Segmentation Fault when TEXT part getting resized and when it has
some params (for example ellipsis).

Fix T2640
@fix

Test Plan: Refer to T2640

Reviewers: raster, Hermet, seoz, herdsman, cedric, reutskiy.v.v, NikaWhite

Subscribers: stefan_schmidt, tasn, cedric

Maniphest Tasks: T2640

Differential Revision: https://phab.enlightenment.org/D2944
2015-11-04 13:58:59 +09:00
Jean-Philippe Andre 6e96d75c76 Evas: Remove dead code (cached surfaces)
While cached surfaces is a topic we're discussing recently,
this code is dead right now, and we will have to redesign the
buffer caching better to handle proxies, maps, smart objects, etc...
2015-11-02 16:22:19 +09:00
Jean-Philippe Andre b4fc15311c Evas render: Fix 'no_render' when object is proxy source
When the no_render flag was set on a proxy source, the object would
not be visible, but it would also not render inside the proxy surface,
which completely beats the purpose of this flag. This patch makes
the objects render inside a proxy surface.
2015-11-02 13:40:00 +09:00
Amitesh Singh 7ff30befd1 evas box: don't allow duplicate child append
Add check for duplicate child addition and return null.
2015-10-30 13:49:03 +05:30
Jean-Philippe Andre cc5cccc511 Eet: fix decoding of embedded ETC images
Typos, lack of NULL check, excessive sizeof(type) not matching
the object type, no border set, etc... This all lead to a crash
and then no render (with an error message and then without...).

This also simplifies the implicit loading of ETC1 as ETC2 when
supported by the driver.

@fix
2015-10-29 17:58:34 +09:00
Jean-Philippe Andre 8937fd4fc9 Evas render: Fix rendering of snapshot objects
I added a quick check that the clip was not 0x0 but forgot
to check that we actually use the clip info.

Fixes T2792
2015-10-23 16:30:37 +09:00
Srivardhan Hebbar be464e5843 evas: handling memory leak on realloc failure.
Summary: Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com>

Reviewers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-21 13:40:01 -07:00
Subodh Kumar 6bd863cf4f evas: fix memory leak.
Summary:
Fix memory leak

Delimiter string is being saved using
eina_stringshare_replace without any del or free
when object is deleted.

@fix

Test Plan: NA

Reviewers: cedric, tasn, herdsman

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-20 14:01:15 -07:00
Subodh Kumar 69c2b13474 evas textblock: fix memory leak
Summary:
Fix memory leak

Delimiter string is being saved using
eina_stringshare_replace without any del or free
when object is deleted.

@fix

Test Plan: N/A

Reviewers: tasn, herdsman

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-19 11:34:41 -07:00
Jee-Yong Um 49028c599a evas table: fix miscalcuation in cells with span and padding
Summary:
In evas table that homogeneous mode is turned off,
the size of items in cells, whose rowspan or colspan is larger than 1
and horizontal or vertical padding exists, are miscalculatd.

T2655

@fix

Test Plan: elementary_test "Table Padding"

Reviewers: Hermet, cedric

Subscribers: cedric, DaveMDS, Hermet

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-19 11:01:23 -07:00
perepelits.m 2d52eedf06 evas: fix memory leak
Summary:
Fix of memory leak in evas_3d_utils.c

@fix

Reviewers: raster, Hermet, cedric

Reviewed By: cedric

Subscribers: artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-19 11:00:25 -07:00
Carsten Haitzler 1a135fdfb1 evas - clean if check to be a single return point for clarity
if (a) return;
if (b) return;

->

if ((a) || (b)) return;
2015-10-17 11:19:06 +09:00
Carsten Haitzler a47d14e246 evas - add another layer->evas check in addition to layer
fixes T7215
2015-10-16 08:27:10 +09:00
Carsten Haitzler 0bca7af2e8 evas - was missing evlogs for the threaded rendering handling - fix 2015-10-15 19:29:40 +09:00
Amitesh Singh 8e87e56a7c evas: render - use evas_object_clipees_has instead of evas_object_clipees_get
evas_object_clipees_has is far cheaper than evas_object_clipees_get in case of checking if
clipees exist or not. This should improve the performance in case of large set of clipees.

@fix
2015-10-15 15:02:22 +05:30
Cedric BAIL 229106963a evas: no need to compute clippees list if we just want to know if there is any.
This is a partial fix for a terrible performance scenario where application take
forever to close with a large number of edje object.

@fix
2015-10-14 16:18:37 -07:00
Amitesh Singh 63634ccd30 evas filter: silent coverity on self assignment
This is a false alarm. Just to make coverity happy, use eo_do
instead of eo_do_ret

CID: 1316017
2015-10-14 21:08:20 +05:30
Chris Michael 3fb78e137b evas: Fix clang warning for missing field 'async' in default_state
Evas_Object_Filter_Data has a bool for 'async' at the end of the
struct. This field was missing from the initialization of
'default_state'

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-10-14 09:28:47 -04:00
Carsten Haitzler 620dc45af9 evas - obj destructrion - handle when obj layer is partly destroyed
this should fix T2715 and anything similar as during destruction
object internals are a bit weird.
2015-10-14 14:50:54 +09:00
Carsten Haitzler 094b781b7f evas - fix evlog to push and pop properly 2015-10-14 14:50:53 +09:00
Jean-Philippe Andre c22fa8a96a Evas: Some coverity fixes
This are false alarms. But the explicit null check doesn't hurt.
Also, Coverity doesn't like eo_do_ret. Neither do I. :)

- CID 1327246
- CID 1327245
2015-10-14 11:27:47 +09:00
Jean-Philippe Andre cfedba598c Evas render: Fix proxy source_clip with source images
In case the source is an Evas_Image, we skip proxy_subrender,
and so the clip was not set against the source clip.
2015-10-14 11:14:36 +09:00
Jean-Philippe Andre 7b266b5518 Evas render: Fix proxy source_clip logic inversion
As spotted by @FurryMyad I inverted the logic for source_clip.
This should restore the proper behaviour while keeping my previous
fixes working. See D2940.
2015-10-14 11:14:36 +09:00
Cedric BAIL 8a39069b64 evas: fix performance regression by reducing the unecessary memcpy we are doing.
Actually copying max is pretty useless and super slow. We usually have something
like 1024 slot in a context, but a very small amount of them are acutally active.
It would be better to actually do some kind of copy on write technique here, but
as Eina_Cow doesn't handle array and we are close to a release, let's be
conservative.
2015-10-13 12:10:34 -07:00
Jean-Philippe Andre dc397fabff Evas filters: Fix some build warnings
Thanks Tom for spotting one of those
2015-10-12 13:44:44 +09:00
Jean-Philippe Andre d271afd66c Evas filters: Fix some crash and reduce insanity
In a rare situation the filter would access an invalid buffer.

Solution: Stop messing with buffer references by properly
referencing and releasing them when not needed, rather
than stealing references and hoping for the best. (There were
flags tracking stolen references, but that was still madness)
2015-10-12 13:44:44 +09:00
Jean-Philippe Andre a8243ed382 Evas: Add engine function image_ref
This is to simplify and fix filters. This is an internal function.
2015-10-12 13:44:44 +09:00
Jean-Philippe Andre 62940b41f2 Evas filter: Fix proxies of filtered images
@fix
2015-10-12 13:40:20 +09:00
Jean-Philippe Andre 57afb0986b Evas render: Don't render deleted / invisible snapshots
Don't render them. They are not visible
2015-10-12 13:40:20 +09:00
Jean-Philippe Andre ff706b7e53 Evas render: Minor debug code improvements 2015-10-12 13:40:20 +09:00
Jean-Philippe Andre 512fb7f193 Evas snapshot: Fix proxies of snapshot objects
This was broken because the wrong image size was used
in the proxy's fast path (proxy of another image).
Why did snapshot use a specific surface_w,h instead of
reusing the usual cur->image.w,h? (@cedric)

Simplify code.
2015-10-12 13:40:20 +09:00
Oleksandr Shcherbina d61e8522e4 evas_canvas3d: fix mesh being added twice added to scene data
Summary: @fix

Reviewers: cedric, Hermet

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-09 10:00:32 +02:00
Jean-Philippe Andre 6e04d407cf Evas filters: Fix crash with async sw rendering
If the filtered object (text or image object) was deleted, its
output image (cached inside the filter data) would be freed
immediately. This could cause crashes in case of async rendering.

@fix
2015-10-07 18:11:32 +09:00
Jean-Philippe Andre b031bbee9b Evas textblock: Force relayout during proxy render
If the textblock object was not visible in the main canvas, but
still needs to be rendered in a proxy surface, then _relayout may
not have been called. This forces generation of paragraphs based on
the current geometry.

This patch is ugly. I know. This is evas render :)
2015-10-07 10:48:18 +09:00
Jean-Philippe Andre 2b47181f4e Evas render: Fix another bad proxy clipping issue
This is an ugly hack to fix an issue reported in D3114. I don't
understand how the proposed patch could even fix anything given
the current situation.

Test case:
 - Create edje object with textblock inside
 - Clip out edje object (--> all children become not visible)
 - Take textblock from edje and set it as source of a proxy
 - Mark proxy as source_clip

Result: Nothing visible.

Expected: Proxy should contain the textblock object, since
  source_clip means we ignore the edje object's clipper, and
  only care about the textblock's clipper (entire canvas).

Here's what was happening:
 - During a first pass, textblock is not visible, cur->cache.clip
   is calculated, marked as clip_use=1 with geom 0,0 0x0
 - In a second pass, the proxy is rendered, which needs to draw
   the textblock in a surface. But cache.clip was used and it was
   wrong.

Solution:
 - Ignore cache.clip when rendering inside a proxy. I'm pretty
   sure there are other instances where cache.clip will still
   be a problem.

Problem: textblock never called relayout since it was not
  visible.

Conclusion: cache.clip needs to die. It's a legacy optimization
  that now causes more issues than it fixes.
2015-10-07 10:48:18 +09:00
Dongyeon Kim c92e670143 Evas image: Fix wrong usage of engine data macro
ENDT macro should be passed to engine functions instead of
some other function pointer!
@fix
2015-10-06 14:55:20 +09:00
Carsten Haitzler 5801013ad4 evas - region updates - go back to tiler as its faster
the overhead didnt show up in y tests. do show up with certain
expedite tests. hmmm. last time i messed with region code it was
actually same speed as tiler. bonus was it was fully accurate.
2015-10-05 18:41:00 +09:00
Carsten Haitzler 8f69d5202a evas rectangle - ensure centers of rects that just move/resize dont rend
calculating updates has been re-rendering centers fo solid rects if
the solid rects moves/resizes with a lot of overlap and objects
underneath changes - their changes show through. this fixes that

@fix
2015-10-05 18:30:34 +09:00
Carsten Haitzler f169d7ed27 evas - cutouts - use less cpu by skipping non-intersecting cutout objs
@feature
2015-10-05 15:51:02 +09:00
perepelits.m 0dd60ced44 evas-3d: fix primitives
Summary:
There were warnings after adding primitive in the same frame more then once, the check was added to avoid it

@fix

Reviewers: cedric, raster, Hermet

Subscribers: cedric, artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-04 16:37:28 +02:00
Subodh Kumar 4290567fd6 evas_box: fix children size and position calculation when padding is used for horizontal flow layout
Summary:
Fix children size and position calculation when padding is used

For each child size calculation padding is adjusted
but box height should include  padding.
Secondly, x and y position of children should not  include
the vertical and horizonatal padding as child size has already
included the given paddings.

@fix

Test Plan:
Please modify test_box.c file in
function test_box_vert2 as follows:

   bx = elm_box_add(win);
   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   elm_win_resize_object_add(win, bx);
   elm_box_padding_set(bx, 50, 50);
   elm_box_layout_set(bx, evas_object_box_layout_flow_horizontal, NULL, NULL);
   evas_object_show(bx);

Now,
1. open elementary_test
2. box
3. Box vert 2 (observe box is broken)
4. Try resizing the window (observe)

Reviewers: raster, cedric

Reviewed By: cedric

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-10-04 16:22:49 +02:00
Carsten Haitzler 8a4ddea224 evas render - async sw - fix context duplication by using proper dup call
valgrind pointed this one out. we access freed memory when we dup a
context because the context CONTAINS ptrs to things like rects for
cutouts. we didnt dup these. use the proper context dup call (and
properly ref pixman color image too). this was a random bug/crash
waiting to happen and valgrind caught it. suprising it hasnt turned up
before :/

@fix
2015-10-04 16:58:42 +09:00
Jean-Philippe Andre b38f8a3f39 Evas GL: Fix render: force pixel_get if dirty
All examples and docs point to using only the dirty flag in
order to trigger a redraw of an Evas GL surface. The commit
21c4352823 broke this behaviour (for a good reason, but not
related to Evas GL).

This is a compatibility fix.
2015-10-02 17:11:35 +09:00
Jean-Philippe Andre 90b96b07d9 Evas GL: Add new API to get current Evas GL
While this seems to go against the rest of the API (because we
always pass in the Evas GL object), there is no way right now
fully restore a context if there are multiple Evas GL objects.

For instance, an app can use Evas GL from an Elm GLView, and also
use Cairo with another Evas GL at the same time. In that case Cairo
needs to restore the previous Evas GL but the library had no way
of getting the current Evas GL. This is the equivalent of
eglGetCurrentDisplay().

@feature
2015-10-02 16:56:38 +09:00
Jean-Philippe Andre 2317bb83fc Evas image: Simplify updates if adding whole region at once 2015-10-02 16:56:38 +09:00
Jean-Philippe Andre 52e4bbda7b Evas filters: Fix handling of FILL for image filters
Note: Image filters still need a LOT of work to be usable.
2015-10-01 20:10:54 +09:00
Amitesh Singh 83beb559e9 evas: fix typos in documentation 2015-09-29 09:14:28 +05:30
Tom Hacohen f080d40df7 Eo: rename EO_HOT_EVENT_DESCRIPTION to EO_EVENT_DESCRIPTION_HOT.
The old naming is inconsistent with the rest of the EFL. This fixes that.
Since we are already breaking ABI (and possibly API), we should fix this too.
2015-09-28 15:09:16 +01:00
Tom Hacohen 37f84b7e96 Eo: Drop doc field from ops and events.
This hasn't been used for a while. Since we are going to break Eo a bit anyway
it's a good opportunity to drop this.

This may cause a slight performance issues with legacy events, such as
smart callbacks. This shouldn't really be a problem as we've migrated away from
them. If it does, we need to migrate the remaining parts. Only relevant
for callbacks that are added before the classes are created, which
shouldn't be possible except for smart, only for old evas callbacks.
2015-09-28 15:09:16 +01:00
Carsten Haitzler 3894c3e1e0 evas - protect against invalid obj id in legacy wrapper func
@fix
2015-09-28 15:19:32 +09:00
Carsten Haitzler 15b9ac2d25 evas - lock render updates as this happesn to be accesed from threads 2015-09-28 02:58:54 +09:00
Carsten Haitzler 21c4352823 evas image object - dont update just if image is dirty
marking images as dirty is only meant to have the pixle get callback
called IF rendered. you ADD update regions to get it to be called.
this is how it has always meant to work, but evas image objects where
adding updates just if dirty. this ends up with e as a compositor
redrawing ENTIRE eindows if even a single blinking cursor is blinking.
oh so bad.

@fix
2015-09-25 14:31:28 +09:00
Carsten Haitzler 1b6e3f2611 fix coverity complaint (not real bug) - CID 1324882
coverity complained on the n <=- 0 return. it will never be <= 0 if
rects2 is non-null. this just should make coverity less noisy.
2015-09-25 11:17:54 +09:00
Mrunal Sovani 9ed199d709 Evas smart: Add obj type safety check to callback_del.
Summary:
Evas_Smart_Data retrieved from eo_data_scope_get might be NULL
in case the input Evas_Object is not valid Evas_Object.
The smart data gets dereferenced and can cause a crash if its NULL
Hence return in case smart data is NULL.

@fix

Signed-off-by: Mrunal Sovani <mrunal.s@samsung.com>

Reviewers: raster, Hermet, tasn

Reviewed By: tasn

Subscribers: singh.amitesh, cedric, sachin.dev

Differential Revision: https://phab.enlightenment.org/D3106
2015-09-24 14:59:01 +01:00
Carsten Haitzler 974e82c5e5 evas - make new exact regions round up to 16x16 to keep count sane
make region count sane by rounding to 16x16
2015-09-24 20:45:14 +09:00
Carsten Haitzler 217faeebe8 evas cutouts - optimize to use less cpu
this optimizes draw ctxt cutouts by skipping small ones and
remembering the last cutout added so it isn't double-added as well as
extending the minimum cutout array to 512 and going up in blocks of
512 instead of 128. also optimize the clipping code a bit more.
2015-09-24 14:09:20 +09:00
Carsten Haitzler 49adf8aa47 evas tiler update handler - move to region code to be accurate and fast
this move evas tiler that does update handling to use fully correct
regions using region.[xh]. this also removed old unused regionbuf code
and a bunch of commented out code no longer needed. much simpler now
and easier to maintain.
2015-09-24 14:09:09 +09:00
Carsten Haitzler 5df38e9d53 evas new region code - copy region size along with region math 2015-09-24 08:39:15 +09:00
Oleksandr Shcherbina 28d69200f9 evas_canvas3d: sets for shadow rendering
Summary:
Add possibility change quality and offsets for shadow.
Add mesh API's to sets size, step and bias constant.
Add scene API to sets depth values.

Reviewers: Hermet, cedric

Reviewed By: cedric

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-09-21 23:41:29 +02:00
perepelits.m 64a7b3d44f evas: remove unused variable in evas_tangent_space_get.
Summary:
Firstly it was the main point of in CID1323089 from Coverity, but this variable is unused. So I've deleted it.

CID1323089

Reviewers: raster, Hermet, cedric

Reviewed By: cedric

Subscribers: cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-09-21 23:20:02 +02:00
Subhransu Mohanty 291c3e32af evas: create ector surface per engine instance.
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-09-21 22:50:34 +02:00
Carsten Haitzler 31b07f94b7 evas - fix whitespace in code 2015-09-21 14:31:00 +09:00
Amitesh Singh 86993e172a fix typos in API doc 2015-09-19 09:24:58 +05:30
Jean-Philippe Andre 8fe237c088 evas_render: Fix invalid clip
Test case: elementary_test -to "Evas Map 3D"
The cube was clipped to its top-left corner.

What's really weird is that this code patch is for non-mapped
objects.
2015-09-15 18:29:01 +09:00
Carsten Haitzler 8291c9e33e evas - sw async render - move pixel upload/swap to a thread
@feature

this should unload mainloop some more and have pixel upload now in a
thread - same as rendering. this eeems to work where i see it so let's
put this in and see with further testing.
2015-09-15 18:26:35 +09:00
Carsten Haitzler 6da5d54f8e evas render2 - more work on fleshing it out a bit 2015-09-11 23:26:36 +09:00
ChunEon Park becf6869b9 map: don't update surface unencessarily.
smart object don't need to update map surface always
check the state more elaborately so minus one more surface drawing!
2015-09-10 21:31:41 +09:00
Carsten Haitzler 5b2baf173e efl - set thread names for internally created threads for debugging
@feature
2015-09-10 15:17:08 +09:00
Nak-Gyeong Kim 712db856a2 evas: fix memory leak in evas_object_image_render_pre.
Summary:
Eina_Rectangles are removed from pixel_updates list without eina_rectangle_free during render pre stage.

@fix

Test Plan: check memory leak.

Reviewers: cedric, jypark

Subscribers: jypark, cedric

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-09-09 01:08:49 +02:00
perepelits.m a7679b60ac evas: CID 1323091
Summary:
@fix CID 1323091 for Coverity

Reviewers: cedric, Hermet, raster

Subscribers: cedric, artem.popov

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2015-09-09 00:07:49 +02:00
Jean-Philippe Andre 00cf9e2fc5 Evas: Move REND_DBG to evas_render.c
Unlike what the comment claimed, it is not being used anywhere outside
this file.
2015-09-04 15:13:35 +09:00
Jean-Philippe Andre 3e640ab226 evas: Use malloc instead of calloc in context_dup
Since we call memcpy right after, no need for calloc
2015-09-04 15:02:48 +09:00
Jean-Philippe Andre ef0ec6bed3 evas_render: Fix some clipping issues inside proxy
Inside a proxy, clipping information might be wrong since the
source object may be at a different position than within
the proxy. If source_clip is not set, then we need to discard
all clips that are outside the proxy context.

So we just propagate the clip information inside the current
draw context, and even recurse from clipper to clipper to
find the final state of clipping.

Map and proxies and others (who said masks?) should definitely
rely more on the same model.

This code is not a mess. At all. You gotta love evas_render.
2015-09-04 11:11:58 +09:00
Jean-Philippe Andre 4ac9d2af54 evas_render: print out context clip with REND_DBG 2015-09-04 11:11:39 +09:00
Jean-Philippe Andre f654a3b300 evas_render: simplify masking and clipping in general
Use context_dup to inherit from previous contexts in a clean
manner. This removes the need for restoring the previous
clip information.

Plus, this commit removes lines of code so it must be good, right?
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre 3d003b52de evas_render: Cosmetic changes in evas_render_mapped
Use ENFN, ENDT macros to simplify code.
I believe it is more concise and readable like this.
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre 69cbbc2184 evas: Add internal context_dup function
This will simplify some code related to clipping and masking.
2015-09-04 11:11:39 +09:00
Jean-Philippe Andre bcbf7d14e6 evas_render: moar debug (REND_DBG) 2015-09-04 11:11:39 +09:00