Generic Event Extension (XGE)
Más información
- Creador
- Peter Hutterer
- Año
- 2008
- Tipo
- Extensión de X11
- Especificación
- X Generic Event Extension
La extensión de X11 que hizo posibles los eventos de más de 32 bytes, para que XInput 2 pudiera informar de presión, inclinación y dedos sin embutirlo todo en el sobre que el protocolo fijó en 1987.
Cada evento del protocolo básico de X11 ocupa exactamente 32 bytes, y los ocho bits que indican el tipo dejaban 128 valores para repartir entre todas las extensiones. Bastaba para un teclado y un ratón en 1987; una tableta que informa de presión, inclinación, rotación y varios dedos a la vez no cabía. Peter Hutterer escribió la Generic Event Extension en 2008 como una cuña en el protocolo: un único tipo de evento, GenericEvent, con el número 35, cuya cabecera lleva el opcode de la extensión, un subtipo propio y un campo de longitud. Lo que no entra en los 32 bytes sigue detrás, en bloques de cuatro bytes.
El primer cliente fue XInput 2 un año después, con MPX necesitando enviar listas enteras de valores de ejes por evento, y más tarde Present. El precio se nota en Xlib, que siempre había dado por supuesto un tamaño fijo: el cliente recibe una XGenericEventCookie y debe llamar a XGetEventData para traer el resto, y a XFreeEventData después. Quien olvida la segunda llamada tiene una fuga de memoria, y muchos la olvidaron. XCB se libró del problema porque nunca supuso nada sobre la longitud.