evas_render: Remove some list walks
authorDerek Foreman <derek.foreman.samsung@gmail.com>
Thu, 10 Jan 2019 21:59:26 +0000 (15:59 -0600)
committerJiyoun Park <jy0703.park@samsung.com>
Wed, 16 Jan 2019 04:10:40 +0000 (13:10 +0900)
Not that these deletes ever walk long lists, but it's trivial to stop
doing it entirely.

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7611

src/lib/evas/canvas/evas_render.c
src/lib/evas/include/evas_private.h

index 5443569..2966182 100644 (file)
@@ -3637,8 +3637,8 @@ evas_render_updates_internal(Evas *eo_e,
                {
                   eina_evlog("+render_output_async_flush", eo_e, 0.0, NULL);
                   efl_ref(eo_e);
-                  e->rendering = EINA_TRUE;
-                  _rendering_evases = eina_list_append(_rendering_evases, e);
+                  _rendering_evases = eina_list_prepend(_rendering_evases, e);
+                  e->rendering = _rendering_evases;
                   _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL);
                   evas_thread_queue_flush((Evas_Thread_Command_Cb)evas_render_pipe_wakeup, e);
                   eina_evlog("-render_output_async_flush", eo_e, 0.0, NULL);
@@ -3911,8 +3911,8 @@ evas_render_wakeup(Evas *eo_e)
      }
 
    /* post rendering */
-   _rendering_evases = eina_list_remove(_rendering_evases, evas);
-   evas->rendering = EINA_FALSE;
+   _rendering_evases = eina_list_remove_list(_rendering_evases, evas->rendering);
+   evas->rendering = NULL;
 
    post.updated_area = ret_updates;
    _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_POST, &post);
index a16824f..7790518 100755 (executable)
@@ -893,12 +893,13 @@ struct _Evas_Public_Data
    Evas_Device   *last_mouse;
    //
 
+   Eina_List     *rendering;
+
    unsigned char  changed : 1;
    unsigned char  delete_me : 1;
    unsigned char  invalidate : 1;
    unsigned char  cleanup : 1;
    Eina_Bool      is_frozen : 1;
-   Eina_Bool      rendering : 1;
    Eina_Bool      inside_post_render : 1;
    Eina_Bool      devices_modified : 1;
 };