Add [GS]etOutputPrimary

This commit is contained in:
Adam Jackson 2008-12-10 11:15:48 -05:00
parent 1334866b4a
commit d904495a4c
3 changed files with 110 additions and 4 deletions

View file

@ -44,7 +44,7 @@ typedef unsigned long XRandrModeFlags;
#define RRNumberErrors 3
#define RRNumberEvents 2
#define RRNumberRequests 30
#define RRNumberRequests 32
#define X_RRQueryVersion 0
/* we skip 1 to make old clients fail pretty immediately */
@ -84,6 +84,8 @@ typedef unsigned long XRandrModeFlags;
#define X_RRGetCrtcTransform 27
#define X_RRGetPanning 28
#define X_RRSetPanning 29
#define X_RRSetOutputPrimary 30
#define X_RRGetOutputPrimary 31
#define RRTransformUnit (1L << 0)
#define RRTransformScaleUp (1L << 1)

View file

@ -614,6 +614,37 @@ typedef struct {
#define sz_xRRGetCrtcTransformReply 96
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
Window window B32;
RROutput output B32;
} xRRSetOutputPrimaryReq;
#define sz_xRRSetOutputPrimaryReq 12
typedef struct {
CARD8 reqType;
CARD8 randrReqType;
CARD16 length B16;
Window window B32;
} xRRGetOutputPrimaryReq;
#define sz_xRRGetOutputPrimaryReq 8
typedef struct {
BYTE type;
CARD8 pad;
CARD16 sequenceNumber B16;
CARD32 length B32;
RROutput output B32;
CARD32 pad1 B32;
CARD32 pad2 B32;
CARD32 pad3 B32;
CARD32 pad4 B32;
CARD32 pad5 B32;
} xRRGetOutputPrimaryReply;
#define sz_xRRGetOutputPrimaryReply 32
/*
* event
*/

View file

@ -1193,6 +1193,51 @@ dynamic changes in the display environment.
'new-time-stamp' contains the time at which this request was
executed.
┌───
RRSetOutputPrimary
window: WINDOW
output: OUTPUT
└───
Errors: Match, Output, Window
RRSetOutputPrimary marks 'output' as the primary output for the
screen with the same root window as 'window'. This output's CRTC
will be sorted to the front of the list in Xinerama and RANDR
geometry requests for the benefit of older applications. The
default primary output is None, and None is a legal value to pass
to RRSetOutputPrimary. This request is expected to be used by
desktop environments to mark the screen that should hold the primary
menu bar or panel.
If the named output is not connected to any CRTC, or if the Window
and Output are not attached to the same screen, BadMatch is generated.
In the latter case, errorValue will be the Window, not the Output.
As this changes the logical layout of the screen, ConfigureNotify
and RRScreenChangeNotify will be generated on the appropriate root
window when the primary output is changed by this call. This request
also generates RROutputChangeNotify events on the outputs that gained
and lost primary status.
If an output is disconnected asynchronously (eg. due to recabling),
the primary status does not change, but RROutputChangeNotify events
will be generated if the hardware is capable of detecting this;
clients are expected to reconfigure if appropriate.
If an output is deleted (eg. due to device hotplug), the server will
act as though None was passed to RRSetOutputPrimary, including
generating the appropriate events.
┌───
RRGetOutputPrimary
window: WINDOW
output: OUTPUT
└───
Errors: Window
RRGetOutputPrimary returns the primary output for the system.
❧❧❧❧❧❧❧❧❧❧❧
8. Extension Events
@ -1360,7 +1405,7 @@ list of what each version provided:
modes
1.3: Added cheap version of RRGetScreenResources. Added CRTC
transformations. Added panning.
transformations. Added panning. Added primary outputs.
Compatibility between 0.0 and 1.0 was *NOT* preserved, and 0.0 clients
will fail against 1.0 servers. The wire encoding op-codes were
@ -1369,8 +1414,9 @@ graceful way. Version 1.1 servers and clients are cross compatible with
1.0. Version 1.1 is considered to be stable and we intend upward
compatibility from this point. Version 1.2 offers an extended model of the
system with multiple output support. Version 1.3 adds a cheap version of
GetScreenResources to avoid expensive DDC operations, and CRTC
transformations. 1.2 and 1.3 are backward-compatible with 1.1.
GetScreenResources to avoid expensive DDC operations, CRTC transformations,
panning, and the primary output concept. 1.2 and 1.3 are backward-compatible
with 1.1.
❧❧❧❧❧❧❧❧❧❧❧
@ -2038,6 +2084,33 @@ A.2.2 Protocol Requests added with version 1.3
20 unused
└───
┌───
RRSetOutputPrimary
1 CARD8 major opcode
1 30 RandR opcode
2 3 length
4 WINDOW window
4 OUTPUT output
└───
┌───
RRGetOutputPrimary
1 CARD8 major opcode
1 31 RandR opcode
2 2 length
4 WINDOW window
1 1 Reply
1 unused
2 CARD16 sequence number
4 CARD32 length
4 OUTPUT output
4 CARD32 pad1
4 CARD32 pad2
4 CARD32 pad3
4 CARD32 pad4
└───
A.3 Protocol Events
┌───