Eina_Bool is_above_rot_pending = EINA_FALSE;
Eina_Bool is_launching_effect = EINA_FALSE;
Eina_Bool is_vis_on_skip = EINA_FALSE;
+ Eina_Bool is_display_off = EINA_FALSE;
int x = 0, y = 0, w = 0, h = 0;
const int edge = 1;
}
else
{
+ is_display_off = EINA_TRUE;
_e_client_hook_call(E_CLIENT_HOOK_CAL_VISIBILITY_DISPLAY_OFF, NULL);
}
/* TODO: need to check whether window intersects with entire screen, not zone. */
/* if (!E_INTERSECTS(ec->x, ec->y, ec->w, ec->h, zone->x, zone->y, zone->w, zone->h)) continue; */
+ if (is_display_off)
+ {
+ if ((ec->visibility.obscured == E_VISIBILITY_FULLY_OBSCURED) &&
+ (ec->visibility.last_sent_type != E_VISIBILITY_FULLY_OBSCURED))
+ {
+ ec->visibility.changed = 1;
+ }
+ }
+
if (!e_config->calc_vis_without_effect)
{
if ((e_comp_object_is_animating(ec->frame)) ||
ec->visibility.opaque = -1;
ec->visibility.changed = 0;
ec->visibility.skip = 0;
+ ec->visibility.last_sent_type = E_VISIBILITY_UNKNOWN;
ec->transform.zoom = 1.0;
ec->transform.angle = 0.0;
{
ELOGF("POL", "SEND pre-unobscured visibility event", ec->pixmap, ec);
_e_vis_client_send_pre_visibility_event(ec);
- ec->visibility.changed = 1;
}
_e_vis_client_prepare_foreground_signal_emit(vc);
int sent_vis = E_VISIBILITY_UNKNOWN;
EINA_SAFETY_ON_TRUE_RETURN(vis == E_VISIBILITY_UNKNOWN);
+ if (ec && (ec->visibility.last_sent_type == vis))
+ return;
win = e_client_util_win_get(ec);
if (vis == E_VISIBILITY_PRE_UNOBSCURED)
{
if (ver >= 5)
- tizen_visibility_send_changed(res_tzvis, vis, 0);
+ {
+ ec->visibility.last_sent_type = vis;
+ tizen_visibility_send_changed(res_tzvis, vis, 0);
+ }
else
sent_vis = -2;
}
else
{
if ((vis >= E_VISIBILITY_UNOBSCURED) && (vis <= E_VISIBILITY_FULLY_OBSCURED))
- tizen_visibility_send_notify(res_tzvis, vis);
+ {
+ ec->visibility.last_sent_type = vis;
+ tizen_visibility_send_notify(res_tzvis, vis);
+ }
else
sent_vis = -3;
}