I am sponsoring this case for myself, and have marked it closed approved
automatic, as it simply imports an X protocol extension from X.Org following
the expected mechanisms.   If anyone thinks more review is necessary, let
me know and I will convert to a fasttrack.

As this case only provides compatible additions, the release binding is
patch, though no patch/update release delivery is currently planned.

        -Alan Coopersmith-           alan.coopersmith at sun.com
         Sun Microsystems, Inc. - X Window System Engineering

Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         X Generic Event Extension (XGE), Version 1.0
    1.2. Name of Document Author/Supplier:
         Author:  Alan Coopersmith
    1.3  Date of This Document:
        07 May, 2009
4. Technical Description

This case adds support to the X Window System on Solaris/OpenSolaris for 
the X Generic Event Extension (XGE), Version 1.0, as defined by the 
X.Org community.

XGE was designed to solve two problems in the X11 protocol event reporting
mechanism:

    1) The X11 protocol only has 64 event codes available for events,
       including all extensions, and namespace exhaustion was foreseen
       in the near future.

    2) The X11 protocol definition of all events as being exactly 32-bytes
       long made for easier protocol parsing when the protocol was created,
       but has limited some recent extensions who wish to pass back more 
       data, requiring events to tell the client to request more data,
       adding latency waiting for additional round trips between client &
       server.

XGE simply defines one new event opcode (35, GenericEvent) in the core 
protocol, and then re-uses this opcode for multiple events.   The event
contents are defined in the X11 protocol syntax as:

        type: BYTE;                     always GenericEvent
        extension: CARD8;               extension offset
        sequenceNumber: CARD16          low 16 bits of request seq. number
        length: CARD32                  length
        evtype: CARD16                  event type


The actual type of an event is specified as the combination of
extension and evtype. extension specifies the matching extension's
major opcode. evtype is a static type as defined for this
extension. evtype must be unique within the extension.

XGE also allows events that are longer than the standard X protocol's
32 byte events.  The length field of a GenericEvent defines the number
of bytes after the initial 32 bytes in 4 byte units.

Because long events will break protocol parsing for clients that are
not expecting to handle events with a length other than 32-bytes, the
X server must not send a long event unless the client supports XGE.

This extension, like most X extensions, uses a familiar versioning
taxonomy - compatible changes increment the minor version number,
while incompatible changes increment the major version number.

While no incompatible changes are expected at this time, the versioning
will allow them to be implemented without breaking existing clients, so
the stability level of the Version 1.0 interfaces is set to Committed.

The client API for this extension consists of two functions, defined in
the header <X11/extensions/Xge.h> and implemented in libXext.so:
  Bool XGEQueryExtension(Display* dpy, int *event_basep, int *err_basep);
  Bool XGEQueryVersion(Display* dpy, int *major, int* minor);

These follow the standard X11 extension design pattern of returning 
a True or False return value indicating whether the extension is supported
on the given display, and the major & minor version numbers of the 
implemented version, and the event & error codes assigned to the
extension.

The X server side of the implementation will be provided in the
Xorg 1.6 case (PSARC 2009/292) to follow shortly.


Imported interfaces:
--------------------
X Window System protocol, Version 11 (X11)      Committed/Standard
libXext.so.4                                    Committed/Standard

Exported interfaces:
--------------------
X Generic Event extension, Version 1.0          Committed       [1]
<X11/extensions/Xge.h>                          Committed
XGEQueryExtension()                             Committed
XGEQueryVersion()                               Committed

References:
-----------
[1] X Generic Event Extension specification, materials/geproto.txt
    Original/upstream at:
     http://cgit.freedesktop.org/xorg/proto/xextproto/tree/geproto.txt

6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                X Consolidation (Desktop C-Team)
    6.5. ARC review type: Automatic
    6.6. ARC Exposure: open


Reply via email to