forked from enlightenment/enlightenment
reject deleted clients from x11 sync alarm event callback
E_Client->comp_data is null after a client has been deleted, so
attempting to handle events which require the dereferencing of this
pointer after a client has been deleted will result in a crash
these events should be rejected after delete regardless, since at this
time the compositor has stopped handling events for the client
ref f42c6aa187
This commit is contained in:
parent
f42c6aa187
commit
f6245e5535
|
@ -2461,16 +2461,14 @@ _e_comp_x_sync_alarm(void *data EINA_UNUSED, int type EINA_UNUSED, Ecore_X_Event
|
|||
unsigned int serial;
|
||||
E_Client *ec;
|
||||
Eina_Bool resize = EINA_FALSE;
|
||||
E_Comp_X_Client_Data *cl;
|
||||
|
||||
ec = _e_comp_x_client_find_by_alarm(ev->alarm);
|
||||
if (!ec) return ECORE_CALLBACK_RENEW;
|
||||
if ((!ec) || e_object_is_del(E_OBJECT(ec))) return ECORE_CALLBACK_RENEW;
|
||||
|
||||
if (ec->netwm.sync.wait)
|
||||
ec->netwm.sync.wait--;
|
||||
|
||||
cl = _e_comp_x_client_data_get(ec);
|
||||
if ((cl) && (ecore_x_sync_counter_query(cl->sync_counter, &serial)))
|
||||
if (ecore_x_sync_counter_query(_e_comp_x_client_data_get(ec)->sync_counter, &serial))
|
||||
{
|
||||
E_Client_Pending_Resize *pnd = NULL;
|
||||
|
||||
|
|
Loading…
Reference in New Issue