Commit Graph

3133 Commits

Author SHA1 Message Date
Cedric BAIL 849a182018 evas: only call output function on initialized output. 2017-04-28 16:11:23 -07:00
Carsten Haitzler aa92cddb8b evas font code - build on older freetypes without new definitions
use the actual #35 as:

in freetype and it cant change without breaking abi...

@fix
2017-04-28 18:41:39 +09:00
Carsten Haitzler b2ca7a96dc thread fence code - move elsewhere in file to avoid conflicts 2017-04-28 18:41:39 +09:00
Derek Foreman 83adbadc89 evas: Add a function to block for render thread completion
This is needed by dmabuf engine fallback when it realizes it locally
allocated a buffer, has been rendering to it, but the compositor can't use
it.

So the engine copies its buffer contents into a new wl_shm buffer and
continues from there - however we need to make sure the async renderer
has finished first, so we don't copy a partial buffer.

This allows us to block for all previously submit actions in the render
queue to complete.
2017-04-26 13:47:46 -05:00
Stefan Schmidt 24d6d83cf8 evas_filter: initialize was_empty to false to have a defined state
It is used further below in an if clause but might not have been
initialized at that point.

CID: 1374276
2017-04-26 14:27:30 +02:00
Jaeun Choi afbe8ade6b evas: fix logic in evas_events.c
Summary:
when collecting the objects under a mouse pointer,
evas uses the geometry of an object to decide
whether the mouse pointer is inside the area of the object,
which is inappropriate for a mapped object.
so mapped objects don't receive mouse events when they should.
this patch fixes the issue.

Test Plan: A sample code will be added as comments

Reviewers: jpeg, raster

Subscribers: cedric, eunue

Differential Revision: https://phab.enlightenment.org/D4826
2017-04-26 18:42:49 +09:00
Cedric BAIL 7f5ec0c8ea evas: do not rely on Evas canvas for Evas Ector engine backend. 2017-04-25 16:16:30 -07:00
Jean-Philippe Andre ac121a628d evas: Fix crash in idle_flush
As reported by raster on the ML. The pointer passed to the
engines is not an engine output but an Efl_Canvas_Output.
2017-04-25 21:19:42 +09:00
Jean-Philippe Andre b25d464f9f evas render: Fix issue with map render
Test case:
  elementary_test -to "Gesture Layer"

Just move the pictures around (eg. to the bottom). They could
disappear entirely.

This is because the geometry used was based on the smart
object "bounding box" rather than the mapped output.

@fix
2017-04-25 14:37:00 +09:00
Cedric BAIL 55e1b3f205 evas: remove engine.data.output.
This is the first step toward handling multi output. This patch
remove engine.data.output from Evas structure and use an Eina_List
for it instead. It also start moving code around to fetch an output
or an engine context (which are the same at the moment, but will be
split in a later patch).
2017-04-24 15:10:48 -07:00
Cedric BAIL bc43eeba00 evas: start setting up output independently of the engine. 2017-04-24 15:10:48 -07:00
Cedric BAIL 76c6830b29 evas: evas_render actually need to access that structure. 2017-04-24 15:10:48 -07:00
Bryce Harrington 4b653b7a31 evas: Fix grammar of which vs. that
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4809
2017-04-24 08:28:31 -04:00
Bryce Harrington 9652703e7a evas: Fix grammar for which vs. that
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4808
2017-04-24 08:27:50 -04:00
Bryce Harrington a2e55b5c39 Fix spelling of 'alpha channel'
Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4817
2017-04-24 08:25:22 -04:00
Youngbok Shin caed13d3fc evas: round glyph's advance before adding it to pen_x
Summary:
Rounding the sum of glyph's advance could cause inconsistency of
each glyph's positions. When Evas enables Harfbuzz library,
Each glyph's position has to be handled by only nearby glyphs.
But, currently, totally unrelated glyph's advacne could change
other glyphs positions.

ex) 1. "connect."
    2. "Tap here to connect."

You can see different gap between "c" and "o" of word "connect".
It should be same even if there was a different text before the word "connect".
@fix

Test Plan: N/A

Reviewers: raster, herdsman, jpeg

Reviewed By: raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4782
2017-04-24 13:32:36 +03:00
Daniel Kolesa 3fb4bc336e eo: hide dbg_info from eo files
Continues b780cf2af2.
2017-04-21 17:59:32 +02:00
Ivan Furs 9d5a1d098c evas_async_events: Integrated Ecore_Pipe in evas_async_events
Summary: Integrated Ecore_Pipe in evas_async_events

Reviewers: vtorri, artem.popov, cedric, jpeg, raster, #eflete

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4622
2017-04-21 16:14:06 +09:00
Daniel Kolesa b780cf2af2 eo: move unbindable event APIs to C
In a few classes, this requires some manual expansion. This should
not break anything but it's also fairly ugly; a better solution
would be appreciated, for now we do this.

Similar changes will be done to a few other Efl.Object APIs as
well at later point.
2017-04-20 18:24:38 +02:00
Bryce Harrington 288e60dee2 evas: fix several incorrect words
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:20 -07:00
Bryce Harrington 4768b38e6c evas: fix spelling for "ptimitive"
Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-04-19 10:49:20 -07:00
Jeeyong Um 7ba0707851 Evas.Table: Apply mirrored correctly when align is set
Summary:
When table items are left aligned and mirrored is set, items should be placed
from the right side, but align is not changed. (still left-aligned)

@fix

Test Plan: make and run attached example

Reviewers: cedric, jpeg

Subscribers: thiepha, woohyun

Differential Revision: https://phab.enlightenment.org/D4758
2017-04-19 16:47:39 +09:00
Cedric BAIL a2094567c9 evas: use new API eina_file_close_on_exec. 2017-04-18 16:55:03 -07:00
Carsten Haitzler 4a4b0d8794 evas key lock state set - remove dead code
l is checked for NULL twice. this removes the pointless second check.
@fix
2017-04-18 17:30:50 +09:00
Carsten Haitzler 4e282c79bd evas key modifier state set - remove dead code
m is checked for NULL twice. this removes the pointless second check.
@fix
2017-04-18 17:30:50 +09:00
Carsten Haitzler 55ad786873 evas - table - remove logically dead code
this is right - it is dead code. this fixes CID 1372487

@fix
2017-04-18 17:30:50 +09:00
Jean-Philippe Andre e79f27ae0c efl: Remove manual definitions of event "changed"
Honestly I can't see why gfx & gfx.path "changed" need a manual
definition, instead of relying on EO. If the API needs to be
internal only, then EO needs to handle internal APIs. In this
case, the event was exposed as a C API but not a EO... why?
2017-04-18 11:07:46 +09:00
Derek Foreman fddbf75fc9 Fix sed error that changed "video" to "videfl"
commit c662934be8 seems to have accidentally
renamed a few instances of _video_ to _videfl_, this hopefully changes
them all back.
2017-04-17 17:06:28 -05:00
Jean-Philippe Andre 03b0e23137 evas filters: Fix rare crash with async render
Reported by bu5hm4n

@fix (backport will look slightly different)
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 3c92b32c13 evas filters: Fix async RW rendering
This fixes a crash (when deleting the output image), and rearranges
the code a bit.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 30ac315631 evas filters: Cleanup unused buffers
This might not be used as over two consecutive runs all the
same buffers should be used. But it could happen if some
parameters in the filter change (eg. blur radius).

Fixes major (GPU) memory leaks. Reuse mode is still leaking.
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 01a4ecd92c evas filters: Adjust downscale coordinates to avoid artifacts
This avoids sampling artifacts when moving or resizing a
snapshot object over a region with sharp content (eg. text).
2017-04-14 13:57:04 +09:00
Jean-Philippe Andre 5467d1eb3e evas filters: Fix artifacts when scaling up & down
An odd-sized image scaled down by 2 was losing 1 pixel during the
downscale, and it was not restored after scaling up. The same
happened with downscaling by 4 except the effect was even more
visible.

This meant that a moving snapshot with a large blur would trigger
some really ugly sampling issues if the content below was precise
(such a text).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 4cbff5f0ea evas filters: Fix maps with filtered snapshots
Another wonder of evas render... maps, clips, snapshots, filters...
This fixes animations with windows that have a snapshot decoration.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b5a5f61cd6 evas filters: Prevent redraws when obscure changed
If the obscured area in a snapshot object changes a lot, do
not try to keep track of it forever. Instead, redraw the filter
over the entire object region, without obscure.

This fixes a performance issue when an opaque window is moved
above a fixed transparent window (the latter has a snapshot with
blur filter).
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre fc92a1c0f6 evas filters: Enable down scaling with GL blur
This dramatically improves the performance and now seems
to give acceptable results. Eventually we need a quality flag
in order to enable this or not. Alternatively, "gaussian" blur
mode would skip this optimization, while "default" would trigger
it.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 293438111c evas filters: Avoid creating input buffer for images
When the filtered object is an image, without borders, map,
fill info or anything of this sort, then the filter input
buffer is really just a copy of the original image. We can
skip that to save on memory usage and pixel fetches.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 08a8072571 evas: Fix cutout handling for snapshot objects
This improves over the previous code for handling
snapshot objects and cutouts. Basically any opaque object
above a snapshot should be obscuring it. That is true
unless a crazy filter is applied, or the snapshot object
is itself the source of a map or proxy.

This also uses eina_tiler instead of a custom (and really
bad) algorithm to compute the obscure regions.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre c53f1526f1 evas: Make save() work on snapshots
This make save() work on snapshot objects, provided the call
is done from inside render_post.

Also, this saves the filtered output of an image, rather than
its source pixels. Any call to save() on a filtered image must
be done from post-render as well.

Fixes T2102

@feature
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 06a7beec52 evas filters: Switch to uniforms in GL blur
This was a poor attempt at improving the performance but
obviously the root cause isn't fixed (too many texel fetches).

Uniform should (theoretically) work better than an attribute
the for loop. Just a guess here.

This also makes GL blur use a float value as radius, allowing
future extension to non-integer blur radii, as well as using
linear scaling as a fast blur approximation.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 408115cef6 evas image: Factorize some code for render
This factorizes some of the common code for image render
and resolving is_inside (verifying alpha value of a pixel).
This should also be used by save(), as well as buffer_map().

This patch introduces lots of whitespace changes by using return
instead of long if() {} or else {} blocks.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 530399acde evas filters: Force redraw of snapshot if cutout shrank
The situation is clearly visible in the Snapshot test case:
increase the radius and a red glow would appear. This is because
the snapshot object was not marked as needing redraw and so had
no pixels under the opaque rectangle.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre a8b6c1cd7f evas filters: Move private data out of evas headers
This moves the filter internal data back to the filters
implementation, rather than inside evas common headers.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b6c5af5edc evas: Fix excessive redraws of snapshot objects 2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 1bf24f8762 evas filters: Refactor to support reuse of buffers
This will reuse existing buffers by resetting only the minimum
required in the filter context (also reused). Work in progress,
as the actual reuse is disabled for now.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre 9aa335cecc evas filters: Remove warning about OpenGL
Well... I'm working on making all this work, so the log
is a bit irrelevant now.
2017-04-14 11:26:44 +09:00
Jean-Philippe Andre b77cb960ca evas filters: Avoid unnecessary draw
This avoids creating one more FBO and doing one more draw,
by rendering the image input data directly into the input
buffer. This also makes the code common between SW and GL.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre 6af3c20aeb evas filters: Pass gaussian values to GL blur shader 2017-04-14 11:26:43 +09:00
Jean-Philippe Andre a9ddeeb4fb evas filters: Use GL downscaling for blur
This will improve the performance a lot. Now remains to figure
out the best values for downscaling and improve the actual blur
shader as well.
2017-04-14 11:26:43 +09:00
Jean-Philippe Andre d56f9afa40 evas filters: Recompile filter after data_set 2017-04-14 11:26:43 +09:00