efl/src/lib/evas/canvas
Hermet Park 423d8a2296 evas image: fix a bug in image preloading.
Summary:
Current preloading is too buggy since it's on thread-based.
This is a fundamental improvement to fix a bug.

The critical issue here is,
When preloading img object suddenly cancel its preloading,
the object possibly cannot render image next then because
renderer doesn't have any idea when async cancelling is
finished. Renderer just tries to render regardless of
image loading status, and this could occur no-texture(in gl case)
image object.

So, here improvement is, adding a notification for async cancelled
so that putting img objects to redraw images properly after their preloading is
cancelled.

The best scenario to reproduce this bug is this one.

Evas_Object *img2 = evas_object_image_filled_add(evas);
evas_object_image_file_set(img2, "test.jpg", NULL);
evas_object_image_preload(img2, EINA_FALSE);
evas_object_resize(img2, 200, 200);
evas_object_show(img2);

Evas_Object *img = evas_object_image_filled_add(evas);
evas_object_image_file_set(img, "test.jpg", NULL);
evas_object_image_preload(img, EINA_FALSE);
evas_object_move(img, 200, 200);
evas_object_resize(img, 200, 200);
evas_object_show(img);

evas_object_image_preload(img2, EINA_TRUE);
If you run this on gl backend, occasionally happens rendering fail.

Yet there other bugs on preloading feature....

@fix

Reviewers: #committers, raster

Subscribers: cedric, #reviewers, #committers, zmike

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6919
2018-09-03 17:12:55 +09:00
..
efl_canvas_animation.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation.eo efl: rename Efl.Canvas.Animation.* -> Efl.Canvas.Animation_* 2018-05-23 17:33:46 +02:00
efl_canvas_animation_alpha.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_alpha.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_alpha_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_group.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_group.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_group_parallel.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_group_parallel.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_group_parallel_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_group_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_group_sequential.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_group_sequential.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_group_sequential_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_player.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_player.eo efl: rename Efl.Canvas.Animation.* -> Efl.Canvas.Animation_* 2018-05-23 17:33:46 +02:00
efl_canvas_animation_player_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_rotate.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_animation_rotate.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_rotate_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_scale.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_canvas_animation_scale.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_scale_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_translate.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_canvas_animation_translate.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_animation_translate_private.h Efl.Animator: rename to Efl.Canvas.Animator 2018-02-21 14:06:43 -05:00
efl_canvas_animation_types.eot efl: rename Efl.Canvas.Animation.* -> Efl.Canvas.Animation_* 2018-05-23 17:33:46 +02:00
efl_canvas_event_grabber.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
efl_canvas_event_grabber.eo Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_canvas_filter_internal.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_canvas_group.eo Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_canvas_image.c evas image: fix a bug in image preloading. 2018-09-03 17:12:55 +09:00
efl_canvas_image.eo Efl.Gfx.Image* (From Efl.Image*) 2018-04-24 09:03:40 -07:00
efl_canvas_image_internal.eo Efl.Gfx.Image* (From Efl.Image*) 2018-04-24 09:03:40 -07:00
efl_canvas_object.eo docs: Fix typos in API reference doc and comments. 2018-08-31 17:45:31 +09:00
efl_canvas_polygon.eo
efl_canvas_proxy.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_proxy.eo Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal) 2018-04-24 09:03:27 -07:00
efl_canvas_rectangle.eo
efl_canvas_scene3d.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_scene3d.eo Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal) 2018-04-24 09:03:27 -07:00
efl_canvas_snapshot.c
efl_canvas_snapshot.eo Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal) 2018-04-24 09:03:27 -07:00
efl_canvas_surface.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_surface.eo Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal) 2018-04-24 09:03:27 -07:00
efl_canvas_surface.h
efl_canvas_surface_tbm.c
efl_canvas_surface_tbm.eo Efl.Canvas.Surface_* (from Efl.Canvas.Surface.*) 2018-04-24 09:03:29 -07:00
efl_canvas_surface_wayland.c
efl_canvas_surface_wayland.eo Efl.Canvas.Surface_* (from Efl.Canvas.Surface.*) 2018-04-24 09:03:29 -07:00
efl_canvas_surface_x11.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
efl_canvas_surface_x11.eo Efl.Canvas.Surface_* (from Efl.Canvas.Surface.*) 2018-04-24 09:03:29 -07:00
efl_canvas_text.eo evas textblock: add/apply cursor cluster APIs based on grapheme cluster 2018-08-20 10:29:32 -04:00
efl_canvas_text_factory.eo Efl.Canvas.Text_* (from Efl.Canvas.Text.*) 2018-04-24 09:03:29 -07:00
efl_canvas_vg_container.eo Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
efl_canvas_vg_gradient.eo Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
efl_canvas_vg_gradient_linear.eo Efl.Gfx.Gradient_* (from Efl.Gfx.Gradient.*) 2018-04-24 09:03:34 -07:00
efl_canvas_vg_gradient_radial.eo Efl.Gfx.Gradient_* (from Efl.Gfx.Gradient.*) 2018-04-24 09:03:34 -07:00
efl_canvas_vg_node.eo Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_canvas_vg_object.c efl: vector is no more beta version. 2018-08-31 12:16:24 +09:00
efl_canvas_vg_object.eo Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
efl_canvas_vg_shape.eo Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
efl_gfx_map.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_gfx_map.eo Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
efl_input_event.c efl_input: fix problem that ref count does not become 0. 2018-08-27 09:43:50 +02:00
efl_input_event.eo interface: rename Efl.Dup to Efl.Duplicate. 2017-12-11 15:25:31 +09:00
efl_input_focus.c evas: refactor efl_input_event and remove some of the lifecycle hack. 2018-05-24 16:02:18 -07:00
efl_input_focus.eo interface: rename Efl.Dup to Efl.Duplicate. 2017-12-11 15:25:31 +09:00
efl_input_hold.c evas: refactor efl_input_event and remove some of the lifecycle hack. 2018-05-24 16:02:18 -07:00
efl_input_hold.eo evas: refactor efl_input_event and remove some of the lifecycle hack. 2018-05-24 16:02:18 -07:00
efl_input_interface.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
efl_input_key.c evas: refactor efl_input_event and remove some of the lifecycle hack. 2018-05-24 16:02:18 -07:00
efl_input_key.eo eolian: deferred parsing of inherits + better static checks 2018-01-30 17:08:44 +01:00
efl_input_pointer.c evas: refactor efl_input_event and remove some of the lifecycle hack. 2018-05-24 16:02:18 -07:00
efl_input_pointer.eo eolian: first batch of unused import removals 2018-05-13 17:28:47 +02:00
efl_input_state.eo
evas_async_events.c ecore_pipe: remove null check condition and fix segfualt on Windows 2018-08-17 12:42:35 -04:00
evas_box.eo docs: Fix typos in API reference doc 2018-09-03 10:55:16 +09:00
evas_callbacks.c evas: Defer render post callbacks added during async render 2018-07-31 17:03:16 -04:00
evas_canvas.eo evas: remove render2 2018-08-21 10:36:55 -04:00
evas_canvas3d_camera.c
evas_canvas3d_camera.eo
evas_canvas3d_eet.c
evas_canvas3d_light.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_light.eo
evas_canvas3d_material.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_material.eo
evas_canvas3d_mesh.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_mesh.eo eolian: second batch of unused import removals 2018-05-13 18:13:12 +02:00
evas_canvas3d_node.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_node.eo evas3d: use a type setter function with finalize instead of a custom constructor 2018-02-12 16:47:41 -05:00
evas_canvas3d_node_callback.h
evas_canvas3d_object.c eo: make efl_provider_find a @const function. 2018-01-04 11:45:10 -08:00
evas_canvas3d_object.eo efl: Add missing event types 2018-05-19 01:42:26 +02:00
evas_canvas3d_primitive.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_primitive.eo docs: Update evas canvas eo files for grammar and readability 2017-12-22 13:45:48 +00:00
evas_canvas3d_scene.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_scene.eo docs: Update evas canvas eo files for grammar and readability 2017-12-22 13:45:48 +00:00
evas_canvas3d_texture.c eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_canvas3d_texture.eo docs: Update evas canvas eo files for grammar and readability 2017-12-22 13:45:48 +00:00
evas_canvas3d_types.eot evas3d: add "unknown" node type for use with errors 2018-02-12 16:47:40 -05:00
evas_clip.c evas clip: more strict comparison. 2018-07-23 08:18:00 -04:00
evas_data.c
evas_device.c evas_device: Only remove pointer data on deletion of pointer devices 2018-05-18 13:46:31 -04:00
evas_events.c evas_events: Fix to set mouse_in state to all pointers in the seat. 2018-08-02 18:16:47 +09:00
evas_events_legacy.c
evas_filter_mixin.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
evas_focus.c evas_focus: adjust to recent EFL_EVENT_DEL changes 2018-05-29 12:24:53 -04:00
evas_font_dir.c Evas font: simplify fallback parsing step 2018-07-02 12:49:18 +03:00
evas_gl.c evas gl: Properly verify that Evas GL works 2018-01-17 15:22:46 +09:00
evas_grid.eo evas_grid: size -> grid_size 2018-02-15 13:11:00 -05:00
evas_image.eo Efl.Canvas.Image_Internal (from Efl.Canvas.Image.Internal) 2018-04-24 09:03:27 -07:00
evas_image_legacy.c evas image: fix a bug in image preloading. 2018-09-03 17:12:55 +09:00
evas_image_private.h evas image: fix a bug in image preloading. 2018-09-03 17:12:55 +09:00
evas_key.c
evas_key_grab.c
evas_layer.c evas: detect incoherency in object content and report problem. 2018-05-24 16:02:20 -07:00
evas_line.eo
evas_main.c evas-canvas: Remove cserve2 support 2018-08-30 13:48:38 +09:00
evas_map.c evas_map: Fix a bug about wrong map point colors 2018-04-24 16:25:24 +09:00
evas_map.h
evas_name.c
evas_object_box.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_grid.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_image.c evas image: fix a bug in image preloading. 2018-09-03 17:12:55 +09:00
evas_object_inform.c evas image: fix a bug in image preloading. 2018-09-03 17:12:55 +09:00
evas_object_intercept.c Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
evas_object_line.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_main.c Revert "evas: handle event COW modification when COW is already active" 2018-06-15 11:22:38 -04:00
evas_object_polygon.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_rectangle.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_smart.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_smart_clipped.c Efl.Canvas.Group: use desired function 2018-08-02 09:10:41 -04:00
evas_object_table.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_text.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_object_textblock.c evas textblock: add/apply cursor cluster APIs based on grapheme cluster 2018-08-20 10:29:32 -04:00
evas_object_textgrid.c evas: call evas_find before safety check 2018-08-29 21:11:00 +09:00
evas_out.c evas: resolve possible memory leak. 2018-04-27 14:14:37 +09:00
evas_polygon_private.h
evas_rectangle.c
evas_render.c evas-canvas: Remove cserve2 support 2018-08-30 13:48:38 +09:00
evas_smart.c
evas_stack.x eolian gen: enable constness generation on property getter impls 2018-04-17 20:31:55 +02:00
evas_stats.c
evas_table.eo Efl.Gfx.Entity (from Efl.Gfx) 2018-04-24 09:03:32 -07:00
evas_text.eo efl: rename Efl.Text.Bidirectional_Type -> Efl.Text_Bidirectional_Type 2018-05-23 17:33:47 +02:00
evas_textblock_hyphenation.x Evas textblock: fix wrong hyphenation issues with non UTF8 encoded dictionary 2018-05-06 12:01:41 +03:00
evas_textblock_legacy.h evas textblock: add/apply cursor cluster APIs based on grapheme cluster 2018-08-20 10:29:32 -04:00
evas_textgrid.eo Efl.Text_* (from Efl.Text.*) 2018-04-24 09:03:49 -07:00
evas_touch_point.c
evas_vg_container.c evas vg: add warning msgs for users. 2018-06-19 08:36:00 +09:00
evas_vg_gradient.c Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
evas_vg_gradient_linear.c Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
evas_vg_gradient_radial.c Efl.Canvas.Vg.Object (from Efl.Canvas.Vg) 2018-04-24 09:03:30 -07:00
evas_vg_node.c evas canvas: add exceptional case. 2018-06-25 06:49:49 -04:00
evas_vg_private.h evas vg: prevent a corner-case crash. 2018-06-15 01:11:26 +09:00
evas_vg_shape.c evas vg: add warning msgs for users. 2018-06-19 08:36:00 +09:00
evas_vg_utils.c