return grab->type & job_type;
}
-static Eina_Bool
-_e_vis_client_cb_buffer_attach(void *data, int type EINA_UNUSED, void *event)
+static void
+_e_vis_client_handle_buffer_attach(E_Vis_Client *vc)
{
- E_Vis_Client *vc;
E_Vis_Grab *grab;
E_Client *ec;
- E_Event_Client *ev;
- E_Client *provider_ec;
Eina_List *l;
- ev = event;
- vc = data;
- provider_ec = e_comp_wl_remote_surface_bound_provider_ec_get(vc->ec);
- if (vc->ec != ev->ec && provider_ec != ev->ec)
- goto renew;
-
ec = vc->ec;
-
- VS_INF(ec, "FINISH Uniconify render(ev:%p, vc:%p, provider:%p)", ev->ec, vc->ec, provider_ec);
+ if (!ec) return;
/* force update
* NOTE: this update can invoke some functions related to visibility grab */
}
E_FREE_FUNC(vc->buf_attach, ecore_event_handler_del);
+}
+
+static Eina_Bool
+_e_vis_client_cb_buffer_attach(void *data, int type EINA_UNUSED, void *event)
+{
+ E_Vis_Client *vc;
+ E_Client *ec;
+ E_Event_Client *ev;
+ E_Client *provider_ec;
+
+ ev = event;
+ vc = data;
+ provider_ec = e_comp_wl_remote_surface_bound_provider_ec_get(vc->ec);
+ if (vc->ec != ev->ec && provider_ec != ev->ec)
+ goto renew;
+
+ ec = vc->ec;
+
+ VS_INF(ec, "FINISH Uniconify render(ev:%p, vc:%p, provider:%p)", ev->ec, vc->ec, provider_ec);
+
+ _e_vis_client_handle_buffer_attach(vc);
+
renew:
return ECORE_CALLBACK_PASS_ON;
}
VS_DBG(ec, "CALLBACK 'SHOW'...");
_e_vis_update_foreground_job_queue();
E_VIS_CLIENT_GET_OR_RETURN(vc, ec);
+
+ if (ec->internal)
+ {
+ if (vc->buf_attach)
+ {
+ VS_INF(ec, "FINISH Uniconify render of internal window");
+ _e_vis_client_handle_buffer_attach(vc);
+ }
+ }
+
if (vc->state != E_VIS_ICONIFY_STATE_RUNNING_UNICONIFY)
{
vc->state = E_VIS_ICONIFY_STATE_UNICONIC;