raster pushed a commit to branch master.

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

commit d54b5fba6c7e7f13ca63a47fc177e4d141995a8d
Author: Subhransu Mohanty <[email protected]>
Date:   Wed Sep 28 15:28:27 2016 +0900

    ector: make the ector objects as shared object after eo changes.
     As ector objects are acessed by draw thread we need to create it as
     shared object in order to access it from other thread.
     Note: there is some performance lag...
    
    Summary: make ector object as shared eo object to acess from other thread.
    
    Reviewers: cedric, jpeg, raster
    
    Reviewed By: jpeg, raster
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4319
---
 src/lib/evas/canvas/evas_vg_gradient_linear.c           | 2 ++
 src/lib/evas/canvas/evas_vg_gradient_radial.c           | 2 ++
 src/lib/evas/canvas/evas_vg_shape.c                     | 2 ++
 src/modules/evas/engines/gl_generic/evas_engine.c       | 2 ++
 src/modules/evas/engines/software_generic/evas_engine.c | 2 ++
 5 files changed, 10 insertions(+)

diff --git a/src/lib/evas/canvas/evas_vg_gradient_linear.c 
b/src/lib/evas/canvas/evas_vg_gradient_linear.c
index 11fb903..de81987 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_linear.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_linear.c
@@ -74,7 +74,9 @@ _efl_vg_gradient_linear_render_pre(Eo *obj,
 
    if (!nd->renderer)
      {
+        efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
         nd->renderer = ector_surface_renderer_factory_new(s, 
ECTOR_RENDERER_GRADIENT_LINEAR_MIXIN);
+        efl_domain_current_pop();
      }
 
    ector_renderer_transformation_set(nd->renderer, current);
diff --git a/src/lib/evas/canvas/evas_vg_gradient_radial.c 
b/src/lib/evas/canvas/evas_vg_gradient_radial.c
index a83c016..9a60d65 100644
--- a/src/lib/evas/canvas/evas_vg_gradient_radial.c
+++ b/src/lib/evas/canvas/evas_vg_gradient_radial.c
@@ -90,7 +90,9 @@ _efl_vg_gradient_radial_render_pre(Eo *obj,
 
    if (!nd->renderer)
      {
+        efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
         nd->renderer = ector_surface_renderer_factory_new(s, 
ECTOR_RENDERER_GRADIENT_RADIAL_MIXIN);
+        efl_domain_current_pop();
      }
 
    ector_renderer_transformation_set(nd->renderer, current);
diff --git a/src/lib/evas/canvas/evas_vg_shape.c 
b/src/lib/evas/canvas/evas_vg_shape.c
index 2f47f27..9b48ab3 100644
--- a/src/lib/evas/canvas/evas_vg_shape.c
+++ b/src/lib/evas/canvas/evas_vg_shape.c
@@ -135,7 +135,9 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
 
    if (!nd->renderer)
      {
+        efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
         nd->renderer = ector_surface_renderer_factory_new(s, 
ECTOR_RENDERER_SHAPE_MIXIN);
+        efl_domain_current_pop();
      }
 
    ector_renderer_transformation_set(nd->renderer, current);
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c 
b/src/modules/evas/engines/gl_generic/evas_engine.c
index 5c5417f..61b4a60 100644
--- a/src/modules/evas/engines/gl_generic/evas_engine.c
+++ b/src/modules/evas/engines/gl_generic/evas_engine.c
@@ -2489,6 +2489,7 @@ eng_ector_create(void *data EINA_UNUSED)
    Ector_Surface *ector;
    const char *ector_backend;
    ector_backend = getenv("ECTOR_BACKEND");
+   efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
    if (ector_backend && !strcasecmp(ector_backend, "default"))
      {
         ector = efl_add(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
@@ -2503,6 +2504,7 @@ eng_ector_create(void *data EINA_UNUSED)
         ector = efl_add(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL);
         use_cairo = EINA_TRUE;
      }
+   efl_domain_current_pop();
    return ector;
 }
 
diff --git a/src/modules/evas/engines/software_generic/evas_engine.c 
b/src/modules/evas/engines/software_generic/evas_engine.c
index 2755b48..7ab8ba4 100644
--- a/src/modules/evas/engines/software_generic/evas_engine.c
+++ b/src/modules/evas/engines/software_generic/evas_engine.c
@@ -4254,6 +4254,7 @@ eng_ector_create(void *data EINA_UNUSED)
    Ector_Surface *ector;
    const char *ector_backend;
    ector_backend = getenv("ECTOR_BACKEND");
+   efl_domain_current_push(EFL_ID_DOMAIN_SHARED);
    if (ector_backend && !strcasecmp(ector_backend, "default"))
      {
         ector = efl_add(ECTOR_SOFTWARE_SURFACE_CLASS, NULL);
@@ -4264,6 +4265,7 @@ eng_ector_create(void *data EINA_UNUSED)
         ector = efl_add(ECTOR_CAIRO_SOFTWARE_SURFACE_CLASS, NULL);
         use_cairo = EINA_TRUE;
      }
+   efl_domain_current_pop();
    return ector;
 }
 

-- 


Reply via email to