tbm_surface_h tbm_surface;
E_Comp_Image_Filter image_filter;
Eina_Bool set_mouse_callbacks;
+
+ int render_update_lock;
} E_Comp_Object;
typedef struct _E_Input_Rect_Data
[E_COMP_OBJECT_HOOK_LAYER_SET] = NULL,
[E_COMP_OBJECT_HOOK_MASK_OBJECT_SET] = NULL,
[E_COMP_OBJECT_HOOK_MASK_OBJECT_UNSET] = NULL,
+ [E_COMP_OBJECT_HOOK_RENDER_UPDATE_LOCK_SET] = NULL,
};
#ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_
(hookpoint != E_COMP_OBJECT_HOOK_LAYER_SET) &&
(hookpoint != E_COMP_OBJECT_HOOK_RESTACK) &&
(hookpoint != E_COMP_OBJECT_HOOK_MASK_OBJECT_SET) &&
- (hookpoint != E_COMP_OBJECT_HOOK_MASK_OBJECT_UNSET))
+ (hookpoint != E_COMP_OBJECT_HOOK_MASK_OBJECT_UNSET) &&
+ (hookpoint != E_COMP_OBJECT_HOOK_RENDER_UPDATE_LOCK_SET))
{
return ret;
}
API_ENTRY;
if (cw->ec->input_only || (!cw->updates) || (!cw->redirected)) return;
+ if (cw->render_update_lock) return;
if (e_object_is_del(E_OBJECT(cw->ec)))
CRI("CAN'T RENDER A DELETED CLIENT!!! ec:%p", cw->ec);
if (!e_pixmap_usable_get(cw->ec->pixmap)) return;
return EINA_TRUE;
}
+
+EINTERN Eina_Bool
+e_comp_object_render_update_lock(Evas_Object *obj)
+{
+ API_ENTRY EINA_FALSE;
+
+ cw->render_update_lock++;
+
+ if (cw->render_update_lock == 1)
+ {
+ _e_comp_object_hook_call(E_COMP_OBJECT_HOOK_RENDER_UPDATE_LOCK_SET, cw->ec);
+ e_comp_object_render_update_del(obj);
+ }
+
+ return EINA_TRUE;
+}
+
+EINTERN void
+e_comp_object_render_update_unlock(Evas_Object *obj)
+{
+ API_ENTRY;
+
+ if (cw->render_update_lock == 0)
+ return;
+
+ cw->render_update_lock--;
+
+ if (cw->render_update_lock == 0)
+ e_comp_object_render_update_add(obj);
+}
+
+EINTERN Eina_Bool
+e_comp_object_render_update_lock_get(Evas_Object *obj)
+{
+ API_ENTRY EINA_FALSE;
+
+ if (cw->render_update_lock > 0)
+ return EINA_TRUE;
+
+ return EINA_FALSE;
+}
E_COMP_OBJECT_HOOK_LAYER_SET,
E_COMP_OBJECT_HOOK_MASK_OBJECT_SET,
E_COMP_OBJECT_HOOK_MASK_OBJECT_UNSET,
+ E_COMP_OBJECT_HOOK_RENDER_UPDATE_LOCK_SET,
E_COMP_OBJECT_HOOK_LAST,
} E_Comp_Object_Hook_Point;
// get E_Map from evas_object. it must be freed after used.
E_API E_Map *e_comp_object_map_get(const Evas_Object *obj);
E_API Eina_Bool e_comp_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled);
+
+EINTERN Eina_Bool e_comp_object_render_update_lock(Evas_Object *obj);
+EINTERN void e_comp_object_render_update_unlock(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_render_update_lock_get(Evas_Object *obj);
#endif
#endif