cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5017f06a728cbfb33f911acd867ff9b4bf81515f

commit 5017f06a728cbfb33f911acd867ff9b4bf81515f
Author: Cedric BAIL <[email protected]>
Date:   Mon Nov 13 14:39:08 2017 -0800

    evas: disable unecessary lock when not using evas_render2
    
    Calling this lock for no good reason result in a 2% slow down. Easy
    enough to disable as we do not use evas_render2 at all. Might be
    something to consider if we ever develop evas_render2 further.
---
 src/lib/evas/canvas/render2/evas_render2.c | 3 +++
 src/lib/evas/include/evas_inline.x         | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/src/lib/evas/canvas/render2/evas_render2.c 
b/src/lib/evas/canvas/render2/evas_render2.c
index b7dc2652ab..7f670d591a 100644
--- a/src/lib/evas/canvas/render2/evas_render2.c
+++ b/src/lib/evas/canvas/render2/evas_render2.c
@@ -4,6 +4,8 @@
 
 #include "region.c"
 
+Eina_Bool evas_render2_use = EINA_FALSE;
+
 #ifndef _WIN32
 static inline double
 get_time(void)
@@ -69,6 +71,7 @@ _evas_render2(Eo *eo_e, Evas_Public_Data *e)
    if (e->rendering) return EINA_FALSE;
    // mark this canvas as a render2 canvas - not normal render
    e->render2 = EINA_TRUE;
+   evas_render2_use = EINA_TRUE;
    // check viewport size is same as output - not allowed to differ
    if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
      ERR("viewport size != output size!");
diff --git a/src/lib/evas/include/evas_inline.x 
b/src/lib/evas/include/evas_inline.x
index 7886a0fa03..69ea105c1a 100644
--- a/src/lib/evas/include/evas_inline.x
+++ b/src/lib/evas/include/evas_inline.x
@@ -302,9 +302,12 @@ evas_object_clip_dirty(Evas_Object *eo_obj EINA_UNUSED, 
Evas_Object_Protected_Da
    evas_object_clip_dirty_do(obj);
 }
 
+extern Eina_Bool evas_render2_use;
+
 static inline void
 evas_object_async_block(Evas_Object_Protected_Data *obj)
 {
+   if (!evas_render2_use) return ;
    if (EVAS_OBJECT_DATA_VALID(obj))
      {
         eina_lock_take(&(obj->layer->evas->lock_objects));
@@ -315,6 +318,7 @@ evas_object_async_block(Evas_Object_Protected_Data *obj)
 static inline void
 evas_canvas_async_block(Evas_Public_Data *e)
 {
+   if (!evas_render2_use) return ;
    if (e)
      {
         eina_lock_take(&(e->lock_objects));

-- 


Reply via email to