Commit Graph

109 Commits

Author SHA1 Message Date
Daniel Juyung Seo 4b457c5f2d evas_render: avoid unnecessary assignment. 2014-01-28 01:54:49 +09:00
Jean-Philippe Andre 981bdc16f6 Evas: Fix proxy rendering for animated objects
An invalid optimization was implemented in proxy rendering.
We can't assume a proxy is a smart object.

Refer to 5cefa00d0a.

Fixes T832.

Proxy rendering is still broken when using cserve2... :(
2014-01-22 17:02:27 +09:00
ChunEon Park a76e751eb4 evas - fixed side effect caused by f4d24e962d
since the map_changed is reset right after the map is updated,
it could not decide to redraw the map surface properly.

now map_update() returns the value to redraw the map surface properly.
2014-01-06 13:54:58 +09:00
Carsten Haitzler cb841b56af evas render2 - more work on basics 2013-12-20 19:45:44 +09:00
Viacheslav Lvov 067cbf6df8 evas - render - clear out pending object array more aggressively
There was detected that pending_objects array of Evas structure of
email application stores at least 550 objects that never are removed
from this array. These objects are not active and are not about to render.
We know that once the decision not to remove changed objects from this
array was accepted. But then the criterion of leaving object in this
array was weakened.
We propose to weaken this criterion more sufficiently – do not store
in this array objects that can not be cause of whole canvas
invalidation. Our exact proposal for this criterion you can see in the
patch attached to this issue.

NOTE: This patch is a try, there may be some side effect especially with
mapped object that we didn't find, so it could be reverted if before the
release of 1.9 we see anything wrong.

Reviewers: cedric

CC: cedric, seoz

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

Signed-off-by: Cedric BAIL <cedric.bail@samsung.com>
2013-12-20 14:43:23 +09:00
Carsten Haitzler eed4526003 first steps to rewriting evas render... a long path. 2013-12-19 22:49:43 +09:00
ChunEon Park 3c58b3ebeb Revert "evas/render - make sure render pre in proxy rendering."
This reverts commit b113f555e0.

found side effect... revert this code until fix them.
2013-12-08 03:14:14 +09:00
ChunEon Park b113f555e0 evas/render - make sure render pre in proxy rendering.
if the some of children are the mapped object in source object tree as well as the the mappped object is invisible,
then they wont be render_pre() called.

this make sure those render_pre() in proxy rendering.
2013-12-08 02:40:35 +09:00
Cedric Bail f90803aa2f evas: bugfix in evas_render of not maintaining changed flags on object correctly.
This bug is particularly visible in EFM video preview ( T 539 ). The problem is
that the logic for changed has evolved over time. At the beginning Evas canvas
was flat and could be handle in an array. It was then not using the changed flag
that much. This day, we are living with a tree and we need to propagate the
changed flag to the parent, so that when we walk them we only need to walk the
active objects and don't spend our time on branch that are completely static.

Sadly things did collide here. We remove all object that have been rendered
from the pending_objects array. That does include any smart object that was
processed even if one of the child was not. Once any of the child of that not
processed object is marked changed, it will be propagated up to the first
parent that is changed. As the parent of that one are marked as not changed
when evas_render walk the tree, he is blocked really early in the process and
never get a chance to detect that the child of a not changed object did change
and tada !

The fix is to add all the parent of all the object that are in the pending_objects
array back into the pending_objects list. So they will always be marked as changed.
Another alternative to this logic would have been to change pending_change to
filter out those and keep them around. I choose the first solution as I think it
will be more robust to catch all the parent in all case.
2013-12-03 16:43:58 +09:00
Carsten Haitzler 2512eaf157 evas event freezing is "wrong" for core events - turn it off
this turns off event freezing for SOME event types for eveas canvas
events (was was intended to begin with). this fixes T577
2013-12-01 13:26:04 +09:00
Daniel Juyung Seo 2ebd985b31 evas evas_render: removed unnecessary semicolon from a macro.
This fixes coverity CID 1132631.
2013-11-27 02:02:41 +09:00
ChunEon Park 58dfb4824f evas - stop over redraw of map content with smart object.
clip object would always stay in a changed state. nobody was walking them to reset.
Now we do reset there state as soon as we do render them.
2013-11-26 13:05:05 +09:00
ChunEon Park 39599d1a26 evas - code refactoring.
merge duplicated(almost) functions to one.
2013-11-25 16:06:03 +09:00
ChunEon Park 59cb177b4b evas - fix proxy render to update the proxies recursively.
If a proxy has proxies, all the chained proxies should be updated recursively.
2013-11-25 10:09:34 +09:00
ChunEon Park 5cefa00d0a evas/render - optimize proxy rendering.
redraw proxy if the source is smart object and it's changed visually.
2013-11-18 16:12:30 +09:00
Carsten Haitzler c4f54e23e6 fix framespace handling in evas _render to not cause in/out events...
but this is not finished. this needs proper fixing. this is a quick
patch for just the worst. the real solution is discussed here:

https://phab.enlightenment.org/T457
2013-11-02 13:50:13 +09:00
ChunEon Park 69077d19d7 evas/proxy - decide the proxy updation in the main render process.
because the proxy updation is decided in the proxy rendering time,

it couldn't be updated at the time if the source is changed before.
2013-10-31 17:04:23 +09:00
Jean-Philippe Andre d76e869a59 evas/cserve2: Fallback to normal cache for mmap
cserve2 can't handle virtual files (mmap-only), by design.
Proper support can be added later on, but for now we might want
to just fallback to the normal cache functions.

Fixes photocam test
2013-10-28 15:47:15 +09:00
Ulisses Furquim 3d3f33f310 evas: change sync all canvases function name.
Change evas_render_sync() to evas_all_sync() to better describe what it does
and avoid confusions with evas_render() and friends.
2013-10-18 14:43:08 -03:00
Rafael Antognolli 9506fd5db7 evas/image: Add video surface caps.
Wayland subsurfaces can be used as video surfaces too, similarly to
Ecore_X windows. However, they support a different set of features. Some
of them, like subsurface clipping and scaling, might be added in the
future, but so far we must work with what we have.

This commit allows to set an enum bitfield to the Video_Surface, with
the default value being one that will keep the same behavior as before,
for Ecore_X window. Thus, backward compatibility should not be broken.

It's possible to inform Evas that the surface in question is not able to
resize or scale, or that it's above or below the original canvas
surface. This allows Evas to show the surface itself, or use a buffer of
pixels instead, when the capabilities are not available.
2013-10-04 18:28:51 -03:00
Rafael Antognolli d1c6266c45 evas/image: Delay some video overlay operations.
If we are running on async render, some operations must be delayed, so
they will happen at the same time that the canvas rendering result gets
updated on the window/surface.
2013-10-04 18:26:57 -03:00
Mike Blumenkrantz 21daab2c62 evas render bug--
objects that were visible and marked as "render del" rects during render are now detected when they magically change visibility during the same render loop, fixing a very hard to reproduce E19 corner case related to fullscreen client rendering with nocomp disabled

<raster> for now all i can say is "put the patch in and lets see if things break"
2013-09-24 11:34:21 +01:00
Chris Michael d673cbc398 Readd the master clip for rendering of wayland engines.
NB: Master clip is needed so that things don't draw outside the client
area.

NB: This is a partial fix. Still a work in progress. Some remaining
issues with some various elm_tests that use evas_map.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-09-11 14:10:27 +01:00
Carsten Haitzler 3f94953509 evas - fix render op reset when drawing map objs :) 2013-09-05 20:31:17 +09:00
Carsten Haitzler 441f10e3ab evas - in dump also ensure an idle flush logic and proxy surface dump happens 2013-09-04 11:42:08 +09:00
Ulisses Furquim 0af10ae93f evas/render: improve evas_render_sync()
Tracking only the async rendering canvases and just waiting for the last one
to finish rendering. This should be enough to sync all canvases since the
render thread orderly executes the commands.
2013-09-03 01:52:38 -03:00
Cedric Bail 9ac13e4aec Revert "evas/render - this is insane to me since nowhere it release the render_pre_done FALSE pairly."
This reverts commit fd7d1f9f98.

This commit is the one breaking Evas_Map use in shelf. Let's investigate why it was disable
in the first place.
2013-09-03 12:39:49 +09:00
Ulisses Furquim 0c83dd806a evas/render: sync all canvases in _render_dump() 2013-09-02 20:03:23 -03:00
Ulisses Furquim 063f076aed evas/async_render: remove block/unblock of render thread.
This reverts commit 42a46214c4.
2013-09-02 20:01:37 -03:00
Ulisses Furquim 31b1cc6e3e evas/render: introduce evas_render_sync().
evas_render_sync() will loop through all canvases and wait for their
rendering to finish. Since this function will execute from the main
thread that will sync all of them.
2013-09-02 19:41:32 -03:00
Carsten Haitzler 08e430b18a move render wait before the block to avoid deadlock. 2013-08-30 09:09:08 +09:00
Carsten Haitzler 42a46214c4 other async render issue - sync ALL rendering canvases, not just one 2013-08-29 21:18:04 +09:00
Carsten Haitzler 175335ae08 evas - restore ability for evas_render_dump() to dump out referenced data 2013-08-28 16:44:31 +09:00
Chris Michael eff087a4b3 Fix redraw rectangle when framespace changes to not be Outside viewport.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-23 08:39:03 +01:00
Chris Michael 865531a9e1 Fix compiler warning about missing braces.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-08-19 08:35:34 +01:00
Mike Blumenkrantz c31061b642 evas render debug now prints object names if they exist 2013-08-19 05:20:57 +01:00
ChunEon Park 75ccce5706 evas - removed redundant code.
This check is not necessary but causes incorrect clipping issues.

At this moment, if primitive objects (except image) is the source then that code may be helpful but it doesn't guarantee same behavior for all the primitive objects.

So, right now removed it.
2013-08-18 16:26:11 +09:00
Cedric Bail f302c0e0ac evas: fix build with debugging rendering trace. 2013-08-06 15:45:07 +09:00
ChunEon Park e2c395f049 evas/proxy - render the children of the proxy's source object when ther visibility is true.
This is not the perfect solution at this moment. This doesn't consider the cached clipper's visibility at all.
But at least this would be better than exist works. Should be improved.
2013-07-28 20:24:46 +09:00
Cedric Bail 48b40640b5 evas: no need to call eo_data_scope_get in many case after this change.
Reduce CPU usage by 5% in some case (especially when the CPU is not the
limiting factor like with the GL backend).
2013-07-09 09:48:09 +09:00
ChunEon Park 64f984bd1a evas/render - draw the map in case that the source clip is invalid. 2013-07-05 12:53:09 +09:00
ChunEon Park 307e2f823d evas/render - support proxy source clip for the mapped object. 2013-07-05 11:14:47 +09:00
ChunEon Park 04f87ab237 evas/render - refactoring. split off a bunch of internal logic to a seprate function. 2013-07-05 11:09:03 +09:00
ChunEon Park 5f4ae9abeb evas/render - refactoring about checking smart member changed.
move those code to the evas_object_smart.
2013-07-02 15:28:56 +09:00
ChunEon Park 44568ef01d efl/evas - removed duplicated lines and apply clipping only when clip values are available. 2013-06-25 21:56:28 +09:00
ChunEon Park ede5390258 efl/evas - +null check 2013-06-25 21:53:05 +09:00
Sebastian Dransfeld 336f6ec328 efl: formatting 2013-06-20 13:28:18 +02:00
Sebastian Dransfeld 51023d2d4f evas: Keep sane name for public header
Evas_Common.h should be used for the public header, and rather rename
evas_common.h internal header to another name.

Sa:
Evas_Common_Header.h -> Evas_Common.h
evas_common.h -> evas_common_private.h

Shouldn't have both Evas_Common.h and evas_common.h because of case
insensitive filesystems.
2013-06-20 12:53:29 +02:00
ChunEon Park 11b43dad4b evas - fixed source clip. If the source object is a evas primitive object, then proxy won't clipped by proxy clipper itself. 2013-05-31 20:29:18 +09:00
ChunEon Park fd7d1f9f98 evas/render - this is insane to me since nowhere it release the render_pre_done FALSE pairly.
This causes the textblock layouting problem.

It should be checked when does it really render_pre() called.

If someone knows the reason of this, please ping me.
2013-05-30 14:50:47 +09:00