- ELBF(ELBT_BD, 0, child->client.win,
- "SEND DEICONIFY_APPROVE. ancestor:%x", bd_ancestor->client.win);
-
- ecore_x_client_message32_send(child->client.win,
- ECORE_X_ATOM_E_DEICONIFY_APPROVE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- child->client.win, 0, 0, 0, 0);
- child->client.e.state.deiconify_approve.ancestor = bd_ancestor;
- bd_ancestor->client.e.state.deiconify_approve.req_list = eina_list_append(bd_ancestor->client.e.state.deiconify_approve.req_list, child);
+ if (p)
+ {
+ ELBF(ELBT_BD, 0, child->client.win,
+ "SEND DEICONIFY_APPROVE. ancestor:%x pending(%d,%d)",
+ bd_ancestor->client.win,
+ pending_ancestor, pending);
+
+ ecore_x_client_message32_send(child->client.win,
+ ECORE_X_ATOM_E_DEICONIFY_APPROVE,
+ ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
+ child->client.win, 0, 0, 0, 0);
+ child->client.e.state.deiconify_approve.ancestor = bd_ancestor;
+ bd_ancestor->client.e.state.deiconify_approve.req_list = eina_list_append(bd_ancestor->client.e.state.deiconify_approve.req_list, child);
+ }
+ else
+ {
+ /* queue a deiconify send job to give the chance to other jobs */
+ ELBF(ELBT_BD, 0, child->client.win,
+ "SEND DEICONIFY_APPROVE. (PENDING) ancestor:%x",
+ bd_ancestor->client.win);
+ child->client.e.state.deiconify_approve.pending_job = ecore_job_add(_e_border_deiconify_approve_send_pending_end, child);
+ }