forked from enlightenment/efl
fix bug in generic event handling on xlib side of ecore_x
SVN revision: 63475
This commit is contained in:
parent
0de47ae436
commit
0849e320a0
|
@ -296,3 +296,8 @@
|
||||||
|
|
||||||
* Add ECORE_CON_EVENT_CLIENT_WRITE, ECORE_CON_EVENT_SERVER_WRITE for
|
* Add ECORE_CON_EVENT_CLIENT_WRITE, ECORE_CON_EVENT_SERVER_WRITE for
|
||||||
obtaining progress of socket writes
|
obtaining progress of socket writes
|
||||||
|
|
||||||
|
2011-09-18 Carsten Haitzler (The Rasterman)
|
||||||
|
|
||||||
|
* Fix bug in Ecore_X generic event handling for extended event
|
||||||
|
sizes when freeing (and allocating) the data.
|
||||||
|
|
|
@ -2229,9 +2229,16 @@ _ecore_x_event_free_generic_event(void *data, void *ev)
|
||||||
#ifdef ECORE_XI2
|
#ifdef ECORE_XI2
|
||||||
Ecore_X_Event_Generic *e = (Ecore_X_Event_Generic *)ev;
|
Ecore_X_Event_Generic *e = (Ecore_X_Event_Generic *)ev;
|
||||||
|
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
if (e->data)
|
if (e->data)
|
||||||
XFreeEventData(_ecore_x_disp, (XGenericEventCookie *)data);
|
XFreeEventData(_ecore_x_disp, (XGenericEventCookie *)data);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
free(e);
|
||||||
|
#else
|
||||||
|
return;
|
||||||
|
data = NULL; ev = NULL;
|
||||||
#endif /* ifdef ECORE_XI2 */
|
#endif /* ifdef ECORE_XI2 */
|
||||||
} /* _ecore_x_event_free_generic_event */
|
} /* _ecore_x_event_free_generic_event */
|
||||||
|
|
||||||
|
@ -2241,6 +2248,7 @@ _ecore_x_event_handle_generic_event(XEvent *event)
|
||||||
#ifdef ECORE_XI2
|
#ifdef ECORE_XI2
|
||||||
XGenericEvent *generic_event;
|
XGenericEvent *generic_event;
|
||||||
Ecore_X_Event_Generic *e;
|
Ecore_X_Event_Generic *e;
|
||||||
|
XGenericEventCookie *data;
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
generic_event = (XGenericEvent *)event;
|
generic_event = (XGenericEvent *)event;
|
||||||
|
@ -2249,7 +2257,7 @@ _ecore_x_event_handle_generic_event(XEvent *event)
|
||||||
if (!e)
|
if (!e)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (XGetEventData(_ecore_x_disp, &event->xcookie))
|
if (XGetEventData(_ecore_x_disp, &(event->xcookie)))
|
||||||
{
|
{
|
||||||
e->cookie = event->xcookie.cookie;
|
e->cookie = event->xcookie.cookie;
|
||||||
e->data = event->xcookie.data;
|
e->data = event->xcookie.data;
|
||||||
|
@ -2266,10 +2274,15 @@ _ecore_x_event_handle_generic_event(XEvent *event)
|
||||||
if (e->extension == _ecore_x_xi2_opcode)
|
if (e->extension == _ecore_x_xi2_opcode)
|
||||||
_ecore_x_input_handler(event);
|
_ecore_x_input_handler(event);
|
||||||
|
|
||||||
|
data = malloc(sizeof(XGenericEventCookie));
|
||||||
|
if (data) memcpy(data, &(event->xcookie), sizeof(XGenericEventCookie));
|
||||||
ecore_event_add(ECORE_X_EVENT_GENERIC,
|
ecore_event_add(ECORE_X_EVENT_GENERIC,
|
||||||
e,
|
e,
|
||||||
_ecore_x_event_free_generic_event,
|
_ecore_x_event_free_generic_event,
|
||||||
event);
|
data);
|
||||||
|
#else
|
||||||
|
return;
|
||||||
|
event = NULL;
|
||||||
#endif /* ifdef ECORE_XI2 */
|
#endif /* ifdef ECORE_XI2 */
|
||||||
} /* _ecore_x_event_handle_generic_event */
|
} /* _ecore_x_event_handle_generic_event */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue