Eina_List *rotation_list;
Eina_Bool angle_change_done;
Eina_Bool wait_update;
+ Eina_Bool hint_fetch;
uint32_t serial;
};
{
ec->e.state.rot.pending_show = 0;
evas_object_show(ec->frame); // e_client_show(ec);
+ e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
}
ec->e.state.rot.ang.next = -1;
ec->e.state.rot.wait_for_done = 0;
{
ec->e.state.rot.pending_show = 0;
if (!e_object_is_del(E_OBJECT(ec)))
- evas_object_show(ec->frame); // e_client_show(ec);
+ {
+ evas_object_show(ec->frame); // e_client_show(ec);
+ e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+ }
}
TRACE_DS_END();
ev->ec->icccm.name ? ev->ec->icccm.name : "", ev->ec);
e_pixmap_image_clear(ev->ec->pixmap, EINA_TRUE);
- e_pixmap_resource_set(ev->ec->pixmap, NULL);
}
else if (rot->wait_update)
{
{
ev->ec->e.state.rot.pending_show = 0;
evas_object_show(ev->ec->frame);
-
+ e_comp_object_damage(ev->ec->frame, 0, 0, ev->ec->w, ev->ec->h);
}
rot->wait_update = EINA_FALSE;
}
{
DBG("Buffer Changed: force add update list to send frame until pending show");
/* consider e_pixmap_image_clear() instead of update_add() */
- e_comp_client_post_update_add(ev->ec);
+ e_pixmap_image_clear(ev->ec->pixmap, EINA_TRUE);
}
end:
}
end_fetch_rot:
- if (ec->e.fetch.rot.need_rotation)
+ rot->hint_fetch = 1;
+ if ((ec->new_client) && (ec->e.state.rot.pending_show))
+ {
+ ec->e.state.rot.pending_show = 0;
+ evas_object_show(ec->frame);
+ if (!ec->changes.rotation)
+ e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
+ }
+ else if ((evas_object_visible_get(ec->frame) && (ec->e.fetch.rot.need_rotation)))
{
DBG("Rotation Zone Set: Fetch Hint");
- _e_client_rotation_zone_set(ec->zone, ec);
+ _e_client_rotation_zone_set(ec->zone, NULL);
}
if (ec->e.fetch.rot.need_rotation)
static Eina_Bool
_rot_intercept_hook_show_helper(void *d EINA_UNUSED, E_Client *ec)
{
+ Policy_Ext_Rotation *rot;
+
+ rot = _policy_ext_rotation_get(ec);
+ if (!rot->hint_fetch)
+ {
+ /* need to fetch rotation hint. */
+ ec->e.state.rot.pending_show = 1;
+ EC_CHANGED(ec);
+ return EINA_FALSE;
+ }
+
if (ec->e.state.rot.pending_show)
return EINA_FALSE;
if (ec->changes.rotation)
{
EDBG(ec, "Postpone show: ang %d", ec->e.state.rot.ang.next);
- /* consider e_pixmap_image_clear() instead of update_add() */
- e_comp_client_post_update_add(ec);
+ e_pixmap_image_clear(ec->pixmap, 1);
ec->e.state.rot.pending_show = 1;
/* to be invoked 'eval_end' */
EC_CHANGED(ec);