Evas render: Improve debug output with REND_DBG

Better formatting and less code clutter.

This is a purely non-functional change as all the
changed lines are ifdef'ed out by default.
This commit is contained in:
Jean-Philippe Andre 2015-01-26 17:35:42 +09:00
parent 21d08f86e6
commit 7a50f5827f
2 changed files with 132 additions and 140 deletions

View File

@ -22,7 +22,7 @@ void _evas_render2_wait(Eo *eo_e);
* NOTE: Define REND_DBG 1 in evas_private.h to enable debugging. Don't define
* it here since the flag is used on other places too. */
/* #define STDOUT_DBG 1 */
#define STDOUT_DBG 1
#ifdef REND_DBG
static FILE *dbf = NULL;
@ -42,24 +42,20 @@ rend_dbg(const char *txt)
fputs(txt, dbf);
fflush(dbf);
}
#define RD(args...) \
{ \
char __tmpbuf[4096]; \
\
#define RD(xxxx, args...) \
do { \
char __tmpbuf[4096]; int __tmpi; \
if (xxxx) { \
for (__tmpi = 0; __tmpi < xxxx * 2; __tmpi++) \
__tmpbuf[__tmpi] = ' '; \
__tmpbuf[__tmpi] = 0; \
rend_dbg(__tmpbuf); \
} \
snprintf(__tmpbuf, sizeof(__tmpbuf), ##args); \
rend_dbg(__tmpbuf); \
}
#define RDI(xxxx) \
{ \
char __tmpbuf[4096]; int __tmpi; \
for (__tmpi = 0; __tmpi < xxxx; __tmpi++) \
__tmpbuf[__tmpi] = ' '; \
__tmpbuf[__tmpi] = 0; \
rend_dbg(__tmpbuf); \
}
} while (0)
#else
#define RD(args...)
#define RDI(x)
#define RD(args...) do {} while(0)
#endif
#define OBJ_ARRAY_PUSH(array, obj) \
@ -336,7 +332,9 @@ static inline Eina_Bool
_evas_render_object_is_mask(Evas_Object_Protected_Data *obj)
{
if (!obj) return EINA_FALSE;
return (obj->mask->is_mask && obj->clip.clipees);
if (obj->mask->is_mask && obj->clip.clipees)
return EINA_TRUE;
return EINA_FALSE;
}
static void
@ -349,7 +347,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
unsigned int i;
Evas_Object *eo_obj;
RD(" [--- PHASE 1 DIRECT\n");
RD(0, " [--- PHASE 1 DIRECT\n");
for (i = 0; i < active_objects->count; i++)
{
Evas_Object_Protected_Data *obj =
@ -376,12 +374,12 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
eina_array_data_get(render_objects, i);
eo_obj = obj->object;
RD(" OBJ [%p", obj);
RD(0, " OBJ [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
RD(0, ":%s", obj->name);
}
RD("] changed %i\n", obj->changed);
RD(0, "] changed %i\n", obj->changed);
if (obj->changed)
{
@ -409,7 +407,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
_evas_mask_redraw_set(e, obj);
}
RD(" pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n",
RD(0, " pre-render-done smart:%p|%p [%p, %i] | [%p, %i] has_map:%i had_map:%i\n",
obj->smart.smart,
evas_object_smart_members_get_direct(eo_obj),
obj->map->cur.map, obj->map->cur.usemap,
@ -420,7 +418,7 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
((_evas_render_has_map(eo_obj, obj) ||
(obj->changed_src_visible))))
{
RD(" has map + smart\n");
RD(0, " has map + smart\n");
_evas_render_prev_cur_clip_cache_add(e, obj);
}
}
@ -435,12 +433,12 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
(evas_object_is_opaque(eo_obj, obj))) &&
(!evas_object_is_source_invisible(eo_obj, obj)))
{
RD(" rect del\n");
RD(0, " rect del\n");
_evas_render_cur_clip_cache_del(e, obj);
}
}
}
RD(" ---]\n");
RD(0, " ---]\n");
}
static Eina_Bool
@ -483,13 +481,11 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
}
obj->is_active = is_active;
RDI(level);
RD(" [--- PROCESS [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
}
RD("] '%s' active = %i, del = %i | %i %i %ix%i\n", obj->type, is_active, obj->delete_me, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
#ifdef REND_DBG
RD(level, "[--- PROCESS [%p", obj);
if (obj->name) RD(0, ":%s", obj->name);
RD(0, "] '%s' active = %i, del = %i | %i %i %ix%i\n", obj->type, is_active, obj->delete_me, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
#endif
if ((!mapped_parent) && ((is_active) || (obj->delete_me != 0)))
OBJ_ARRAY_PUSH(active_objects, obj);
@ -497,10 +493,9 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
#ifdef REND_DBG
if (!is_active)
{
RDI(level);
RD(" [%p", obj);
if (obj->name) RD(":%s", obj->name);
RD("] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj->cur->visible, obj->cur->cache.clip.visible, obj->cur->cache.clip.a, obj->func->is_visible);
RD(level, "[%p", obj);
if (obj->name) RD(0, ":%s", obj->name);
RD(0, "] vis: %i, cache.clip.vis: %i cache.clip.a: %i [%p]\n", obj->cur->visible, obj->cur->cache.clip.visible, obj->cur->cache.clip.a, obj->func->is_visible);
}
#endif
@ -520,8 +515,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
if (map)
{
RDI(level);
RD(" obj mapped\n");
RD(level, " obj mapped\n");
if (!hmap && obj->cur->clipper)
{
// Fix some bad clipping issues before an evas map animation starts
@ -566,8 +560,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
}
else if (hmap)
{
RDI(level);
RD(" had map - restack objs\n");
RD(level, " had map - restack objs\n");
// OBJ_ARRAY_PUSH(restack_objects, obj);
_evas_render_prev_cur_clip_cache_add(e, obj);
if (obj->changed)
@ -596,8 +589,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
{
if (obj->is_smart)
{
RDI(level);
RD(" changed + smart - render ok\n");
RD(level, " changed + smart - render ok\n");
OBJ_ARRAY_PUSH(render_objects, obj);
if (!is_active && obj->proxy->proxies) src_changed = EINA_TRUE;
@ -626,8 +618,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
{
if (is_active)
{
RDI(level);
RD(" relevant + active\n");
RD(level, " relevant + active\n");
if (obj->restack)
OBJ_ARRAY_PUSH(restack_objects, obj);
else
@ -644,8 +635,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
evas_object_was_visible(eo_obj, obj))
evas_object_cur_prev(eo_obj);
RDI(level);
RD(" skip - not smart, not active or clippees or not relevant\n");
RD(level, " skip - not smart, not active or clippees or not relevant\n");
}
}
else if (is_active && _evas_render_object_is_mask(obj) &&
@ -658,21 +648,18 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
OBJ_ARRAY_PUSH(render_objects, obj);
obj->render_pre = EINA_TRUE;
}
RDI(level);
RD(" relevant + active: clipper image\n");
RD(level, " relevant + active: clipper image\n");
}
else
{
RDI(level);
RD(" skip - not smart, not active or clippees or not relevant\n");
RD(level, " skip - not smart, not active or clippees or not relevant\n");
}
}
}
else
{
/* not changed */
RD(" not changed... [%i] -> (%i %i %p %i) [%i]\n",
RD(level, " not changed... [%i] -> (%i %i %p %i) [%i]\n",
evas_object_is_visible(eo_obj, obj),
obj->cur->visible, obj->cur->cache.clip.visible, obj->smart.smart,
obj->cur->cache.clip.a, evas_object_was_visible(eo_obj, obj));
@ -683,8 +670,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
{
if (obj->is_smart)
{
RDI(level);
RD(" smart + visible/was visible + not clip\n");
RD(level, " smart + visible/was visible + not clip\n");
OBJ_ARRAY_PUSH(render_objects, obj);
obj->render_pre = EINA_TRUE;
Evas_Object_Protected_Data *obj2;
@ -709,37 +695,32 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
if (evas_object_is_opaque(eo_obj, obj) &&
evas_object_is_visible(eo_obj, obj))
{
RDI(level);
RD(" opaque + visible\n");
RD(level, " opaque + visible\n");
OBJ_ARRAY_PUSH(render_objects, obj);
obj->rect_del = EINA_TRUE;
}
else if (evas_object_is_visible(eo_obj, obj))
{
RDI(level);
RD(" visible\n");
RD(level, " visible\n");
OBJ_ARRAY_PUSH(render_objects, obj);
obj->render_pre = EINA_TRUE;
}
else
{
RDI(level);
RD(" skip\n");
RD(level, " skip\n");
}
}
}
else if (is_active && _evas_render_object_is_mask(obj) &&
evas_object_is_visible(eo_obj, obj))
{
RDI(level);
RD(" visible clipper image\n");
RD(level, " visible clipper image\n");
OBJ_ARRAY_PUSH(render_objects, obj);
obj->render_pre = EINA_TRUE;
}
/* else if (obj->smart.smart)
{
RDI(level);
RD(" smart + mot visible/was visible\n");
RD(level, " smart + mot visible/was visible\n");
OBJ_ARRAY_PUSH(render_objects, obj);
obj->render_pre = 1;
EINA_INLIST_FOREACH (evas_object_smart_members_get_direct(eo_obj),
@ -758,8 +739,7 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
*/
}
if (!is_active) obj->restack = EINA_FALSE;
RDI(level);
RD(" ---]\n");
RD(level, "---]\n");
return clean_them;
}
@ -774,7 +754,7 @@ _evas_render_phase1_process(Evas_Public_Data *e,
Evas_Layer *lay;
Eina_Bool clean_them = EINA_FALSE;
RD(" [--- PHASE 1\n");
RD(0, " [--- PHASE 1\n");
EINA_INLIST_FOREACH(e->layers, lay)
{
Evas_Object_Protected_Data *obj;
@ -783,10 +763,10 @@ _evas_render_phase1_process(Evas_Public_Data *e,
{
clean_them |= _evas_render_phase1_object_process
(e, obj->object, active_objects, restack_objects, delete_objects,
render_objects, 0, redraw_all, EINA_FALSE, EINA_FALSE, 1);
render_objects, 0, redraw_all, EINA_FALSE, EINA_FALSE, 2);
}
}
RD(" ---]\n");
RD(0, " ---]\n");
return clean_them;
}
@ -878,12 +858,12 @@ pending_change(void *data, void *gdata EINA_UNUSED)
if (obj->delete_me) return EINA_FALSE;
if (obj->pre_render_done)
{
RD(" OBJ [%p", obj);
RD(0, " OBJ [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
RD(0, ":%s", obj->name);
}
RD("] pending change %i -> 0, pre %i\n", obj->changed, obj->pre_render_done);
RD(0, "] pending change %i -> 0, pre %i\n", obj->changed, obj->pre_render_done);
obj->func->render_post(eo_obj, obj, obj->private_data);
obj->pre_render_done = EINA_FALSE;
evas_object_change_reset(eo_obj);
@ -1231,22 +1211,35 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
evas_object_clip_recalc(obj);
RDI(level);
RD(" { evas_render_mapped(%p, %p", e, obj);
if (obj->name)
#ifdef REND_DBG
RD(level, "{\n");
RD(level, " evas_render_mapped(evas:%p, obj:%p", e, obj);
if (obj->name) RD(0, ":\"%s\"", obj->name);
RD(0, ", ctx:%p, sfc:%p, offset:%i,%i, %s, use_mapped_ctx:%d, %s)\n", context, surface, off_x, off_y,
mapped ? "mapped" : "normal", use_mapped_ctx, do_async ? "async" : "sync");
RD(level, " obj: '%s' %s", obj->type, obj->is_smart ? "(smart) " : "");
if (obj->name) RD(0, "\"%s\"\n", obj->name);
else RD(0, "\n");
if (obj->cur->clipper)
{
RD(":%s", obj->name);
RD(level, " clipper: '%s'%s%s %p (mask %p) %d,%d %dx%d\n",
obj->cur->clipper->type,
obj->cur->clipper->name ? ":" : "",
obj->cur->clipper->name ? obj->cur->clipper->name : "",
obj->cur->clipper, obj->clip.mask,
obj->cur->clipper->cur->geometry.x, obj->cur->clipper->cur->geometry.y,
obj->cur->clipper->cur->geometry.w, obj->cur->clipper->cur->geometry.h);
}
RD(", %p, %p, %i, %i, %i, %i)\n", context, surface, off_x, off_y, mapped, level);
#endif
if (mapped)
{
if (_evas_render_object_is_mask(obj))
{
RD(level, " is mask: redraw:%d sfc:%p\n", obj->mask->redraw, obj->mask->surface);
if (!use_mapped_ctx || (surface != obj->mask->surface))
{
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
// else don't return: draw mask in its surface
@ -1256,8 +1249,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
if ((!evas_object_is_visible(eo_obj, obj)) || (obj->clip.clipees)
|| (obj->cur->have_clipees))
{
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
}
@ -1266,8 +1258,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
if (!evas_object_is_proxy_visible(eo_obj, obj) ||
(obj->clip.clipees) || (obj->cur->have_clipees))
{
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
}
@ -1276,17 +1267,17 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
(_evas_render_can_render(eo_obj, obj))))
))
{
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
// set render_pre - for child objs that may not have gotten it.
obj->pre_render_done = EINA_TRUE;
RD(" Hasmap: %p (%d) %p %d -> %d\n",obj->func->can_map,
RD(level, " hasmap: %s [can_map:%p (%d)] cur.map:%p cur.usemap:%d\n",
_evas_render_has_map(eo_obj, obj) ? "yes" : "no",
obj->func->can_map,
obj->func->can_map ? obj->func->can_map(eo_obj): -1,
obj->map->cur.map, obj->map->cur.usemap,
_evas_render_has_map(eo_obj, obj));
obj->map->cur.map, obj->map->cur.usemap);
if (_evas_render_has_map(eo_obj, obj))
{
int sw, sh;
@ -1296,12 +1287,10 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
sw = obj->cur->geometry.w;
sh = obj->cur->geometry.h;
RDI(level);
RD(" mapped obj: %ix%i\n", sw, sh);
RD(level, " surf size: %ix%i\n", sw, sh);
if ((sw <= 0) || (sh <= 0))
{
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
@ -1312,8 +1301,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
if ((obj->map->surface_w != sw) ||
(obj->map->surface_h != sh))
{
RDI(level);
RD(" new surf: %ix%i\n", sw, sh);
RD(level, " new surf: %ix%i\n", sw, sh);
EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, map_write)
{
obj->layer->evas->engine.func->image_map_surface_free
@ -1338,8 +1326,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
}
EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
RDI(level);
RD(" fisrt surf: %ix%i\n", sw, sh);
RD(level, " first surf: %ix%i\n", sw, sh);
changed = EINA_TRUE;
}
@ -1359,8 +1346,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
{
int off_x2, off_y2;
RDI(level);
RD(" children redraw\n");
RD(level, " children redraw\n");
// FIXME: calculate "changes" within map surface and only clear
// and re-render those
if (obj->map->cur.map->alpha)
@ -1428,8 +1414,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
rendered = EINA_TRUE;
}
RDI(level);
RD(" draw map\n");
RD(level, " draw map\n");
if (rendered)
{
@ -1468,8 +1453,11 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
{
// This path can be hit when we're multiplying masks on top of each other...
Evas_Object_Protected_Data *mask = obj->cur->clipper;
RD(level, " has mask: [%p%s%s] redraw:%d sfc:%p\n",
mask, mask->name?":":"", mask->name?mask->name:"",
mask->mask->redraw, mask->mask->surface);
if (mask->mask->redraw || !mask->mask->surface)
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask);
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask, level + 1);
if (mask->mask->surface)
{
@ -1521,7 +1509,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
// (e->engine.data.output, obj->map->surface);
// obj->map->surface = NULL;
}
else
else // not "has map"
{
#if 0
if (0 && obj->cur->cached_surface)
@ -1533,12 +1521,14 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
if (mapped)
{
RDI(level);
RD(" draw child of mapped obj\n");
RD(level, " draw child of mapped obj: '%s'%s\n",
obj->type, obj->is_smart ? " (smart)" : "");
if (use_mapped_ctx)
ctx = context;
else
ctx = e->engine.func->context_new(e->engine.data.output);
if (obj->is_smart)
{
/* Clipper masks */
@ -1550,8 +1540,11 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
evas_object_clip_recalc(obj);
RD(level, " has mask: [%p%s%s] redraw:%d sfc:%p\n",
mask, mask->name?":":"", mask->name?mask->name:"",
mask->mask->redraw, mask->mask->surface);
if (mask->mask->redraw || !mask->mask->surface)
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask);
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask, level + 1);
if (mask->mask->surface)
{
@ -1584,7 +1577,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
/* We aren't sure this object will be rendered by
normal(not proxy) drawing after, we reset this
only in case of normal drawing. For optmizing,
push this object in an array then reset them
push this object in an array then reset them
in the end of the rendering.*/
if (!proxy_render_data)
evas_object_change_reset(obj2->object);
@ -1592,8 +1585,6 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
}
else
{
RDI(level);
if (obj->cur->clipper)
{
if (_evas_render_has_map(eo_obj, obj) ||
@ -1608,8 +1599,11 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
{
// This path can be hit when we're multiplying masks on top of each other...
Evas_Object_Protected_Data *mask = obj->cur->clipper;
RD(level, " has mask: [%p%s%s] redraw:%d sfc:%p\n",
mask, mask->name?":":"", mask->name?mask->name:"",
mask->mask->redraw, mask->mask->surface);
if (mask->mask->redraw || !mask->mask->surface)
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask);
evas_render_mask_subrender(obj->layer->evas, mask, obj->clip.prev_mask, level + 1);
if (mask->mask->surface)
{
@ -1671,16 +1665,14 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
ecx, ecy, ecw, ech);
}
RDI(level);
RD(" draw normal obj\n");
RD(level, " draw normal obj\n");
obj->func->render(eo_obj, obj, obj->private_data,
e->engine.data.output, context, surface,
off_x, off_y, do_async);
}
if (obj->changed_map) clean_them = EINA_TRUE;
}
RDI(level);
RD(" }\n");
RD(level, "}\n");
return clean_them;
}
@ -1769,7 +1761,8 @@ evas_render_proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Evas_Object *eo_
void
evas_render_mask_subrender(Evas_Public_Data *evas,
Evas_Object_Protected_Data *mask,
Evas_Object_Protected_Data *prev_mask)
Evas_Object_Protected_Data *prev_mask,
int level)
{
int x, y, w, h, r, g, b, a;
void *ctx;
@ -1781,6 +1774,8 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
return;
}
RD(level, "evas_render_mask_subrender(%p, prev: %p)\n", mask, prev_mask);
x = mask->cur->geometry.x;
y = mask->cur->geometry.y;
w = mask->cur->geometry.w;
@ -1816,7 +1811,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
{
// Note: This is preventive code. Never seen it happen.
WRN("Mask render order may be invalid");
evas_render_mask_subrender(evas, prev_mask, prev_mask->clip.prev_mask);
evas_render_mask_subrender(evas, prev_mask, prev_mask->clip.prev_mask, level + 1);
}
}
@ -1859,7 +1854,7 @@ evas_render_mask_subrender(Evas_Public_Data *evas,
}
evas_render_mapped(evas, mask->object, mask, ctx, mdata->surface,
-x, -y, 1, 0, 0, evas->output.w, evas->output.h,
NULL, 1, EINA_TRUE, EINA_FALSE);
NULL, level, EINA_TRUE, EINA_FALSE);
ENFN->context_free(ENDT, ctx);
/* BEGIN HACK */
@ -2082,7 +2077,7 @@ evas_render_updates_internal(Evas *eo_e,
#endif
evas_call_smarts_calculate(eo_e);
RD("[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h);
RD(0, "[--- RENDER EVAS (size: %ix%i)\n", e->viewport.w, e->viewport.h);
_cb_always_call(eo_e, EVAS_CALLBACK_RENDER_PRE, NULL);
@ -2266,7 +2261,7 @@ evas_render_updates_internal(Evas *eo_e,
int off_x, off_y;
Render_Updates *ru;
RD(" [--- UPDATE %i %i %ix%i\n", ux, uy, uw, uh);
RD(0, " [--- UPDATE %i %i %ix%i\n", ux, uy, uw, uh);
if (do_async)
{
ru = malloc(sizeof(*ru));
@ -2334,12 +2329,12 @@ evas_render_updates_internal(Evas *eo_e,
eo_obj = obj->object;
/* if it's in our outpout rect and it doesn't clip anything */
RD(" OBJ: [%p", obj);
RD(0, " OBJ: [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
RD(0, ":%s", obj->name);
}
RD("] '%s' %i %i %ix%i\n", obj->type, obj->cur->geometry.x, obj->cur->geometry.y, obj->cur->geometry.w, obj->cur->geometry.h);
RD(0, "] '%s' %i %i %ix%i\n", 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 - fx, uy - fy, uw, uh) ||
(obj->is_smart)) &&
(!obj->clip.clipees) &&
@ -2351,7 +2346,7 @@ evas_render_updates_internal(Evas *eo_e,
{
int x, y, w, h;
RD(" DRAW (vis: %i, a: %i, clipees: %p\n", obj->cur->visible, obj->cur->color.a, obj->clip.clipees);
RD(0, " DRAW (vis: %i, a: %i, clipees: %p)\n", obj->cur->visible, obj->cur->color.a, obj->clip.clipees);
if ((e->temporary_objects.count > offset) &&
(eina_array_data_get(&e->temporary_objects, offset) == obj))
offset++;
@ -2384,7 +2379,7 @@ evas_render_updates_internal(Evas *eo_e,
if (mask)
{
if (mask->mask->redraw || !mask->mask->surface)
evas_render_mask_subrender(obj->layer->evas, mask, prev_mask);
evas_render_mask_subrender(obj->layer->evas, mask, prev_mask, 4);
if (mask->mask->surface)
{
@ -2411,7 +2406,7 @@ evas_render_updates_internal(Evas *eo_e,
surface, off_x + fx,
off_y + fy, 0,
cx, cy, cw, ch,
NULL, 1,
NULL, 4,
EINA_FALSE,
do_async);
e->engine.func->context_cutout_clear(e->engine.data.output,
@ -2436,7 +2431,7 @@ evas_render_updates_internal(Evas *eo_e,
/* free obscuring objects list */
OBJS_ARRAY_CLEAN(&e->temporary_objects);
RD(" ---]\n");
RD(0, " ---]\n");
}
if (do_async)
@ -2467,25 +2462,20 @@ evas_render_updates_internal(Evas *eo_e,
}
/* and do a post render pass */
if (e->active_objects.count) RD(0, " [--- POST RENDER\n");
for (i = 0; i < e->active_objects.count; ++i)
{
obj = eina_array_data_get(&e->active_objects, i);
eo_obj = obj->object;
obj->pre_render_done = EINA_FALSE;
RD(" OBJ [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
}
RD("] post... %i %i\n", obj->changed, do_draw);
RD(0, " OBJ [%p", obj);
if (obj->name) RD(0, ":%s", obj->name);
RD(0, "] changed:%i do_draw:%i (%s)\n", obj->changed, do_draw, obj->type);
if ((clean_them) || (obj->changed && do_draw))
{
RD(" OBJ [%p", obj);
if (obj->name)
{
RD(":%s", obj->name);
}
RD("] post... func\n");
RD(0, " OBJ [%p", obj);
if (obj->name) RD(0, ":%s", obj->name);
RD(0, "] render_post()\n");
obj->func->render_post(eo_obj, obj, obj->private_data);
obj->restack = EINA_FALSE;
evas_object_change_reset(eo_obj);
@ -2498,6 +2488,8 @@ evas_render_updates_internal(Evas *eo_e,
else if (obj->delete_me != 0) obj->delete_me++;
*/
}
if (e->active_objects.count) RD(0, " ---]\n");
/* free our obscuring object list */
OBJS_ARRAY_CLEAN(&e->obscuring_objects);
@ -2606,7 +2598,7 @@ evas_render_updates_internal(Evas *eo_e,
_cb_always_call(eo_e, EVAS_CALLBACK_RENDER_POST, e->render.updates ? &post : NULL);
}
RD("---]\n");
RD(0, "---]\n");
#ifdef EVAS_RENDER_DEBUG_TIMING
_accumulate_time(start_time, do_async ? &async_accumulator : &sync_accumulator);

View File

@ -20,7 +20,7 @@
#define RENDER_METHOD_INVALID 0x00000000
/* #define REND_DBG 1 */
//#define REND_DBG 1
typedef struct _Evas_Layer Evas_Layer;
typedef struct _Evas_Size Evas_Size;
@ -1737,7 +1737,7 @@ void evas_render_invalidate(Evas *e);
void evas_render_object_recalc(Evas_Object *obj);
void evas_render_proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Evas_Object *eo_proxy,
Evas_Object_Protected_Data *proxy_obj, Eina_Bool do_async);
void evas_render_mask_subrender(Evas_Public_Data *e, Evas_Object_Protected_Data *mask, Evas_Object_Protected_Data *prev_mask);
void evas_render_mask_subrender(Evas_Public_Data *e, Evas_Object_Protected_Data *mask, Evas_Object_Protected_Data *prev_mask, int level);
Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord *mx, Evas_Coord *my, int grab);