Eina_Bool panel;
Eina_Bool showing;
- Eina_Bool wait_update; /* wait update state for individual input panel surface */
Eina_Bool need_show;
};
e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
}
-static Eina_Bool
-_ips_cb_buffer_change(void *data, int type, void *event)
-{
- E_Event_Client *ev = event;
- E_Input_Panel_Surface *ips = data;
-
- if (!ips || !ev)
- goto end;
-
- if (ips->ec != ev->ec)
- goto end;
-
- if (!ips->wait_update)
- goto clean;
-
- LOGD("IPS::BUFFER::CHANGED::DEFER_SHOW\n");
-
- if (_e_input_panel_is_effect_running(ips->ec))
- ips->need_show = EINA_TRUE;
- else
- _ips_show(ips->ec);
-
- ips->wait_update = EINA_FALSE;
-
-clean:
- E_FREE_FUNC(ips->eh.buf_change, ecore_event_handler_del);
-
-end:
- return ECORE_CALLBACK_PASS_ON;
-}
-
static void
_e_input_panel_surface_visible_update(E_Input_Panel_Surface *ips)
{
if (panel_show_need_rerun)
e_input_panel_show_need_rerun_set(EINA_FALSE);
- if (_TV)
- {
- _e_input_panel_position_set(ec, ec->client.w, ec->client.h);
- ec->visible = EINA_TRUE;
- evas_object_geometry_set(ec->frame, ec->x, ec->y, ec->w, ec->h);
- evas_object_show(ec->frame);
- e_comp_object_damage(ec->frame, 0, 0, ec->w, ec->h);
- }
+ if (_e_input_panel_is_effect_running(ips->ec))
+ ips->need_show = EINA_TRUE;
else
- {
- if (ec->visible)
- return;
-
- LOGD("IPS::DEFER_SHOW::ADD");
- ips->wait_update = EINA_TRUE;
- if (!ips->eh.buf_change)
- {
- ips->eh.buf_change =
- ecore_event_handler_add(E_EVENT_CLIENT_BUFFER_CHANGE,
- _ips_cb_buffer_change, ips);
- }
- }
+ _ips_show(ips->ec);
}
else
{
LOGD("IPS::DEFER_SHOW::HIDE\n");
- ips->wait_update = EINA_FALSE;
ec->visible = EINA_FALSE;
/* We have to reset the flag of pending_show to prevent showing after
* finish the rotation. Directly set this value, since there is no way