diff options
Diffstat (limited to 'randr/randrstr.h')
-rw-r--r-- | randr/randrstr.h | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/randr/randrstr.h b/randr/randrstr.h index 7c553f21f..10dd46d46 100644 --- a/randr/randrstr.h +++ b/randr/randrstr.h @@ -81,6 +81,7 @@ typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr; typedef struct _rrScreenConfig RRScreenConfigRec, *RRScreenConfigPtr; typedef struct _rrCrtcConfig RRCrtcConfigRec, *RRCrtcConfigPtr; typedef struct _rrOutput RROutputRec, *RROutputPtr; +typedef struct _rrPixmap RRPixmapRec, *RRPixmapPtr; struct _rrMode { int refcnt; @@ -107,6 +108,12 @@ struct _rrProperty { RRPropertyValueRec current, pending; }; +struct _rrPixmap { + XID id; + PixmapPtr pixmap; + Rotation rotations; +}; + struct _rrCrtc { RRCrtc id; ScreenPtr pScreen; @@ -136,6 +143,7 @@ struct _rrCrtc { struct pict_f_transform f_inverse; struct pict_f_transform f_sprite_position; /* crtc from screen */ struct pict_f_transform f_sprite_image_inverse; /* image from crtc */ + int pixmap_x, pixmap_y; }; struct _rrScreenConfig { @@ -204,7 +212,9 @@ typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen, Rotation rotation, int numOutputs, RROutputPtr *outputs, - PixmapPtr scanout_pixmap); + PixmapPtr scanout_pixmap, + int pixmap_x, + int pixmap_y); typedef Bool (*RRCrtcSetGammaProcPtr) (ScreenPtr pScreen, RRCrtcPtr crtc); @@ -448,6 +458,18 @@ extern _X_EXPORT RESTYPE RRCrtcType, RRModeType, RROutputType; #define GetRRClient(pClient) ((RRClientPtr)dixLookupPrivate(&(pClient)->devPrivates, RRClientPrivateKey)) #define rrClientPriv(pClient) RRClientPtr pRRClient = GetRRClient(pClient) +extern _X_EXPORT RESTYPE RRPixmapType; + +#define VERIFY_RR_PIXMAP(id, ptr, a) \ + { \ + int rc = dixLookupResourceByType((pointer *)&(ptr), id, \ + RRPixmapType, client, a); \ + if (rc != Success) { \ + client->errorValue = (id); \ + return rc; \ + } \ + } + /* Initialize the extension */ extern _X_EXPORT void RRExtensionInit (void); @@ -630,7 +652,9 @@ RRCrtcNotify (RRCrtcPtr crtc, RRTransformPtr transform, int numOutputs, RROutputPtr *outputs, - PixmapPtr scanoutPixmap); + PixmapPtr scanoutPixmap, + int pixmap_x, + int pixmap_y); extern _X_EXPORT void RRDeliverCrtcEvent (ClientPtr client, WindowPtr pWin, RRCrtcPtr crtc); @@ -646,7 +670,9 @@ RRCrtcSet (RRCrtcPtr crtc, Rotation rotation, int numOutput, RROutputPtr *outputs, - PixmapPtr scanout_pixmap); + PixmapPtr scanout_pixmap, + int pixmap_x, + int pixmap_y); /* * Request that the Crtc gamma be changed @@ -729,6 +755,13 @@ RRCrtcTransformSet (RRCrtcPtr crtc, int nparams); /* + * The pixmap associated with this CRTC has been destroyed, + * reconfigure the screen so that this crtc shows something + */ +void +RRCrtcLostPixmap(RRCrtcPtr crtc); + +/* * Initialize crtc type */ extern _X_EXPORT Bool |