VirtualBox

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

最後變更 在這個檔案從46019是 17471,由 vboxsync 提交於 16 年 前

export to OSE

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

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