Evas_Object_Protected_Data *source;
void *ctx;
int w, h;
- Eina_Bool src_redraw = EINA_FALSE;
if (!eo_source) return;
source = eo_data_scope_get(eo_source, EVAS_OBJ_CLASS);
if (!proxy_write->surface) goto end;
proxy_write->w = w;
proxy_write->h = h;
- src_redraw = EINA_TRUE;
}
- if (!src_redraw)
- src_redraw = evas_object_smart_changed_get(eo_source);
-
- if (src_redraw)
- {
- ctx = e->engine.func->context_new(e->engine.data.output);
- e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0,
- 0, 0);
- e->engine.func->context_render_op_set(e->engine.data.output, ctx,
- EVAS_RENDER_COPY);
- e->engine.func->rectangle_draw(e->engine.data.output, ctx,
- proxy_write->surface, 0, 0, w, h,
- do_async);
- e->engine.func->context_free(e->engine.data.output, ctx);
-
- ctx = e->engine.func->context_new(e->engine.data.output);
-
- Eina_Bool source_clip;
- eo_do(eo_proxy, evas_obj_image_source_clip_get(&source_clip));
-
- Evas_Proxy_Render_Data proxy_render_data = {
- .eo_proxy = eo_proxy,
- .proxy_obj = proxy_obj,
- .eo_src = eo_source,
- .source_clip = source_clip
- };
- evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
- -source->cur->geometry.x,
- -source->cur->geometry.y,
- 1, 0, 0, e->output.w, e->output.h,
- &proxy_render_data
+ ctx = e->engine.func->context_new(e->engine.data.output);
+ e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0,
+ 0, 0);
+ e->engine.func->context_render_op_set(e->engine.data.output, ctx,
+ EVAS_RENDER_COPY);
+ e->engine.func->rectangle_draw(e->engine.data.output, ctx,
+ proxy_write->surface, 0, 0, w, h,
+ do_async);
+ e->engine.func->context_free(e->engine.data.output, ctx);
+
+ ctx = e->engine.func->context_new(e->engine.data.output);
+
+ Eina_Bool source_clip;
+ eo_do(eo_proxy, evas_obj_image_source_clip_get(&source_clip));
+
+ Evas_Proxy_Render_Data proxy_render_data = {
+ .eo_proxy = eo_proxy,
+ .proxy_obj = proxy_obj,
+ .eo_src = eo_source,
+ .source_clip = source_clip
+ };
+ evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
+ -source->cur->geometry.x,
+ -source->cur->geometry.y,
+ 1, 0, 0, e->output.w, e->output.h,
+ &proxy_render_data
#ifdef REND_DBG
- , 1
+ , 1
#endif
- , do_async);
+ , do_async);
- e->engine.func->context_free(e->engine.data.output, ctx);
- }
+ e->engine.func->context_free(e->engine.data.output, ctx);
proxy_write->surface = e->engine.func->image_dirty_region
- (e->engine.data.output, proxy_write->surface, 0, 0, w, h);
+ (e->engine.data.output, proxy_write->surface, 0, 0, w, h);
/*
ctx = e->engine.func->context_new(e->engine.data.output);
if (eo_isa(source, EVAS_OBJ_SMART_CLASS))
unsigned int i;
Eina_List *l;
Evas_Object *eo_proxy;
+ Eina_Bool changed;
RD(" [--- PHASE 1 DIRECT\n");
for (i = 0; i < active_objects->count; i++)
{
- Evas_Object_Protected_Data *obj = eina_array_data_get(active_objects, i);
+ Evas_Object_Protected_Data *obj =
+ eina_array_data_get(active_objects, i);
- if (obj->changed)
+ if (obj->changed) evas_object_clip_recalc(obj);
+ if (!obj->proxy->proxies) continue;
+
+ if (obj->smart.smart)
+ changed = evas_object_smart_changed_get(obj->object);
+ else changed = obj->changed;
+
+ if (changed)
{
/* Flag need redraw on proxy too */
- evas_object_clip_recalc(obj);
EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy)
{
- Evas_Object_Protected_Data *proxy;
-
- proxy = eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS);
-
- EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, proxy->proxy, Evas_Object_Proxy_Data, proxy_write)
- proxy_write->redraw = EINA_TRUE;
- EINA_COW_WRITE_END(evas_object_proxy_cow, proxy->proxy, proxy_write);
+ Evas_Object_Protected_Data *proxy;
+ proxy = eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS);
+
+ EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, proxy->proxy,
+ Evas_Object_Proxy_Data, proxy_write)
+ proxy_write->redraw = EINA_TRUE;
+ EINA_COW_WRITE_END(evas_object_proxy_cow, proxy->proxy,
+ proxy_write);
}
}
}