evas image: fix non-rendered preload image. 38/191738/2
authorHermet Park <hermetpark@gmail.com>
Tue, 23 Oct 2018 05:49:46 +0000 (14:49 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 23 Oct 2018 06:10:49 +0000 (06:10 +0000)
commit3d9098ffc855dc474251ffbf58c4f9e7189c3b23
treeb010cfac10721a76a9e31cf0f17e896e5e6f2fd7
parented42dbe88e2bcdaafae0ab066ae6a37aeccfc3fa
evas image: fix non-rendered preload image.

Summary:
This is one more corner-case issue that I found,
When second image doesn't use preload (but still share the resource)
canvas engine triggers cancellation for first image preload function.

Unluckly, preload thread is cancelled on the intermediate rendering,
First image is not going to rendered, even image turn it changed states.
Because end of that frame, canvas reset/flushed all active objects.

Here changes to retain the changes status to redraw it in the next frame.

Test Plan:
img1 = image_add;
image_file_set(img1, "test.jpg");
image_preload(img1, true);
show(img);

img2 = image_add;
image_file_set(img2, "test.jpg");  //same resource
image_preload(img2, false);
show(img2);

img1 is invisible.

Reviewers: #committers

Subscribers: cedric, #reviewers, #committers

Tags: #efl

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

Change-Id: I3bdaee67d55424dc6385faa355d295f0c444e25a
src/lib/evas/canvas/evas_object_image.c
src/lib/evas/canvas/evas_object_inform.c
src/lib/evas/canvas/evas_render.c