Commit graph

309 commits

Author SHA1 Message Date
Daniel Martin
55c75accec xkb: Fix struct ExtensionDeviceNotify
The field ledId is of type CARD16, not CARD8, see XKBproto.h.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-By: Ran Benita <ran234@gmail.com>
2013-10-11 16:18:32 +09:00
Daniel Martin
d0d5c8adb1 xkb: Pad structs CommonDoodad and SALockDeviceBtn
* CommonDoodad is xkbAnyDoodadWireDesc in XKBproto.h. There it has a
  size of 20 like all Doodads:
    #define sz_xkbAnyDoodadWireDesc 20
  Add the necessary 8 bytes of padding.

* SALockDeviceBtn is an Action. All Actions are handled by the server
  and libX11 with sizeof(xkbActionWireDesc) or
  SIZEOF(xkbActionWireDesc). Which results in a size of 8:
    #define sz_xkbActionWireDesc 8 /* in XKBproto.h */
  Add the necessary 3 bytes of padding.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com>
2013-10-11 16:18:27 +09:00
Daniel Martin
48767a85a5 randr: Fix GetProviderProperty reply
The first field has to be 'format' not a pad and 'num_items' is of type
CARD32.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Arnaud Fontaine <arnau@debian.org>
2013-10-11 16:14:45 +09:00
Daniel Martin
cb2fa837ff Enforce a bit or value in enum items
Do not allow enum items without an explicit bit or value. The value of
an enum item is known when adding the enum to the xml specification.
There's no reason why this information shouldn't be where it belongs to.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:20 +02:00
Daniel Martin
a702f7e1ca xv: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:18 +02:00
Daniel Martin
c1887e0594 xproto: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:16 +02:00
Daniel Martin
abc83cbaea xinput: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:14 +02:00
Daniel Martin
2185e7710a xfixes: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:12 +02:00
Daniel Martin
46dc9fb11e xevie: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:10 +02:00
Daniel Martin
428979f289 sync: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:08 +02:00
Daniel Martin
41d2b0f667 shape: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:06 +02:00
Daniel Martin
e84ef3fc4b screensaver: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:04 +02:00
Daniel Martin
840a5ad835 render: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:02 +02:00
Daniel Martin
8d0d77a953 dri2: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:22:00 +02:00
Daniel Martin
9a58e742e1 randr: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:21:58 +02:00
Daniel Martin
a34b8b1878 dpms: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:21:55 +02:00
Daniel Martin
b3f6fc4e3a damage: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:21:50 +02:00
Daniel Martin
99cea12515 composite: Use explicit enum value
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Ran Benita <ran234@gmail.com> (and tested)
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
2013-08-25 11:20:47 +02:00
Ran Benita
bd7708ac10 xkb: Add missing LedClass and BellClass enum values
The protocol encoding says:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#appD::Common_Types

    KB_LEDCLASSRESULT
        0     KbdFeedbackClass
        4     LedFeedbackClass

    KB_LEDCLASSSPEC
        Encoding same as KB_LEDCLASSRESULT, with the addition of:
        #x0300     XkbDfltXIClass
        #x0500     XkbAllXIClasses

    KB_BELLCLASSRESULT
        0     KbdFeedbackClass
        5     BellFeedbackClass

    KB_BELLCLASSSPEC
        Encoding same as KB_BELLCLASSRESULT, with the addition of:
        #x0300     XkbDfltXIClass

Note that the spec says something slightly different in another section:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Common_Types

    KB_LEDCLASSSPEC { KbdFeedbackClass , LedFeedbackClass , DfltXIClass , AllXIClasses , XINone }
    KB_BELLCLASSSPEC    { KbdFeedbackClass , BellFeedbackClass , DfltXIClass , AllXIClasses  }}

From what I could gather, the encoding is the correct one (but I'm not
sure).

Signed-off-by: Ran Benita <ran234@gmail.com>
Reviewed-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:23:54 +02:00
Ran Benita
e56a0599d6 xkb: Add missing 'supported' field to GetNamedIndicator reply
The protocol encoding has it:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#appD::Requests

    1     CARD8          opcode
    1     15          xkb-opcode
    [...]

    1     1          Reply
    1     CARD8          deviceID
    2     CARD16          sequence number
    [...]
    4     SETofKB_BOOLCTRL          map.ctrls
    1     BOOL          supported
    3               unused

And xkbGetNamedIndicatorReply in XKBproto.h also.

Finally, the server does send it, though it's always TRUE.

Signed-off-by: Ran Benita <ran234@gmail.com>
Reviewed-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:23:46 +02:00
Ran Benita
2cd2d5f0c7 xkb: Unify Overlay1Behavior and Overlay2Behavior
These two structs are used by the server in the exact same way, and are
handled together (see xkb/xkbPrKeyEv.c, XkbKB_Overlay{1,2} handling).
There is no need to use different (and for some reason slightly
different) types for them.

Reviewed-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
2013-08-15 00:23:46 +02:00
Ran Benita
e8980ab471 xkb: Change DfltBtnAbsolute to the value used by the server
The spec says:
     #x02     XkbSA_DfltBtnAbsolute
But /usr/include/X11/extensions/XKB.h has:
     #define	XkbSA_DfltBtnAbsolute	(1L << 2)
which is what the server sends.

Note: the XKB spec was changed by Daniel Martin to match the Xlib value.
See kbproto commit db07706cb268d5fe1bc38ef5c0a9f49309068b2c.

Reviewed-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
2013-08-15 00:23:46 +02:00
Ran Benita
f4321385e0 xkb: Fix key type map entry field order
In fact, unlike the deleted comment says, both Xlib and the server use
the order as specified in the protocol spec:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#appD::Requests
(Search for KB_KTMAPENTRY).

Also see struct xkbKTMapEntryWireDesc in
/usr/include/X11/extensions/XKBproto.h

Reviewed-by: Peter Harris <pharris@opentext.com>
Reviewed-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
2013-08-15 00:23:46 +02:00
Ran Benita
37d0f55392 xkb: Work around alignment problems in GetNames and GetMap replies
The basic situation is this: a list of CARD8/CARD16s followed by a list
of CARD16/CARD32s. In the current code, the second list is aligned to
1/2 bytes according the size of the first list. However, in some cases
the second list needs to be aligned to 4 bytes per the xkbproto spec:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#appD::Requests

XkbGetMap reply (xkb-opcode 8):
[...]
a     LISTofCARD8          actsRtrn.count
p               unused,p=pad(a)
8A     LISTofKB_ACTION          actsRtrn.acts
4B     LISTofKB_SETBEHAVIOR          behaviorsRtrn
v     LISTofSETofKEYMASK          vmodsRtrn
p               unused, p=pad(v)
2E     LISTofKB_SETEXPLICIT          explicitRtrn
p               unused,p=pad(2E)
2M     LISTofKB_KEYMODMAP          modmapRtrn
p               unused, p=pad(2M)
[...]

XkbGetNames reply (xkb-opcode 17):
[...]
l     LISTofCARD8          nLevelsPerType, sum of all elements=L
p               unused, p=pad(l)
[...]

The server and Xlib handle this with calls to XkbPaddedSize(), which is
a good way to see where the extra padding is needed.

Signed-off-by: Ran Benita <ran234@gmail.com>
Reviewed-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:23:14 +02:00
Daniel Martin
330bf32140 xproto: Fix GContext error references in documentation
The name of the error is GContext, not GC.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-By: Ran Benita <ran234@gmail.com>
2013-08-15 00:00:53 +02:00
Daniel Martin
fdac6ebb6f xinput: Use BARRIER from xfixes
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:53 +02:00
Daniel Martin
37f4ea687f xinput: Unlock uninterpreted lists
The 'uninterpreted_data' lists have been added to pad the structure at
runtime and thereby making lists of such structures iterable.

This is a temporary solution until it is possible to nest a <switch> in
a <struct> correctly.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:53 +02:00
Daniel Martin
fae1976b58 xinput: Add XI v2.3
Introduced with v2.3 has been Pointer Barrier support, including a new
request (XIBarrierReleasePointer) and 2 events (Barrier{Hit,Leave}).

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
5bfa4c8373 xinput: Add XI v2.2
Introduced with v2.2 has been Multitouch support and therefor 7 new
events: (Raw)Touch{Begin,Update,End} and TouchOwnership.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
67a185d69d xinput: Add XI v2.1
Introduced with v2.1 has been Raw event support and therefor 5 new
events: Raw{Key,Button}{Press,Release} and RawMotion.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
0f3a98cc62 xinput: Add XI v2.0
Introduced with v2.0 have been various new types, structures, 21
requests and 12 XGE events.

All new requests have the "XI" prefix in the name. This prefix can be
found in the spec too and avoids name clashes with requests found in
prior versions of XI (at least that's (Un)GrabDevice).

All new events are X Generic Events. They've a different header then
"normal" events. Therefor we've to mark them with the attribute 'xge'
set to 'true'.

To prevent another name clash one new structure had to be prefixed,
too: XIDeviceInfo.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
bd070c5a51 xinput: Add XI v1.5
New:
- Requests
  * ListDeviceProperties
  * ChangeDeviceProperty
  * DeleteDeviceProperty
  * GetDeviceProperty

- Enum
  * PropertyFormat

- Event
  * DevicePropertyNotify

The requests ChangeDeviceProperty and GetDeviceProperty use switches to
return a list depending on the format (8bit, 16bit and 32bit) of the
property value.
We reuse the <bitcase> here. Which is possible, because the format
values don't have equal bits. But, this is rather a hack and must be
changed when the value test (a <case>) for switches is implemented.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
4fce9448b6 xinput: Cleanup implementation of XI up to v1.4
- Structural changes:
  * indent with spaces only (replaced tabs)
  * indent attributes
  * move structures in front of the first request using it
    (Otherwise c_client.py would generate uncompileable code if we fix
     the uninterpreted lists.)
  * add version-controlled section comments (types, requests, events,
    errors) and move structures into their corresponding section
  * sort events and eventcopys by number

- Additions:
  * add various missing enums and structs (i.e. DeviceChange,
    DeviceControl, DeviceName, ...)
  * uncomment commented out requests
  * linked in various enums into fields (via enum or altenum)

- Other changes:
  * link to the txt specification in the git repo
  * fixed comments for "uninterpreted lists"

- API CHANGES:
  * Request: GetDeviceMotionEvents
    The reply contains a list of events (of coordinates). So, we rename
    num_coords to num_events. The field is called nevents_return in the
    specification. The list was commented out anyways, so the rename
    shouldn't affect that much.
  * Request: SendExtensionEvent
    The list 'events' is a mask, make it a CARD8 like every other mask.
  * Events: FocusIn/Out
    Those ones haven't been named properly. They are called
    DeviceFocusIn/Out in the specification. In XI2 the names FocusIn/Out
    are used to introduce new events and cause name clashes. So, we have
    to rename the existing FocusIn/Out and give them their proper names.
  * Structures: *Feedback{Ctl,State}
    Rename the field id to feedback_id, as it's called in the spec. The
    only lists using those structs are commented out yet. So, this might
    not be called an api break.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
2013-08-15 00:00:52 +02:00
Daniel Martin
56a82005ac Add support for X Generic Extension events
With these patches, we are able to mark an XGE event as such and
generate the correct header for it.

XGE events can be found in the X Input Extension v2++.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-07-12 15:54:14 -04:00
Louis-Francis Ratté-Boulianne
e6a246e50e sync: Change value list param of CreateAlarm and ChangeAlarm into switch
Values for "Value" and "Delta" fields are 64-bit that couldn't be passed through a regular value list/mask.

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-07-03 19:02:41 -04:00
Daniel Martin
e5f7c75081 res: Add ClientIdMask enum
And make use of it in ClientIdSpec.

v2: use <bit/> instead of <value/> in the enum

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
5802c6a0f9 res: Fix and rename list in ClientIdValue
The list is a CARD32 and rename the field to "value" to match the
specification.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
45d8361e59 randr: Add provider object support (RandR v1.4)
With RandR 1.4 provider objects have been introduced. "A provider object
represents a GPU or virtual device providing services to the X server."

To handle provider objects the following requests have been added:
    - GetProviders
    - GetProviderInfo
    - SetProviderOffloadSink
    - SetProviderOutputSource
    - ListProviderProperties
    - QueryProviderProperty
    - ConfigureProviderProperty
    - ChangeProviderProperty
    - DeleteProviderProperty
    - GetProviderProperty

And the Notify event got 3 new subcodes:
    - ProviderChange
    - ProviderProperty
    - ResourceChange

v2:
- add missing name field to GetProviderInfo
v3:
- changed ProviderCapability enum
  o replaced <value> with <bit>
  o removed None
- replaced "alignment pad list" with commented out <pad align="4"/> to
  be prepared for future enhancements
- add brief description to commit msg about additions

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
5f1fb6ab6b xtest: Version bump 2.1..2.2
The implemented and upstream version is 2.2.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
a2d4c41cbb glx: Version bump 1.3..1.4
Add the BufferSwapComplete (v2) event.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
f206ca3bea composite: Version bump 0.3..0.4
The only difference between version 0.3 and 0.4 is that the clipping
semantics have been redefined. That's just an internal change, no
structure has to be modified.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Daniel Martin
8c85be5392 xfixes: Rename enum DirectionMask to BarrierDirec.
Rename the enum 'DirectionMask' to 'BarrierDirections' to match the
specification.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-06-06 16:13:52 -04:00
Mark Witmer
bdfedfa57a XKB: Correct enum to mask
Changes fields with enums EventType, MapPart, or BoolCtrl to use them as
masks instead.
2013-05-30 11:22:13 -04:00
Daniel Martin
879c119ff6 screensaver: Use enum and mask attributes
Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-05-27 12:06:13 -04:00
Daniel Martin
a50670c49e screensaver: Remove wrong fields from Notify event
This fixes bug #63158:
    screensaver notify event specification is incorrect
    https://bugs.freedesktop.org/show_bug.cgi?id=63158

As stated in the bug report the response_type and sequence field will be
added automatically while parsing the specification. Additionally, the
pad field is wrong.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-05-27 12:06:13 -04:00
Erkki Seppälä
e8af4649ba Prototype for XRes v1.2 2013-05-23 13:06:00 -07:00
Daniel Martin
a9a892e9a1 xcbgen: Handle multiple <enumref> in a <bitcase>
Adopt the XML schema change from commit
    ee71d96 Allow multiple <enumref> in a <bitcase>
and its usage with commit
    b3b5e02 XKB: Fix GetKbdByName.

Signed-off-by: Daniel Martin <consume.noise@gmail.com>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-05-23 10:51:57 -04:00
Peter Harris
f05f44554f XKB: Fix calculation in GetIndicatorMap
Contrary to the spec, the server doesn't set nIndicators.

Signed-off-by: Peter Harris <pharris@opentext.com>
2013-04-16 14:50:32 -04:00
Peter Harris
b3b5e029e7 XKB: Fix GetKbdByName
Each part of the reply has a fake type, sequence, and length. In
addition, some parts of the reply are encoded only once even when
multiple bits are set.

Signed-off-by: Peter Harris <pharris@opentext.com>
2013-04-16 14:37:05 -04:00
Peter Harris
ee71d96c83 Allow multiple <enumref> in a <bitcase>
Signed-off-by: Peter Harris <pharris@opentext.com>
2013-04-16 14:37:05 -04:00