evas: refactor the creation of the output info logic in libevas.
authorCedric BAIL <cedric@osg.samsung.com>
Fri, 25 Aug 2017 17:48:17 +0000 (10:48 -0700)
committerCedric BAIL <cedric@osg.samsung.com>
Fri, 25 Aug 2017 17:48:17 +0000 (10:48 -0700)
src/lib/evas/canvas/evas_main.c
src/lib/evas/canvas/evas_out.c
src/lib/evas/include/evas_private.h

index d713c4a..f72f0d7 100644 (file)
@@ -1044,16 +1044,7 @@ evas_output_method_set(Evas *eo_e, int render_method)
         Eina_List *l;
 
         EINA_LIST_FOREACH(e->outputs, l, output)
-          if (!output->info)
-            {
-               output->info = calloc(1, e->engine.func->info_size);
-               if (!output->info) continue ;
-               output->info->magic = rand();
-               output->info_magic = output->info->magic;
-
-               if (e->engine.func->output_info_setup)
-                 e->engine.func->output_info_setup(output->info);
-          }
+          efl_canvas_output_info_get(e, output);
      }
    else
      {
index 567ea58..fa8d914 100644 (file)
@@ -19,6 +19,25 @@ _efl_canvas_output_async_block(Efl_Canvas_Output *output)
    return e;
 }
 
+void
+efl_canvas_output_info_get(Evas_Public_Data *e, Efl_Canvas_Output *output)
+{
+   if (output->info) return ;
+   if (!e->engine.func->info_size)
+     {
+        CRI("Engine not up to date no info size provided.");
+        return ;
+     }
+
+   output->info = calloc(1, e->engine.func->info_size);
+   if (!output->info) return;
+   output->info->magic = rand();
+   output->info_magic = output->info->magic;
+
+   if (e->engine.func->output_info_setup)
+     e->engine.func->output_info_setup(output->info);
+}
+
 EAPI Efl_Canvas_Output *
 efl_canvas_output_add(Evas *canvas)
 {
@@ -38,22 +57,8 @@ efl_canvas_output_add(Evas *canvas)
 
    // The engine is already initialized, use it
    // right away to setup the info structure
-   if (e->engine.func->info_size)
-     {
-        r->info = calloc(1, e->engine.func->info_size);
-        if (!r->info) goto on_error;
-        r->info->magic = rand();
-        r->info_magic = r->info->magic;
-
-        if (e->engine.func->output_info_setup)
-          e->engine.func->output_info_setup(r->info);
-     }
-   else
-     {
-        CRI("Engine not up to date no info size provided.");
-     }
+   efl_canvas_output_info_get(e, r);
 
- on_error:
    return r;
 }
 
index ba6b752..7f8eb35 100644 (file)
@@ -2090,6 +2090,8 @@ Eina_List *_evas_pointer_list_in_rect_get(Evas_Public_Data *edata,
                                          Evas_Object_Protected_Data *obj_data,
                                          int w, int h);
 
+void efl_canvas_output_info_get(Evas_Public_Data *e, Efl_Canvas_Output *output);
+
 extern Eina_Cow *evas_object_proxy_cow;
 extern Eina_Cow *evas_object_map_cow;
 extern Eina_Cow *evas_object_state_cow;