VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.10.0/randrstr.h

Last change on this file was 36308, checked in by vboxsync, 14 years ago

fix OSE

  • Property svn:eol-style set to native
File size: 23.0 KB
Line 
1/*
2 * Copyright © 2000 Compaq Computer Corporation
3 * Copyright © 2002 Hewlett-Packard Company
4 * Copyright © 2006 Intel Corporation
5 * Copyright © 2008 Red Hat, Inc.
6 *
7 * Permission to use, copy, modify, distribute, and sell this software and its
8 * documentation for any purpose is hereby granted without fee, provided that
9 * the above copyright notice appear in all copies and that both that copyright
10 * notice and this permission notice appear in supporting documentation, and
11 * that the name of the copyright holders not be used in advertising or
12 * publicity pertaining to distribution of the software without specific,
13 * written prior permission. The copyright holders make no representations
14 * about the suitability of this software for any purpose. It is provided "as
15 * is" without express or implied warranty.
16 *
17 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19 * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23 * OF THIS SOFTWARE.
24 *
25 * Author: Jim Gettys, Hewlett-Packard Company, Inc.
26 * Keith Packard, Intel Corporation
27 */
28
29#ifdef HAVE_DIX_CONFIG_H
30#include <dix-config.h>
31#endif
32
33#ifndef _RANDRSTR_H_
34#define _RANDRSTR_H_
35
36#include <X11/X.h>
37#include <X11/Xproto.h>
38#include "misc.h"
39#include "os.h"
40#include "dixstruct.h"
41#include "resource.h"
42#include "scrnintstr.h"
43#include "windowstr.h"
44#include "pixmapstr.h"
45#include "extnsionst.h"
46#include "servermd.h"
47#include "rrtransform.h"
48#include <X11/extensions/randr.h>
49#include <X11/extensions/randrproto.h>
50#include <X11/extensions/render.h> /* we share subpixel order information */
51#include "picturestr.h"
52#include <X11/Xfuncproto.h>
53
54/* required for ABI compatibility for now */
55#define RANDR_10_INTERFACE 1
56#define RANDR_12_INTERFACE 1
57#define RANDR_13_INTERFACE 1 /* requires RANDR_12_INTERFACE */
58#define RANDR_GET_CRTC_INTERFACE 1
59
60#define RANDR_INTERFACE_VERSION 0x0103
61
62typedef XID RRMode;
63typedef XID RROutput;
64typedef XID RRCrtc;
65
66extern _X_EXPORT int RREventBase, RRErrorBase;
67
68extern _X_EXPORT int (*ProcRandrVector[RRNumberRequests])(ClientPtr);
69extern _X_EXPORT int (*SProcRandrVector[RRNumberRequests])(ClientPtr);
70
71/*
72 * Modeline for a monitor. Name follows directly after this struct
73 */
74
75#define RRModeName(pMode) ((char *) (pMode + 1))
76typedef struct _rrMode RRModeRec, *RRModePtr;
77typedef struct _rrPropertyValue RRPropertyValueRec, *RRPropertyValuePtr;
78typedef struct _rrProperty RRPropertyRec, *RRPropertyPtr;
79typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr;
80typedef struct _rrOutput RROutputRec, *RROutputPtr;
81
82struct _rrMode {
83 int refcnt;
84 xRRModeInfo mode;
85 char *name;
86 ScreenPtr userScreen;
87};
88
89struct _rrPropertyValue {
90 Atom type; /* ignored by server */
91 short format; /* format of data for swapping - 8,16,32 */
92 long size; /* size of data in (format/8) bytes */
93 pointer data; /* private to client */
94};
95
96struct _rrProperty {
97 RRPropertyPtr next;
98 ATOM propertyName;
99 Bool is_pending;
100 Bool range;
101 Bool immutable;
102 int num_valid;
103 INT32 *valid_values;
104 RRPropertyValueRec current, pending;
105};
106
107struct _rrCrtc {
108 RRCrtc id;
109 ScreenPtr pScreen;
110 RRModePtr mode;
111 int x, y;
112 Rotation rotation;
113 Rotation rotations;
114 Bool changed;
115 int numOutputs;
116 RROutputPtr *outputs;
117 int gammaSize;
118 CARD16 *gammaRed;
119 CARD16 *gammaBlue;
120 CARD16 *gammaGreen;
121 void *devPrivate;
122 Bool transforms;
123 RRTransformRec client_pending_transform;
124 RRTransformRec client_current_transform;
125 PictTransform transform;
126 struct pict_f_transform f_transform;
127 struct pict_f_transform f_inverse;
128};
129
130struct _rrOutput {
131 RROutput id;
132 ScreenPtr pScreen;
133 char *name;
134 int nameLength;
135 CARD8 connection;
136 CARD8 subpixelOrder;
137 int mmWidth;
138 int mmHeight;
139 RRCrtcPtr crtc;
140 int numCrtcs;
141 RRCrtcPtr *crtcs;
142 int numClones;
143 RROutputPtr *clones;
144 int numModes;
145 int numPreferred;
146 RRModePtr *modes;
147 int numUserModes;
148 RRModePtr *userModes;
149 Bool changed;
150 RRPropertyPtr properties;
151 Bool pendingProperties;
152 void *devPrivate;
153};
154
155#if RANDR_12_INTERFACE
156typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
157 CARD16 width,
158 CARD16 height,
159 CARD32 mmWidth,
160 CARD32 mmHeight);
161
162typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
163 RRCrtcPtr crtc,
164 RRModePtr mode,
165 int x,
166 int y,
167 Rotation rotation,
168 int numOutputs,
169 RROutputPtr *outputs);
170
171typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen,
172 RRCrtcPtr crtc);
173
174typedef Bool (*RRCrtcGetGammaProcPtr) (ScreenPtr pScreen,
175 RRCrtcPtr crtc);
176
177typedef Bool (*RROutputSetPropertyProcPtr) (ScreenPtr pScreen,
178 RROutputPtr output,
179 Atom property,
180 RRPropertyValuePtr value);
181
182typedef Bool (*RROutputValidateModeProcPtr) (ScreenPtr pScreen,
183 RROutputPtr output,
184 RRModePtr mode);
185
186typedef void (*RRModeDestroyProcPtr) (ScreenPtr pScreen,
187 RRModePtr mode);
188
189#endif
190
191#if RANDR_13_INTERFACE
192typedef Bool (*RROutputGetPropertyProcPtr) (ScreenPtr pScreen,
193 RROutputPtr output,
194 Atom property);
195typedef Bool (*RRGetPanningProcPtr) (ScreenPtr pScrn,
196 RRCrtcPtr crtc,
197 BoxPtr totalArea,
198 BoxPtr trackingArea,
199 INT16 *border);
200typedef Bool (*RRSetPanningProcPtr) (ScreenPtr pScrn,
201 RRCrtcPtr crtc,
202 BoxPtr totalArea,
203 BoxPtr trackingArea,
204 INT16 *border);
205
206#endif /* RANDR_13_INTERFACE */
207
208typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
209typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
210
211/* These are for 1.0 compatibility */
212
213typedef struct _rrRefresh {
214 CARD16 rate;
215 RRModePtr mode;
216} RRScreenRate, *RRScreenRatePtr;
217
218typedef struct _rrScreenSize {
219 int id;
220 short width, height;
221 short mmWidth, mmHeight;
222 int nRates;
223 RRScreenRatePtr pRates;
224} RRScreenSize, *RRScreenSizePtr;
225
226#ifdef RANDR_10_INTERFACE
227
228typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
229 Rotation rotation,
230 int rate,
231 RRScreenSizePtr pSize);
232
233#endif
234
235
236typedef struct _rrScrPriv {
237 /*
238 * 'public' part of the structure; DDXen fill this in
239 * as they initialize
240 */
241#if RANDR_10_INTERFACE
242 RRSetConfigProcPtr rrSetConfig;
243#endif
244 RRGetInfoProcPtr rrGetInfo;
245#if RANDR_12_INTERFACE
246 RRScreenSetSizeProcPtr rrScreenSetSize;
247 RRCrtcSetProcPtr rrCrtcSet;
248 RRCrtcSetGammaProcPtr rrCrtcSetGamma;
249 RRCrtcGetGammaProcPtr rrCrtcGetGamma;
250 RROutputSetPropertyProcPtr rrOutputSetProperty;
251 RROutputValidateModeProcPtr rrOutputValidateMode;
252 RRModeDestroyProcPtr rrModeDestroy;
253#endif
254#if RANDR_13_INTERFACE
255 RROutputGetPropertyProcPtr rrOutputGetProperty;
256 RRGetPanningProcPtr rrGetPanning;
257 RRSetPanningProcPtr rrSetPanning;
258#endif
259
260 /*
261 * Private part of the structure; not considered part of the ABI
262 */
263 TimeStamp lastSetTime; /* last changed by client */
264 TimeStamp lastConfigTime; /* possible configs changed */
265 RRCloseScreenProcPtr CloseScreen;
266
267 Bool changed; /* some config changed */
268 Bool configChanged; /* configuration changed */
269 Bool layoutChanged; /* screen layout changed */
270
271 CARD16 minWidth, minHeight;
272 CARD16 maxWidth, maxHeight;
273 CARD16 width, height; /* last known screen size */
274 CARD16 mmWidth, mmHeight; /* last known screen size */
275
276 int numOutputs;
277 RROutputPtr *outputs;
278 RROutputPtr primaryOutput;
279
280 int numCrtcs;
281 RRCrtcPtr *crtcs;
282
283 /* Last known pointer position */
284 RRCrtcPtr pointerCrtc;
285
286#ifdef RANDR_10_INTERFACE
287 /*
288 * Configuration information
289 */
290 Rotation rotations;
291 CARD16 reqWidth, reqHeight;
292
293 int nSizes;
294 RRScreenSizePtr pSizes;
295
296 Rotation rotation;
297 int rate;
298 int size;
299#endif
300} rrScrPrivRec, *rrScrPrivPtr;
301
302extern _X_EXPORT DevPrivateKeyRec rrPrivKeyRec;
303#define rrPrivKey (&rrPrivKeyRec)
304
305#define rrGetScrPriv(pScr) ((rrScrPrivPtr)dixLookupPrivate(&(pScr)->devPrivates, rrPrivKey))
306#define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr)
307#define SetRRScreen(s,p) dixSetPrivate(&(s)->devPrivates, rrPrivKey, p)
308
309/*
310 * each window has a list of clients requesting
311 * RRNotify events. Each client has a resource
312 * for each window it selects RRNotify input for,
313 * this resource is used to delete the RRNotifyRec
314 * entry from the per-window queue.
315 */
316
317typedef struct _RREvent *RREventPtr;
318
319typedef struct _RREvent {
320 RREventPtr next;
321 ClientPtr client;
322 WindowPtr window;
323 XID clientResource;
324 int mask;
325} RREventRec;
326
327typedef struct _RRTimes {
328 TimeStamp setTime;
329 TimeStamp configTime;
330} RRTimesRec, *RRTimesPtr;
331
332typedef struct _RRClient {
333 int major_version;
334 int minor_version;
335/* RRTimesRec times[0]; */
336} RRClientRec, *RRClientPtr;
337
338extern _X_EXPORT RESTYPE RRClientType, RREventType; /* resource types for event masks */
339extern _X_EXPORT DevPrivateKeyRec RRClientPrivateKeyRec;
340#define RRClientPrivateKey (&RRClientPrivateKeyRec)
341extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType;
342
343#define VERIFY_RR_OUTPUT(id, ptr, a)\
344 {\
345 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
346 RROutputType, client, a);\
347 if (rc != Success) {\
348 client->errorValue = id;\
349 return rc;\
350 }\
351 }
352
353#define VERIFY_RR_CRTC(id, ptr, a)\
354 {\
355 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
356 RRCrtcType, client, a);\
357 if (rc != Success) {\
358 client->errorValue = id;\
359 return rc;\
360 }\
361 }
362
363#define VERIFY_RR_MODE(id, ptr, a)\
364 {\
365 int rc = dixLookupResourceByType((pointer *)&(ptr), id,\
366 RRModeType, client, a);\
367 if (rc != Success) {\
368 client->errorValue = id;\
369 return rc;\
370 }\
371 }
372
373#define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey))
374#define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient)
375
376/* Initialize the extension */
377extern _X_EXPORT void
378RRExtensionInit (void);
379
380#ifdef RANDR_12_INTERFACE
381/*
382 * Set the range of sizes for the screen
383 */
384extern _X_EXPORT void
385RRScreenSetSizeRange (ScreenPtr pScreen,
386 CARD16 minWidth,
387 CARD16 minHeight,
388 CARD16 maxWidth,
389 CARD16 maxHeight);
390#endif
391
392/* rrscreen.c */
393/*
394 * Notify the extension that the screen size has been changed.
395 * The driver is responsible for calling this whenever it has changed
396 * the size of the screen
397 */
398extern _X_EXPORT void
399RRScreenSizeNotify (ScreenPtr pScreen);
400
401/*
402 * Request that the screen be resized
403 */
404extern _X_EXPORT Bool
405RRScreenSizeSet (ScreenPtr pScreen,
406 CARD16 width,
407 CARD16 height,
408 CARD32 mmWidth,
409 CARD32 mmHeight);
410
411/*
412 * Send ConfigureNotify event to root window when 'something' happens
413 */
414extern _X_EXPORT void
415RRSendConfigNotify (ScreenPtr pScreen);
416
417/*
418 * screen dispatch
419 */
420extern _X_EXPORT int
421ProcRRGetScreenSizeRange (ClientPtr client);
422
423extern _X_EXPORT int
424ProcRRSetScreenSize (ClientPtr client);
425
426extern _X_EXPORT int
427ProcRRGetScreenResources (ClientPtr client);
428
429extern _X_EXPORT int
430ProcRRGetScreenResourcesCurrent (ClientPtr client);
431
432extern _X_EXPORT int
433ProcRRSetScreenConfig (ClientPtr client);
434
435extern _X_EXPORT int
436ProcRRGetScreenInfo (ClientPtr client);
437
438/*
439 * Deliver a ScreenNotify event
440 */
441extern _X_EXPORT void
442RRDeliverScreenEvent (ClientPtr client, WindowPtr pWin, ScreenPtr pScreen);
443
444/* randr.c */
445/*
446 * Send all pending events
447 */
448extern _X_EXPORT void
449RRTellChanged (ScreenPtr pScreen);
450
451/*
452 * Poll the driver for changed information
453 */
454extern _X_EXPORT Bool
455RRGetInfo (ScreenPtr pScreen, Bool force_query);
456
457extern _X_EXPORT Bool RRInit (void);
458
459extern _X_EXPORT Bool RRScreenInit(ScreenPtr pScreen);
460
461extern _X_EXPORT RROutputPtr
462RRFirstOutput (ScreenPtr pScreen);
463
464extern _X_EXPORT Rotation
465RRGetRotation (ScreenPtr pScreen);
466
467extern _X_EXPORT CARD16
468RRVerticalRefresh (xRRModeInfo *mode);
469
470#ifdef RANDR_10_INTERFACE
471/*
472 * This is the old interface, deprecated but left
473 * around for compatibility
474 */
475
476/*
477 * Then, register the specific size with the screen
478 */
479
480extern _X_EXPORT RRScreenSizePtr
481RRRegisterSize (ScreenPtr pScreen,
482 short width,
483 short height,
484 short mmWidth,
485 short mmHeight);
486
487extern _X_EXPORT Bool
488RRRegisterRate (ScreenPtr pScreen,
489 RRScreenSizePtr pSize,
490 int rate);
491
492/*
493 * Finally, set the current configuration of the screen
494 */
495
496extern _X_EXPORT void
497RRSetCurrentConfig (ScreenPtr pScreen,
498 Rotation rotation,
499 int rate,
500 RRScreenSizePtr pSize);
501
502extern _X_EXPORT Bool RRScreenInit (ScreenPtr pScreen);
503
504extern _X_EXPORT Rotation
505RRGetRotation (ScreenPtr pScreen);
506
507#endif
508
509/* rrcrtc.c */
510
511/*
512 * Notify the CRTC of some change; layoutChanged indicates that
513 * some position or size element changed
514 */
515extern _X_EXPORT void
516RRCrtcChanged (RRCrtcPtr crtc, Bool layoutChanged);
517
518/*
519 * Create a CRTC
520 */
521extern _X_EXPORT RRCrtcPtr
522RRCrtcCreate (ScreenPtr pScreen, void *devPrivate);
523
524/*
525 * Set the allowed rotations on a CRTC
526 */
527extern _X_EXPORT void
528RRCrtcSetRotations (RRCrtcPtr crtc, Rotation rotations);
529
530/*
531 * Set whether transforms are allowed on a CRTC
532 */
533extern _X_EXPORT void
534RRCrtcSetTransformSupport (RRCrtcPtr crtc, Bool transforms);
535
536/*
537 * Notify the extension that the Crtc has been reconfigured,
538 * the driver calls this whenever it has updated the mode
539 */
540extern _X_EXPORT Bool
541RRCrtcNotify (RRCrtcPtr crtc,
542 RRModePtr mode,
543 int x,
544 int y,
545 Rotation rotation,
546 RRTransformPtr transform,
547 int numOutputs,
548 RROutputPtr *outputs);
549
550extern _X_EXPORT void
551RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc);
552
553/*
554 * Request that the Crtc be reconfigured
555 */
556extern _X_EXPORT Bool
557RRCrtcSet (RRCrtcPtr crtc,
558 RRModePtr mode,
559 int x,
560 int y,
561 Rotation rotation,
562 int numOutput,
563 RROutputPtr *outputs);
564
565/*
566 * Request that the Crtc gamma be changed
567 */
568
569extern _X_EXPORT Bool
570RRCrtcGammaSet (RRCrtcPtr crtc,
571 CARD16 *red,
572 CARD16 *green,
573 CARD16 *blue);
574
575/*
576 * Request current gamma back from the DDX (if possible).
577 * This includes gamma size.
578 */
579
580extern _X_EXPORT Bool
581RRCrtcGammaGet(RRCrtcPtr crtc);
582
583/*
584 * Notify the extension that the Crtc gamma has been changed
585 * The driver calls this whenever it has changed the gamma values
586 * in the RRCrtcRec
587 */
588
589extern _X_EXPORT Bool
590RRCrtcGammaNotify (RRCrtcPtr crtc);
591
592/*
593 * Set the size of the gamma table at server startup time
594 */
595
596extern _X_EXPORT Bool
597RRCrtcGammaSetSize (RRCrtcPtr crtc,
598 int size);
599
600/*
601 * Return the area of the frame buffer scanned out by the crtc,
602 * taking into account the current mode and rotation
603 */
604
605extern _X_EXPORT void
606RRCrtcGetScanoutSize(RRCrtcPtr crtc, int *width, int *height);
607
608/*
609 * Compute the complete transformation matrix including
610 * client-specified transform, rotation/reflection values and the crtc
611 * offset.
612 *
613 * Return TRUE if the resulting transform is not a simple translation.
614 */
615extern _X_EXPORT Bool
616RRTransformCompute (int x,
617 int y,
618 int width,
619 int height,
620 Rotation rotation,
621 RRTransformPtr rr_transform,
622
623 PictTransformPtr transform,
624 struct pict_f_transform *f_transform,
625 struct pict_f_transform *f_inverse);
626
627/*
628 * Return crtc transform
629 */
630extern _X_EXPORT RRTransformPtr
631RRCrtcGetTransform (RRCrtcPtr crtc);
632
633/*
634 * Check whether the pending and current transforms are the same
635 */
636extern _X_EXPORT Bool
637RRCrtcPendingTransform (RRCrtcPtr crtc);
638
639/*
640 * Destroy a Crtc at shutdown
641 */
642extern _X_EXPORT void
643RRCrtcDestroy (RRCrtcPtr crtc);
644
645
646/*
647 * Set the pending CRTC transformation
648 */
649
650extern _X_EXPORT int
651RRCrtcTransformSet (RRCrtcPtr crtc,
652 PictTransformPtr transform,
653 struct pict_f_transform *f_transform,
654 struct pict_f_transform *f_inverse,
655 char *filter,
656 int filter_len,
657 xFixed *params,
658 int nparams);
659
660/*
661 * Initialize crtc type
662 */
663extern _X_EXPORT Bool
664RRCrtcInit (void);
665
666/*
667 * Initialize crtc type error value
668 */
669extern _X_EXPORT void
670RRCrtcInitErrorValue (void);
671
672/*
673 * Crtc dispatch
674 */
675
676extern _X_EXPORT int
677ProcRRGetCrtcInfo (ClientPtr client);
678
679extern _X_EXPORT int
680ProcRRSetCrtcConfig (ClientPtr client);
681
682extern _X_EXPORT int
683ProcRRGetCrtcGammaSize (ClientPtr client);
684
685extern _X_EXPORT int
686ProcRRGetCrtcGamma (ClientPtr client);
687
688extern _X_EXPORT int
689ProcRRSetCrtcGamma (ClientPtr client);
690
691extern _X_EXPORT int
692ProcRRSetCrtcTransform (ClientPtr client);
693
694extern _X_EXPORT int
695ProcRRGetCrtcTransform (ClientPtr client);
696
697int
698ProcRRGetPanning (ClientPtr client);
699
700int
701ProcRRSetPanning (ClientPtr client);
702
703/* rrdispatch.c */
704extern _X_EXPORT Bool
705RRClientKnowsRates (ClientPtr pClient);
706
707/* rrmode.c */
708/*
709 * Find, and if necessary, create a mode
710 */
711
712extern _X_EXPORT RRModePtr
713RRModeGet (xRRModeInfo *modeInfo,
714 const char *name);
715
716/*
717 * Destroy a mode.
718 */
719
720extern _X_EXPORT void
721RRModeDestroy (RRModePtr mode);
722
723/*
724 * Return a list of modes that are valid for some output in pScreen
725 */
726extern _X_EXPORT RRModePtr *
727RRModesForScreen (ScreenPtr pScreen, int *num_ret);
728
729/*
730 * Initialize mode type
731 */
732extern _X_EXPORT Bool
733RRModeInit (void);
734
735/*
736 * Initialize mode type error value
737 */
738extern _X_EXPORT void
739RRModeInitErrorValue (void);
740
741extern _X_EXPORT int
742ProcRRCreateMode (ClientPtr client);
743
744extern _X_EXPORT int
745ProcRRDestroyMode (ClientPtr client);
746
747extern _X_EXPORT int
748ProcRRAddOutputMode (ClientPtr client);
749
750extern _X_EXPORT int
751ProcRRDeleteOutputMode (ClientPtr client);
752
753/* rroutput.c */
754
755/*
756 * Notify the output of some change. configChanged indicates whether
757 * any external configuration (mode list, clones, connected status)
758 * has changed, or whether the change was strictly internal
759 * (which crtc is in use)
760 */
761extern _X_EXPORT void
762RROutputChanged (RROutputPtr output, Bool configChanged);
763
764/*
765 * Create an output
766 */
767
768extern _X_EXPORT RROutputPtr
769RROutputCreate (ScreenPtr pScreen,
770 const char *name,
771 int nameLength,
772 void *devPrivate);
773
774/*
775 * Notify extension that output parameters have been changed
776 */
777extern _X_EXPORT Bool
778RROutputSetClones (RROutputPtr output,
779 RROutputPtr *clones,
780 int numClones);
781
782extern _X_EXPORT Bool
783RROutputSetModes (RROutputPtr output,
784 RRModePtr *modes,
785 int numModes,
786 int numPreferred);
787
788extern _X_EXPORT int
789RROutputAddUserMode (RROutputPtr output,
790 RRModePtr mode);
791
792extern _X_EXPORT int
793RROutputDeleteUserMode (RROutputPtr output,
794 RRModePtr mode);
795
796extern _X_EXPORT Bool
797RROutputSetCrtcs (RROutputPtr output,
798 RRCrtcPtr *crtcs,
799 int numCrtcs);
800
801extern _X_EXPORT Bool
802RROutputSetConnection (RROutputPtr output,
803 CARD8 connection);
804
805extern _X_EXPORT Bool
806RROutputSetSubpixelOrder (RROutputPtr output,
807 int subpixelOrder);
808
809extern _X_EXPORT Bool
810RROutputSetPhysicalSize (RROutputPtr output,
811 int mmWidth,
812 int mmHeight);
813
814extern _X_EXPORT void
815RRDeliverOutputEvent(ClientPtr client, WindowPtr pWin, RROutputPtr output);
816
817extern _X_EXPORT void
818RROutputDestroy (RROutputPtr output);
819
820extern _X_EXPORT int
821ProcRRGetOutputInfo (ClientPtr client);
822
823extern _X_EXPORT int
824ProcRRSetOutputPrimary (ClientPtr client);
825
826extern _X_EXPORT int
827ProcRRGetOutputPrimary (ClientPtr client);
828
829/*
830 * Initialize output type
831 */
832extern _X_EXPORT Bool
833RROutputInit (void);
834
835/*
836 * Initialize output type error value
837 */
838extern _X_EXPORT void
839RROutputInitErrorValue (void);
840
841/* rrpointer.c */
842extern _X_EXPORT void
843RRPointerMoved (ScreenPtr pScreen, int x, int y);
844
845extern _X_EXPORT void
846RRPointerScreenConfigured (ScreenPtr pScreen);
847
848/* rrproperty.c */
849
850extern _X_EXPORT void
851RRDeleteAllOutputProperties (RROutputPtr output);
852
853extern _X_EXPORT RRPropertyValuePtr
854RRGetOutputProperty (RROutputPtr output, Atom property, Bool pending);
855
856extern _X_EXPORT RRPropertyPtr
857RRQueryOutputProperty (RROutputPtr output, Atom property);
858
859extern _X_EXPORT void
860RRDeleteOutputProperty (RROutputPtr output, Atom property);
861
862extern _X_EXPORT Bool
863RRPostPendingProperties (RROutputPtr output);
864
865extern _X_EXPORT int
866RRChangeOutputProperty (RROutputPtr output, Atom property, Atom type,
867 int format, int mode, unsigned long len,
868 pointer value, Bool sendevent, Bool pending);
869
870extern _X_EXPORT int
871RRConfigureOutputProperty (RROutputPtr output, Atom property,
872 Bool pending, Bool range, Bool immutable,
873 int num_values, INT32 *values);
874extern _X_EXPORT int
875ProcRRChangeOutputProperty (ClientPtr client);
876
877extern _X_EXPORT int
878ProcRRGetOutputProperty (ClientPtr client);
879
880extern _X_EXPORT int
881ProcRRListOutputProperties (ClientPtr client);
882
883extern _X_EXPORT int
884ProcRRQueryOutputProperty (ClientPtr client);
885
886extern _X_EXPORT int
887ProcRRConfigureOutputProperty (ClientPtr client);
888
889extern _X_EXPORT int
890ProcRRDeleteOutputProperty (ClientPtr client);
891
892/* rrxinerama.c */
893#ifdef XINERAMA
894extern _X_EXPORT void
895RRXineramaExtensionInit(void);
896#endif
897
898#endif /* _RANDRSTR_H_ */
899
900/*
901
902randr extension implementation structure
903
904Query state:
905 ProcRRGetScreenInfo/ProcRRGetScreenResources
906 RRGetInfo
907
908 • Request configuration from driver, either 1.0 or 1.2 style
909 • These functions only record state changes, all
910 other actions are pended until RRTellChanged is called
911
912 ->rrGetInfo
913 1.0:
914 RRRegisterSize
915 RRRegisterRate
916 RRSetCurrentConfig
917 1.2:
918 RRScreenSetSizeRange
919 RROutputSetCrtcs
920 RRModeGet
921 RROutputSetModes
922 RROutputSetConnection
923 RROutputSetSubpixelOrder
924 RROutputSetClones
925 RRCrtcNotify
926
927 • Must delay scanning configuration until after ->rrGetInfo returns
928 because some drivers will call SetCurrentConfig in the middle
929 of the ->rrGetInfo operation.
930
931 1.0:
932
933 • Scan old configuration, mirror to new structures
934
935 RRScanOldConfig
936 RRCrtcCreate
937 RROutputCreate
938 RROutputSetCrtcs
939 RROutputSetConnection
940 RROutputSetSubpixelOrder
941 RROldModeAdd • This adds modes one-at-a-time
942 RRModeGet
943 RRCrtcNotify
944
945 • send events, reset pointer if necessary
946
947 RRTellChanged
948 WalkTree (sending events)
949
950 • when layout has changed:
951 RRPointerScreenConfigured
952 RRSendConfigNotify
953
954Asynchronous state setting (1.2 only)
955 When setting state asynchronously, the driver invokes the
956 ->rrGetInfo function and then calls RRTellChanged to flush
957 the changes to the clients and reset pointer if necessary
958
959Set state
960
961 ProcRRSetScreenConfig
962 RRCrtcSet
963 1.2:
964 ->rrCrtcSet
965 RRCrtcNotify
966 1.0:
967 ->rrSetConfig
968 RRCrtcNotify
969 RRTellChanged
970 */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette