Generic Event Extension (XGE)
Altre info
- Creatore
- Peter Hutterer
- Rilascio
- 2008
- Tipo
- Estensione X11
- Specifica
- X Generic Event Extension
L'estensione X11 che rese possibili eventi più lunghi di 32 byte, permettendo a XInput 2 di riportare pressione, inclinazione e dita senza stipare tutto nella busta del protocollo del 1987.
Ogni evento del protocollo base di X11 è lungo esattamente 32 byte, e gli otto bit che ne portano il tipo lasciavano 128 valori da spartirsi tra tutte le estensioni. Nel 1987 andava bene per una tastiera e un mouse; una tavoletta che riporta pressione, inclinazione, rotazione e più dita insieme non ci stava. Peter Hutterer scrisse la Generic Event Extension nel 2008 come un cuneo nel protocollo: un solo tipo di evento, GenericEvent, numero 35, la cui intestazione contiene l'opcode dell'estensione, un sottotipo proprio e un campo di lunghezza. Ciò che non entra nei 32 byte segue in unità da quattro byte.
Il primo cliente fu XInput 2 un anno dopo, con MPX che richiedeva interi elenchi di valori degli assi per ogni evento, e più tardi Present. Il costo si vede in Xlib, che aveva sempre presupposto una dimensione fissa: il client riceve un XGenericEventCookie e deve chiamare XGetEventData per ottenere il resto, poi XFreeEventData. Dimenticare la seconda chiamata causa una perdita di memoria, e molti l'hanno dimenticata. XCB non ha mai avuto il problema, perché non ha mai dato nulla per scontato sulla lunghezza.