forked from enlightenment/enlightenment
create substruct for E_Comp to put canvas objects into
allow adding/removing objects in the future without breaking abi
This commit is contained in:
parent
989675f310
commit
ef33638c42
|
@ -200,28 +200,28 @@ _e_comp_fps_update(void)
|
||||||
{
|
{
|
||||||
if (conf->fps_show)
|
if (conf->fps_show)
|
||||||
{
|
{
|
||||||
if (e_comp->fps_bg) return;
|
if (e_comp->canvas->fps_bg) return;
|
||||||
|
|
||||||
e_comp->fps_bg = evas_object_rectangle_add(e_comp->evas);
|
e_comp->canvas->fps_bg = evas_object_rectangle_add(e_comp->evas);
|
||||||
evas_object_color_set(e_comp->fps_bg, 0, 0, 0, 128);
|
evas_object_color_set(e_comp->canvas->fps_bg, 0, 0, 0, 128);
|
||||||
evas_object_layer_set(e_comp->fps_bg, E_LAYER_MAX);
|
evas_object_layer_set(e_comp->canvas->fps_bg, E_LAYER_MAX);
|
||||||
evas_object_name_set(e_comp->fps_bg, "e_comp->fps_bg");
|
evas_object_name_set(e_comp->canvas->fps_bg, "e_comp->canvas->fps_bg");
|
||||||
evas_object_lower(e_comp->fps_bg);
|
evas_object_lower(e_comp->canvas->fps_bg);
|
||||||
evas_object_show(e_comp->fps_bg);
|
evas_object_show(e_comp->canvas->fps_bg);
|
||||||
|
|
||||||
e_comp->fps_fg = evas_object_text_add(e_comp->evas);
|
e_comp->canvas->fps_fg = evas_object_text_add(e_comp->evas);
|
||||||
evas_object_text_font_set(e_comp->fps_fg, "Sans", 10);
|
evas_object_text_font_set(e_comp->canvas->fps_fg, "Sans", 10);
|
||||||
evas_object_text_text_set(e_comp->fps_fg, "???");
|
evas_object_text_text_set(e_comp->canvas->fps_fg, "???");
|
||||||
evas_object_color_set(e_comp->fps_fg, 255, 255, 255, 255);
|
evas_object_color_set(e_comp->canvas->fps_fg, 255, 255, 255, 255);
|
||||||
evas_object_layer_set(e_comp->fps_fg, E_LAYER_MAX);
|
evas_object_layer_set(e_comp->canvas->fps_fg, E_LAYER_MAX);
|
||||||
evas_object_name_set(e_comp->fps_bg, "e_comp->fps_fg");
|
evas_object_name_set(e_comp->canvas->fps_bg, "e_comp->canvas->fps_fg");
|
||||||
evas_object_stack_above(e_comp->fps_fg, e_comp->fps_bg);
|
evas_object_stack_above(e_comp->canvas->fps_fg, e_comp->canvas->fps_bg);
|
||||||
evas_object_show(e_comp->fps_fg);
|
evas_object_show(e_comp->canvas->fps_fg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
E_FREE_FUNC(e_comp->fps_fg, evas_object_del);
|
E_FREE_FUNC(e_comp->canvas->fps_fg, evas_object_del);
|
||||||
E_FREE_FUNC(e_comp->fps_bg, 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)
|
if (e_comp->frameskip >= conf->fps_average_range)
|
||||||
{
|
{
|
||||||
e_comp->frameskip = 0;
|
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;
|
w += 8;
|
||||||
h += 8;
|
h += 8;
|
||||||
z = e_zone_current_get();
|
z = e_zone_current_get();
|
||||||
|
@ -455,9 +455,9 @@ _e_comp_cb_update(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
evas_object_move(e_comp->fps_bg, x, y);
|
evas_object_move(e_comp->canvas->fps_bg, x, y);
|
||||||
evas_object_resize(e_comp->fps_bg, w, h);
|
evas_object_resize(e_comp->canvas->fps_bg, w, h);
|
||||||
evas_object_move(e_comp->fps_fg, x + 4, y + 4);
|
evas_object_move(e_comp->canvas->fps_fg, x + 4, y + 4);
|
||||||
}
|
}
|
||||||
if (conf->lock_fps)
|
if (conf->lock_fps)
|
||||||
{
|
{
|
||||||
|
@ -581,7 +581,7 @@ _e_comp_shapes_update_object_checker_function_thingy(Evas_Object *o)
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
E_Zone *zone;
|
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)
|
EINA_LIST_FOREACH(e_comp->zones, l, zone)
|
||||||
{
|
{
|
||||||
if ((o == zone->over) || (o == zone->base)) return EINA_TRUE;
|
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_delay_timer) ecore_timer_del(c->nocomp_delay_timer);
|
||||||
if (c->nocomp_override_timer) ecore_timer_del(c->nocomp_override_timer);
|
if (c->nocomp_override_timer) ecore_timer_del(c->nocomp_override_timer);
|
||||||
ecore_job_del(c->shape_job);
|
ecore_job_del(c->shape_job);
|
||||||
|
free(c->canvas);
|
||||||
free(c);
|
free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1363,6 +1363,7 @@ e_comp_new(void)
|
||||||
CRI("CANNOT REPLACE EXISTING COMPOSITOR");
|
CRI("CANNOT REPLACE EXISTING COMPOSITOR");
|
||||||
e_comp = E_OBJECT_ALLOC(E_Comp, E_COMP_TYPE, _e_comp_free);
|
e_comp = E_OBJECT_ALLOC(E_Comp, E_COMP_TYPE, _e_comp_free);
|
||||||
if (!e_comp) return NULL;
|
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);
|
e_comp->render_animator = ecore_animator_add(_e_comp_cb_animator, NULL);
|
||||||
ecore_animator_freeze(e_comp->render_animator);
|
ecore_animator_freeze(e_comp->render_animator);
|
||||||
|
|
|
@ -76,6 +76,16 @@ typedef struct E_Comp_Screen_Iface
|
||||||
Eina_Bool (*key_up)(Ecore_Event_Key *ev);
|
Eina_Bool (*key_up)(Ecore_Event_Key *ev);
|
||||||
} E_Comp_Screen_Iface;
|
} 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
|
struct _E_Comp
|
||||||
{
|
{
|
||||||
E_Object e_obj_inherit;
|
E_Object e_obj_inherit;
|
||||||
|
@ -85,9 +95,9 @@ struct _E_Comp
|
||||||
Ecore_Window root; //x11 root window
|
Ecore_Window root; //x11 root window
|
||||||
Ecore_Evas *ee; //canvas
|
Ecore_Evas *ee; //canvas
|
||||||
Ecore_Window ee_win; //canvas window
|
Ecore_Window ee_win; //canvas window
|
||||||
|
E_Comp_Canvas *canvas;
|
||||||
Evas_Object *elm; //elm win base
|
Evas_Object *elm; //elm win base
|
||||||
Evas *evas; //canvas
|
Evas *evas; //canvas
|
||||||
Evas_Object *bg_blank_object; //black blocker rect to cover background artifacts
|
|
||||||
Eina_List *zones; //list of E_Zones
|
Eina_List *zones; //list of E_Zones
|
||||||
E_Pointer *pointer;
|
E_Pointer *pointer;
|
||||||
Eina_List *clients; //list of all E_Clients
|
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_Animator *render_animator; //animator for fixed time rendering
|
||||||
Ecore_Job *shape_job; //job to update x11 input shapes
|
Ecore_Job *shape_job; //job to update x11 input shapes
|
||||||
Ecore_Job *update_job; //job to trigger render updates
|
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_delay_timer; //delay before activating nocomp in x11
|
||||||
Ecore_Timer *nocomp_override_timer; //delay before overriding nocomp in x11
|
Ecore_Timer *nocomp_override_timer; //delay before overriding nocomp in x11
|
||||||
int animating; //number of animating comp objects
|
int animating; //number of animating comp objects
|
||||||
|
|
|
@ -289,12 +289,12 @@ e_comp_canvas_init(int w, int h)
|
||||||
if (e_first_frame)
|
if (e_first_frame)
|
||||||
evas_event_callback_add(e_comp->evas, EVAS_CALLBACK_RENDER_POST, _e_comp_canvas_cb_first_frame, NULL);
|
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);
|
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_layer_set(o, E_LAYER_BOTTOM);
|
||||||
evas_object_move(o, 0, 0);
|
evas_object_move(o, 0, 0);
|
||||||
evas_object_resize(o, e_comp->w, e_comp->h);
|
evas_object_resize(o, e_comp->w, e_comp->h);
|
||||||
evas_object_color_set(o, 0, 0, 0, 255);
|
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_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_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);
|
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);
|
evas_event_freeze(e_comp->evas);
|
||||||
edje_freeze();
|
edje_freeze();
|
||||||
|
|
||||||
E_FREE_FUNC(e_comp->fps_fg, evas_object_del);
|
E_FREE_FUNC(e_comp->canvas->fps_fg, evas_object_del);
|
||||||
E_FREE_FUNC(e_comp->fps_bg, 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->autoclose.rect, evas_object_del);
|
||||||
E_FREE_FUNC(e_comp->shape_job, ecore_job_del);
|
E_FREE_FUNC(e_comp->shape_job, ecore_job_del);
|
||||||
E_FREE_FUNC(e_comp->pointer, e_object_del);
|
E_FREE_FUNC(e_comp->pointer, e_object_del);
|
||||||
|
|
|
@ -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_pointer_window_add(e_comp->pointer, e_comp->root);
|
||||||
_e_comp_x_manage_windows();
|
_e_comp_x_manage_windows();
|
||||||
|
|
||||||
return !!e_comp->bg_blank_object;
|
return !!e_comp->canvas->bg_blank_object;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
|
Loading…
Reference in New Issue