summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Antognolli <rafael.antognolli@intel.com>2013-04-26 15:01:44 -0300
committerRafael Antognolli <rafael.antognolli@intel.com>2013-04-26 20:19:30 -0300
commitd9b6b1b2c5107053e7d3754e0161af87e045560e (patch)
treee9cfab1c6716fcf1f4ad1a8178b6d0137a6e1d0d
parent1feec81121864082777a557876792504da5d4033 (diff)
downloadefl-devs/antognolli/framespace.tar.gz
add support for framespace offset render translation.devs/antognolli/framespace
-rw-r--r--src/lib/evas/canvas/evas_clip.c29
-rw-r--r--src/lib/evas/canvas/evas_object_image.c4
-rw-r--r--src/lib/evas/canvas/evas_object_main.c29
-rw-r--r--src/lib/evas/canvas/evas_render.c29
-rw-r--r--src/lib/evas/include/evas_inline.x20
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c1
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c5
-rw-r--r--src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c3
8 files changed, 70 insertions, 50 deletions
diff --git a/src/lib/evas/canvas/evas_clip.c b/src/lib/evas/canvas/evas_clip.c
index 67d575b07b..2256e360b3 100644
--- a/src/lib/evas/canvas/evas_clip.c
+++ b/src/lib/evas/canvas/evas_clip.c
@@ -192,6 +192,7 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
Evas_Object_Protected_Data *clip;
Evas_Object *eo_clip = va_arg(*list, Evas_Object *);
Evas_Object_Protected_Data *obj = _pd;
+ Evas_Public_Data *e;
if (!eo_clip)
{
@@ -256,10 +257,11 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
}
EINA_COW_STATE_WRITE_END(obj->cur->clipper, state_write, cur);
+ e = obj->cur->clipper->layer->evas;
if (obj->cur->clipper->cur->visible)
- evas_damage_rectangle_add(obj->cur->clipper->layer->evas->evas,
- obj->cur->clipper->cur->geometry.x,
- obj->cur->clipper->cur->geometry.y,
+ evas_damage_rectangle_add(e->evas,
+ obj->cur->clipper->cur->geometry.x + e->framespace.x,
+ obj->cur->clipper->cur->geometry.y + e->framespace.y,
obj->cur->clipper->cur->geometry.w,
obj->cur->clipper->cur->geometry.h);
}
@@ -277,9 +279,11 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
{
/* Basically it just went invisible */
clip->changed = 1;
- clip->layer->evas->changed = 1;
- evas_damage_rectangle_add(clip->layer->evas->evas,
- clip->cur->geometry.x, clip->cur->geometry.y,
+ e = clip->layer->evas;
+ e->changed = 1;
+ evas_damage_rectangle_add(e->evas,
+ clip->cur->geometry.x + e->framespace.x,
+ clip->cur->geometry.y + e->framespace.y,
clip->cur->geometry.w, clip->cur->geometry.h);
}
EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
@@ -387,11 +391,14 @@ _clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
EINA_COW_STATE_WRITE_END(obj->cur->clipper, state_write, cur);
if (obj->cur->clipper->cur->visible)
- evas_damage_rectangle_add(obj->cur->clipper->layer->evas->evas,
- obj->cur->clipper->cur->geometry.x,
- obj->cur->clipper->cur->geometry.y,
- obj->cur->clipper->cur->geometry.w,
- obj->cur->clipper->cur->geometry.h);
+ {
+ Evas_Public_Data *e = obj->cur->clipper->layer->evas;
+ evas_damage_rectangle_add(e->evas,
+ obj->cur->clipper->cur->geometry.x + e->framespace.x,
+ obj->cur->clipper->cur->geometry.y + e->framespace.y,
+ obj->cur->clipper->cur->geometry.w,
+ obj->cur->clipper->cur->geometry.h);
+ }
}
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
}
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index db572b4840..ded36c9076 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -4260,7 +4260,9 @@ evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
obj->cur->clipper->cur->cache.clip.h);
}
e->engine.func->output_redraws_rect_del(e->engine.data.output,
- x, y, w, h);
+ x + e->framespace.x,
+ y + e->framespace.y,
+ w, h);
}
done:
evas_object_render_pre_effect_updates(&e->clip_changes, eo_obj, is_v, was_v);
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 87eb903913..e51e9347cb 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -408,6 +408,8 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
/* FIXME: was_v isn't used... why? */
if (!obj->clip.clipees)
{
+ Evas_Public_Data *e;
+ e = obj->layer->evas;
EINA_ARRAY_ITER_NEXT(rects, i, r, it)
{
/* get updates and clip to current clip */
@@ -421,8 +423,10 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
- x, y, w, h);
+ obj->layer->evas->engine.func->output_redraws_rect_add(e->engine.data.output,
+ x + e->framespace.x,
+ y + e->framespace.y,
+ w, h);
/* get updates and clip to previous clip */
x = r->x;
y = r->y;
@@ -434,8 +438,10 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
- x, y, w, h);
+ obj->layer->evas->engine.func->output_redraws_rect_add(e->engine.data.output,
+ x + e->framespace.x,
+ y + e->framespace.y,
+ w, h);
}
/* if the object is actually visible, take any parent clip changes */
if (is_v)
@@ -455,8 +461,10 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
- x, y, w, h);
+ obj->layer->evas->engine.func->output_redraws_rect_add(e->engine.data.output,
+ x + e->framespace.x,
+ y + e->framespace.y,
+ w, h);
/* get updates and clip to previous clip */
x = r->x; y = r->y; w = r->w; h = r->h;
RECTS_CLIP_TO_RECT(x, y, w, h,
@@ -465,8 +473,10 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
if ((w > 0) && (h > 0))
- obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
- x, y, w, h);
+ obj->layer->evas->engine.func->output_redraws_rect_add(e->engine.data.output,
+ x + e->framespace.x,
+ y + e->framespace.y,
+ w, h);
}
clipper = clipper->cur->clipper;
}
@@ -672,7 +682,6 @@ _position_set(Eo *eo_obj, void *_pd, va_list *list)
Evas_Coord x = va_arg(*list, Evas_Coord);
Evas_Coord y = va_arg(*list, Evas_Coord);
- Evas_Public_Data *evas;
Eina_Bool is, was = EINA_FALSE;
Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE;
Eina_Bool source_invisible = EINA_FALSE;
@@ -680,8 +689,6 @@ _position_set(Eo *eo_obj, void *_pd, va_list *list)
if (obj->delete_me) return;
if (!obj->layer) return;
- evas = obj->layer->evas;
-
if (evas_object_intercept_call_move(eo_obj, obj, x, y)) return;
if (obj->doing.in_move > 0)
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index 368a88c8d2..8d72ef7398 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -220,13 +220,13 @@ static void
_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *e, Evas_Object_Protected_Data *obj)
{
e->engine.func->output_redraws_rect_add(e->engine.data.output,
- obj->prev->cache.clip.x,
- obj->prev->cache.clip.y,
+ obj->prev->cache.clip.x + e->framespace.x,
+ obj->prev->cache.clip.y + e->framespace.y,
obj->prev->cache.clip.w,
obj->prev->cache.clip.h);
e->engine.func->output_redraws_rect_add(e->engine.data.output,
- obj->cur->cache.clip.x,
- obj->cur->cache.clip.y,
+ obj->cur->cache.clip.x + e->framespace.x,
+ obj->cur->cache.clip.y + e->framespace.y,
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
}
@@ -249,7 +249,8 @@ _evas_render_cur_clip_cache_del(Evas_Public_Data *e, Evas_Object_Protected_Data
obj->cur->clipper->cur->cache.clip.h);
}
e->engine.func->output_redraws_rect_del(e->engine.data.output,
- x, y, w, h);
+ x + e->framespace.x,
+ y + e->framespace.y, w, h);
}
static void
@@ -1620,6 +1621,8 @@ evas_render_updates_internal(Evas *eo_e,
if (do_draw)
{
unsigned int offset = 0;
+ int fx = e->framespace.x;
+ int fy = e->framespace.y;
while ((surface =
e->engine.func->output_redraws_next_update_get
@@ -1663,13 +1666,13 @@ evas_render_updates_internal(Evas *eo_e,
obj = (Evas_Object_Protected_Data *)eina_array_data_get
(&e->obscuring_objects, i);
eo_obj = obj->object;
- if (evas_object_is_in_output_rect(eo_obj, obj, ux, uy, uw, uh))
+ if (evas_object_is_in_output_rect(eo_obj, obj, ux - fx, uy - fy, uw, uh))
{
eina_array_push(&e->temporary_objects, obj);
/* reset the background of the area if needed (using cutout and engine alpha flag to help) */
if (alpha)
- _evas_render_cutout_add(e, obj, off_x, off_y);
+ _evas_render_cutout_add(e, obj, off_x + fx, off_y + fy);
}
}
if (alpha)
@@ -1700,7 +1703,7 @@ evas_render_updates_internal(Evas *eo_e,
/* if it's in our outpout rect and it doesn't clip anything */
RD(" OBJ: [%p] '%s' %i %i %ix%i\n", obj, obj->type, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
- if ((evas_object_is_in_output_rect(eo_obj, obj, ux, uy, uw, uh) ||
+ if ((evas_object_is_in_output_rect(eo_obj, obj, ux - fx, uy - fy, uw, uh) ||
(obj->is_smart)) &&
(!obj->clip.clipees) &&
(obj->cur->visible) &&
@@ -1721,8 +1724,8 @@ evas_render_updates_internal(Evas *eo_e,
if (!obj->is_smart)
{
RECTS_CLIP_TO_RECT(x, y, w, h,
- obj->cur->cache.clip.x + off_x,
- obj->cur->cache.clip.y + off_y,
+ obj->cur->cache.clip.x + off_x + fx,
+ obj->cur->cache.clip.y + off_y + fy,
obj->cur->cache.clip.w,
obj->cur->cache.clip.h);
}
@@ -1737,12 +1740,12 @@ evas_render_updates_internal(Evas *eo_e,
obj2 = (Evas_Object_Protected_Data *)eina_array_data_get
(&e->temporary_objects, j);
- _evas_render_cutout_add(e, obj2, off_x, off_y);
+ _evas_render_cutout_add(e, obj2, off_x + fx, off_y + fy);
}
#endif
clean_them |= evas_render_mapped(e, eo_obj, obj, e->engine.data.context,
- surface, off_x,
- off_y, 0,
+ surface, off_x + fx,
+ off_y + fy, 0,
cx, cy, cw, ch,
EINA_FALSE
#ifdef REND_DBG
diff --git a/src/lib/evas/include/evas_inline.x b/src/lib/evas/include/evas_inline.x
index 3229b0073b..88f047aea2 100644
--- a/src/lib/evas/include/evas_inline.x
+++ b/src/lib/evas/include/evas_inline.x
@@ -168,23 +168,27 @@ evas_object_is_active(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
if (evas_object_is_visible(eo_obj, obj) || evas_object_was_visible(eo_obj, obj))
{
+ Evas_Public_Data *e = obj->layer->evas;
+ int fx, fy;
+ fx = e->framespace.x;
+ fy = e->framespace.y;
if (obj->is_smart)
{
int mapsmt = 0;
if (obj->map->cur.map && obj->map->cur.usemap) mapsmt = 1;
if (!mapsmt) return 1;
- if (evas_object_is_in_output_rect(eo_obj, obj, 0, 0, obj->layer->evas->output.w,
- obj->layer->evas->output.h) ||
- evas_object_was_in_output_rect(eo_obj, obj, 0, 0, obj->layer->evas->output.w,
- obj->layer->evas->output.h))
+ if (evas_object_is_in_output_rect(eo_obj, obj, -fx, -fy,
+ e->output.w, e->output.h) ||
+ evas_object_was_in_output_rect(eo_obj, obj, -fx, -fy,
+ e->output.w, e->output.h))
return 1;
}
else
{
- if (evas_object_is_in_output_rect(eo_obj, obj, 0, 0, obj->layer->evas->output.w,
- obj->layer->evas->output.h) ||
- evas_object_was_in_output_rect(eo_obj, obj, 0, 0, obj->layer->evas->output.w,
- obj->layer->evas->output.h))
+ if (evas_object_is_in_output_rect(eo_obj, obj, -fx, -fy,
+ e->output.w, e->output.h) ||
+ evas_object_was_in_output_rect(eo_obj, obj, -fx, -fy,
+ e->output.w, e->output.h))
return 1;
}
}
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index 66094c68f9..6c8d52593f 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -769,7 +769,6 @@ _ecore_evas_wl_common_frame_border_size_set(Evas_Object *obj, int fx, int fy, in
else if ((sd->border_size[i] > 0) && (!sd->border[i]))
{
sd->border[i] = evas_object_rectangle_add(e);
- evas_object_is_frame_object_set(sd->border[i], EINA_TRUE);
evas_object_color_set(sd->border[i], 249, 249, 249, 255);
evas_object_show(sd->border[i]);
evas_object_smart_member_add(sd->border[i], obj);
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index 9c45bf7270..919adf3e66 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -205,12 +205,11 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent,
ecore_evas_callback_pre_free_set(ee, _ecore_evas_wl_common_pre_free);
- if (ee->prop.draw_frame)
+ if (ee->prop.draw_frame)
{
wdata->frame = _ecore_evas_wl_common_frame_add(ee->evas);
_ecore_evas_wl_common_frame_border_size_set(wdata->frame, fx, fy, fw, fh);
- evas_object_is_frame_object_set(wdata->frame, EINA_TRUE);
- evas_object_move(wdata->frame, 0, 0);
+ evas_object_move(wdata->frame, -fx, -fy);
evas_object_layer_set(wdata->frame, EVAS_LAYER_MAX - 1);
}
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index 764e6f9c48..18c1c58d5f 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -214,8 +214,7 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent,
{
wdata->frame = _ecore_evas_wl_common_frame_add(ee->evas);
_ecore_evas_wl_common_frame_border_size_set(wdata->frame, fx, fy, fw, fh);
- evas_object_is_frame_object_set(wdata->frame, EINA_TRUE);
- evas_object_move(wdata->frame, 0, 0);
+ evas_object_move(wdata->frame, -fx, -fy);
evas_object_layer_set(wdata->frame, EVAS_LAYER_MAX - 1);
}