discomfitor pushed a commit to branch master.

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

commit ef33638c42cf6cd7f7580d6b00b0aa46eb27729f
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Tue Oct 25 12:01:17 2016 -0400

    create substruct for E_Comp to put canvas objects into
    
    allow adding/removing objects in the future without breaking abi
---
 src/bin/e_comp.c        | 53 +++++++++++++++++++++++++------------------------
 src/bin/e_comp.h        | 14 ++++++++++---
 src/bin/e_comp_canvas.c |  8 ++++----
 src/bin/e_comp_x.c      |  2 +-
 4 files changed, 43 insertions(+), 34 deletions(-)

diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index 3af7593..d8dcb07 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -200,28 +200,28 @@ _e_comp_fps_update(void)
 {
    if (conf->fps_show)
      {
-        if (e_comp->fps_bg) return;
-
-        e_comp->fps_bg = evas_object_rectangle_add(e_comp->evas);
-        evas_object_color_set(e_comp->fps_bg, 0, 0, 0, 128);
-        evas_object_layer_set(e_comp->fps_bg, E_LAYER_MAX);
-        evas_object_name_set(e_comp->fps_bg, "e_comp->fps_bg");
-        evas_object_lower(e_comp->fps_bg);
-        evas_object_show(e_comp->fps_bg);
-
-        e_comp->fps_fg = evas_object_text_add(e_comp->evas);
-        evas_object_text_font_set(e_comp->fps_fg, "Sans", 10);
-        evas_object_text_text_set(e_comp->fps_fg, "???");
-        evas_object_color_set(e_comp->fps_fg, 255, 255, 255, 255);
-        evas_object_layer_set(e_comp->fps_fg, E_LAYER_MAX);
-        evas_object_name_set(e_comp->fps_bg, "e_comp->fps_fg");
-        evas_object_stack_above(e_comp->fps_fg, e_comp->fps_bg);
-        evas_object_show(e_comp->fps_fg);
+        if (e_comp->canvas->fps_bg) return;
+
+        e_comp->canvas->fps_bg = evas_object_rectangle_add(e_comp->evas);
+        evas_object_color_set(e_comp->canvas->fps_bg, 0, 0, 0, 128);
+        evas_object_layer_set(e_comp->canvas->fps_bg, E_LAYER_MAX);
+        evas_object_name_set(e_comp->canvas->fps_bg, "e_comp->canvas->fps_bg");
+        evas_object_lower(e_comp->canvas->fps_bg);
+        evas_object_show(e_comp->canvas->fps_bg);
+
+        e_comp->canvas->fps_fg = evas_object_text_add(e_comp->evas);
+        evas_object_text_font_set(e_comp->canvas->fps_fg, "Sans", 10);
+        evas_object_text_text_set(e_comp->canvas->fps_fg, "???");
+        evas_object_color_set(e_comp->canvas->fps_fg, 255, 255, 255, 255);
+        evas_object_layer_set(e_comp->canvas->fps_fg, E_LAYER_MAX);
+        evas_object_name_set(e_comp->canvas->fps_bg, "e_comp->canvas->fps_fg");
+        evas_object_stack_above(e_comp->canvas->fps_fg, 
e_comp->canvas->fps_bg);
+        evas_object_show(e_comp->canvas->fps_fg);
      }
    else
      {
-        E_FREE_FUNC(e_comp->fps_fg, evas_object_del);
-        E_FREE_FUNC(e_comp->fps_bg, evas_object_del);
+        E_FREE_FUNC(e_comp->canvas->fps_fg, evas_object_del);
+        E_FREE_FUNC(e_comp->canvas->fps_bg, evas_object_del);
      }
 }
 
@@ -425,9 +425,9 @@ _e_comp_cb_update(void)
         if (e_comp->frameskip >= conf->fps_average_range)
           {
              e_comp->frameskip = 0;
-             evas_object_text_text_set(e_comp->fps_fg, buf);
+             evas_object_text_text_set(e_comp->canvas->fps_fg, buf);
           }
-        evas_object_geometry_get(e_comp->fps_fg, NULL, NULL, &w, &h);
+        evas_object_geometry_get(e_comp->canvas->fps_fg, NULL, NULL, &w, &h);
         w += 8;
         h += 8;
         z = e_zone_current_get();
@@ -455,9 +455,9 @@ _e_comp_cb_update(void)
                   break;
                }
           }
-        evas_object_move(e_comp->fps_bg, x, y);
-        evas_object_resize(e_comp->fps_bg, w, h);
-        evas_object_move(e_comp->fps_fg, x + 4, y + 4);
+        evas_object_move(e_comp->canvas->fps_bg, x, y);
+        evas_object_resize(e_comp->canvas->fps_bg, w, h);
+        evas_object_move(e_comp->canvas->fps_fg, x + 4, y + 4);
      }
    if (conf->lock_fps)
      {
@@ -581,7 +581,7 @@ 
_e_comp_shapes_update_object_checker_function_thingy(Evas_Object *o)
    Eina_List *l;
    E_Zone *zone;
 
-   if (o == e_comp->bg_blank_object) return EINA_TRUE;
+   if (o == e_comp->canvas->bg_blank_object) return EINA_TRUE;
    EINA_LIST_FOREACH(e_comp->zones, l, zone)
      {
         if ((o == zone->over) || (o == zone->base)) return EINA_TRUE;
@@ -851,7 +851,7 @@ _e_comp_free(E_Comp *c)
    if (c->nocomp_delay_timer) ecore_timer_del(c->nocomp_delay_timer);
    if (c->nocomp_override_timer) ecore_timer_del(c->nocomp_override_timer);
    ecore_job_del(c->shape_job);
-
+   free(c->canvas);
    free(c);
 }
 
@@ -1363,6 +1363,7 @@ e_comp_new(void)
      CRI("CANNOT REPLACE EXISTING COMPOSITOR");
    e_comp = E_OBJECT_ALLOC(E_Comp, E_COMP_TYPE, _e_comp_free);
    if (!e_comp) return NULL;
+   e_comp->canvas = E_NEW(E_Comp_Canvas, 1);
 
    e_comp->render_animator = ecore_animator_add(_e_comp_cb_animator, NULL);
    ecore_animator_freeze(e_comp->render_animator);
diff --git a/src/bin/e_comp.h b/src/bin/e_comp.h
index 5edf2e2..f9aa13d 100644
--- a/src/bin/e_comp.h
+++ b/src/bin/e_comp.h
@@ -76,6 +76,16 @@ typedef struct E_Comp_Screen_Iface
    Eina_Bool (*key_up)(Ecore_Event_Key *ev);
 } E_Comp_Screen_Iface;
 
+/* struct to hold canvas objects so that abi doesn't break
+ * when new objects are added
+ */
+typedef struct E_Comp_Canvas
+{
+   Evas_Object *bg_blank_object; //black blocker rect to cover background 
artifacts
+   Evas_Object *fps_bg;
+   Evas_Object *fps_fg;
+} E_Comp_Canvas;
+
 struct _E_Comp
 {
    E_Object e_obj_inherit;
@@ -85,9 +95,9 @@ struct _E_Comp
    Ecore_Window  root; //x11 root window
    Ecore_Evas     *ee; //canvas
    Ecore_Window  ee_win; //canvas window
+   E_Comp_Canvas *canvas;
    Evas_Object    *elm; //elm win base
    Evas           *evas; //canvas
-   Evas_Object    *bg_blank_object; //black blocker rect to cover background 
artifacts
    Eina_List      *zones; //list of E_Zones
    E_Pointer      *pointer;
    Eina_List *clients; //list of all E_Clients
@@ -128,8 +138,6 @@ struct _E_Comp
    Ecore_Animator *render_animator; //animator for fixed time rendering
    Ecore_Job      *shape_job; //job to update x11 input shapes
    Ecore_Job      *update_job; //job to trigger render updates
-   Evas_Object    *fps_bg;
-   Evas_Object    *fps_fg;
    Ecore_Timer    *nocomp_delay_timer; //delay before activating nocomp in x11
    Ecore_Timer    *nocomp_override_timer; //delay before overriding nocomp in 
x11
    int             animating; //number of animating comp objects
diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c
index 0289b42..deab362 100644
--- a/src/bin/e_comp_canvas.c
+++ b/src/bin/e_comp_canvas.c
@@ -289,12 +289,12 @@ e_comp_canvas_init(int w, int h)
    if (e_first_frame)
      evas_event_callback_add(e_comp->evas, EVAS_CALLBACK_RENDER_POST, 
_e_comp_canvas_cb_first_frame, NULL);
    o = evas_object_rectangle_add(e_comp->evas);
-   e_comp->bg_blank_object = o;
+   e_comp->canvas->bg_blank_object = o;
    evas_object_layer_set(o, E_LAYER_BOTTOM);
    evas_object_move(o, 0, 0);
    evas_object_resize(o, e_comp->w, e_comp->h);
    evas_object_color_set(o, 0, 0, 0, 255);
-   evas_object_name_set(o, "comp->bg_blank_object");
+   evas_object_name_set(o, "comp->canvas->bg_blank_object");
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, 
(Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_down, NULL);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, 
(Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_up, NULL);
    evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, 
(Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_in, NULL);
@@ -346,8 +346,8 @@ e_comp_canvas_clear(void)
    evas_event_freeze(e_comp->evas);
    edje_freeze();
 
-   E_FREE_FUNC(e_comp->fps_fg, evas_object_del);
-   E_FREE_FUNC(e_comp->fps_bg, evas_object_del);
+   E_FREE_FUNC(e_comp->canvas->fps_fg, evas_object_del);
+   E_FREE_FUNC(e_comp->canvas->fps_bg, evas_object_del);
    E_FREE_FUNC(e_comp->autoclose.rect, evas_object_del);
    E_FREE_FUNC(e_comp->shape_job, ecore_job_del);
    E_FREE_FUNC(e_comp->pointer, e_object_del);
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index 4d83070..714431c 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -5457,7 +5457,7 @@ _e_comp_x_setup(Ecore_X_Window root, int w, int h)
      e_pointer_window_add(e_comp->pointer, e_comp->root);
    _e_comp_x_manage_windows();
 
-   return !!e_comp->bg_blank_object;
+   return !!e_comp->canvas->bg_blank_object;
 }
 
 static Eina_Bool

-- 


Reply via email to