Start moving to new randr 1.2 definition
This commit is contained in:
parent
fbaeb0b2a1
commit
d7f1f286b7
123
randr/mirandr.c
123
randr/mirandr.c
|
@ -34,6 +34,29 @@
|
|||
#include "randrstr.h"
|
||||
#include <stdio.h>
|
||||
|
||||
Bool
|
||||
miRRGetInfo (ScreenPtr pScreen, Rotation *rotations)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Any hardware that can actually change anything will need something
|
||||
* different here
|
||||
*/
|
||||
Bool
|
||||
miRRCrtcSet (ScreenPtr pScreen,
|
||||
RRCrtcPtr crtc,
|
||||
RRModePtr mode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation,
|
||||
int numOutput,
|
||||
RROutputPtr *outputs)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function assumes that only a single depth can be
|
||||
* displayed at a time, but that all visuals of that depth
|
||||
|
@ -43,70 +66,52 @@
|
|||
* XXX what to do here....
|
||||
*/
|
||||
|
||||
Bool
|
||||
miRRGetInfo (ScreenPtr pScreen, Rotation *rotations)
|
||||
{
|
||||
int i;
|
||||
Bool setConfig = FALSE;
|
||||
RRMonitorPtr pMonitor;
|
||||
|
||||
pMonitor = RRRegisterMonitor (pScreen, NULL, RR_Rotate_0);
|
||||
for (i = 0; i < pScreen->numDepths; i++)
|
||||
{
|
||||
if (pScreen->allowedDepths[i].numVids)
|
||||
{
|
||||
xRRMonitorMode rrMode;
|
||||
RRModePtr pMode;
|
||||
char name[64];
|
||||
|
||||
sprintf (name, "%dx%d", pScreen->width, pScreen->height);
|
||||
memset (&rrMode, '\0', sizeof (rrMode));
|
||||
rrMode.width = pScreen->width;
|
||||
rrMode.height = pScreen->height;
|
||||
rrMode.widthInMillimeters = pScreen->mmWidth;
|
||||
rrMode.heightInMillimeters = pScreen->mmHeight;
|
||||
rrMode.nameLength = strlen (name);
|
||||
pMonitor = RRRegisterMonitor (pScreen, NULL, RR_Rotate_0);
|
||||
pMode = RRRegisterMode (pMonitor,
|
||||
&rrMode,
|
||||
name);
|
||||
if (!pMode)
|
||||
return FALSE;
|
||||
if (!setConfig)
|
||||
{
|
||||
RRSetCurrentMode (pMonitor, pMode, 0, 0, RR_Rotate_0);
|
||||
setConfig = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Any hardware that can actually change anything will need something
|
||||
* different here
|
||||
*/
|
||||
Bool
|
||||
miRRSetMode (ScreenPtr pScreen,
|
||||
int monitor,
|
||||
RRModePtr pMode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
miRandRInit (ScreenPtr pScreen)
|
||||
{
|
||||
rrScrPrivPtr rp;
|
||||
rrScrPrivPtr pScrPriv;
|
||||
RRModePtr mode;
|
||||
RRCrtcPtr crtc;
|
||||
RROutputPtr output;
|
||||
xRRModeInfo modeInfo;
|
||||
char name[64];
|
||||
|
||||
if (!RRScreenInit (pScreen))
|
||||
return FALSE;
|
||||
rp = rrGetScrPriv(pScreen);
|
||||
rp->rrGetInfo = miRRGetInfo;
|
||||
rp->rrSetMode = miRRSetMode;
|
||||
pScrPriv = rrGetScrPriv(pScreen);
|
||||
pScrPriv->rrGetInfo = miRRGetInfo;
|
||||
pScrPriv->rrCrtcSet = miRRCrtcSet;
|
||||
|
||||
RRScreenSetSizeRange (pScreen,
|
||||
pScreen->width, pScreen->height,
|
||||
pScreen->width, pScreen->height);
|
||||
|
||||
sprintf (name, "%dx%d", pScreen->width, pScreen->height);
|
||||
memset (&modeInfo, '\0', sizeof (modeInfo));
|
||||
modeInfo.width = pScreen->width;
|
||||
modeInfo.height = pScreen->height;
|
||||
modeInfo.mmWidth = pScreen->mmWidth;
|
||||
modeInfo.mmHeight = pScreen->mmHeight;
|
||||
modeInfo.nameLength = strlen (name);
|
||||
|
||||
mode = RRModeGet (pScreen, &modeInfo, name);
|
||||
if (!mode)
|
||||
return FALSE;
|
||||
|
||||
crtc = RRCrtcCreate (pScreen, NULL);
|
||||
if (!crtc)
|
||||
return FALSE;
|
||||
|
||||
output = RROutputCreate (pScreen, "screen", 6, NULL);
|
||||
if (!output)
|
||||
return FALSE;
|
||||
if (!RROutputSet (output,
|
||||
NULL, 0, /* clones */
|
||||
&mode, 1, /* modes */
|
||||
&crtc, 1, /* crtcs */
|
||||
RR_Connected))
|
||||
return FALSE;
|
||||
if (!RRCrtcSet (crtc, mode, 0, 0, RR_Rotate_0, 1, &output))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
|
1352
randr/randr.c
1352
randr/randr.c
File diff suppressed because it is too large
Load Diff
235
randr/randrstr.h
235
randr/randrstr.h
|
@ -34,71 +34,94 @@
|
|||
|
||||
#include <X11/extensions/randrproto.h>
|
||||
|
||||
/* required for ABI compatibility for now */
|
||||
#define RANDR_SCREEN_INTERFACE 1
|
||||
|
||||
typedef XID RRMode;
|
||||
typedef XID RROutput;
|
||||
typedef XID RRCrtc;
|
||||
|
||||
/*
|
||||
* Modeline for a monitor. Name follows directly after this struct
|
||||
*/
|
||||
|
||||
#define RRModeName(pMode) ((char *) (pMode + 1))
|
||||
typedef struct _rrMode RRModeRec, *RRModePtr;
|
||||
typedef struct _rrCrtc RRCrtcRec, *RRCrtcPtr;
|
||||
typedef struct _rrOutput RROutputRec, *RROutputPtr;
|
||||
|
||||
typedef struct _rrMode {
|
||||
struct _rrMode *next;
|
||||
Bool referenced;
|
||||
Bool oldReferenced;
|
||||
int id;
|
||||
xRRMonitorMode mode;
|
||||
} RRMode, *RRModePtr;
|
||||
struct _rrMode {
|
||||
RRMode id;
|
||||
int refcnt;
|
||||
xRRModeInfo mode;
|
||||
char *name;
|
||||
};
|
||||
|
||||
typedef struct _rrMonitor {
|
||||
struct _rrMonitor *next;
|
||||
struct _rrCrtc {
|
||||
RRCrtc id;
|
||||
ScreenPtr pScreen;
|
||||
RRModePtr pModes;
|
||||
void *identifier; /* made unique by DDX */
|
||||
int id; /* index in list of monitors */
|
||||
Bool referenced;
|
||||
Bool oldReferenced;
|
||||
Rotation rotations;
|
||||
|
||||
/*
|
||||
* Current state
|
||||
*/
|
||||
RRModePtr pMode;
|
||||
RRModePtr mode;
|
||||
int x, y;
|
||||
Rotation rotation;
|
||||
} RRMonitor, *RRMonitorPtr;
|
||||
Rotation rotations;
|
||||
int numPossibleOutputs;
|
||||
RROutputPtr *possibleOutputs;
|
||||
Bool changed;
|
||||
void *devPrivate;
|
||||
};
|
||||
|
||||
typedef Bool (*RRSetScreenSizeProcPtr) (ScreenPtr pScreen,
|
||||
struct _rrOutput {
|
||||
RROutput id;
|
||||
ScreenPtr pScreen;
|
||||
char *name;
|
||||
int nameLength;
|
||||
CARD8 connection;
|
||||
CARD8 subpixelOrder;
|
||||
RRCrtcPtr crtc;
|
||||
int numCrtcs;
|
||||
RRCrtcPtr *crtcs;
|
||||
int numClones;
|
||||
RROutputPtr *outputs;
|
||||
int numModes;
|
||||
RRModePtr *modes;
|
||||
Bool changed;
|
||||
void *devPrivate;
|
||||
};
|
||||
|
||||
typedef Bool (*RRScreenSetSizeProcPtr) (ScreenPtr pScreen,
|
||||
CARD16 width,
|
||||
CARD16 height,
|
||||
CARD32 widthInMM,
|
||||
CARD32 heightInMM);
|
||||
|
||||
typedef Bool (*RRSetModeProcPtr) (ScreenPtr pScreen,
|
||||
int monitor,
|
||||
RRModePtr pMode,
|
||||
typedef Bool (*RRCrtcSetProcPtr) (ScreenPtr pScreen,
|
||||
RRCrtcPtr crtc,
|
||||
RRModePtr mode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation);
|
||||
Rotation rotation,
|
||||
int numOutput,
|
||||
RROutputPtr *outputs);
|
||||
|
||||
typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations);
|
||||
typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen);
|
||||
|
||||
|
||||
#ifdef RANDR_SCREEN_INTERFACE
|
||||
|
||||
/* These are for 1.0 compatibility */
|
||||
|
||||
typedef struct _rrRefresh {
|
||||
CARD16 refresh;
|
||||
RRModePtr pMode;
|
||||
} RRRefreshRec, *RRRefreshPtr;
|
||||
CARD16 rate;
|
||||
RRModePtr mode;
|
||||
} RRScreenRate, *RRScreenRatePtr;
|
||||
|
||||
typedef struct _rrScreenSize {
|
||||
int id;
|
||||
short width, height;
|
||||
short mmWidth, mmHeight;
|
||||
int nrefresh;
|
||||
RRRefreshPtr refresh;
|
||||
} RRScreenSizeRec, *RRScreenSizePtr;
|
||||
int nRates;
|
||||
RRScreenRatePtr pRates;
|
||||
} RRScreenSize, *RRScreenSizePtr;
|
||||
|
||||
#ifdef RANDR_SCREEN_INTERFACE
|
||||
|
||||
typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen,
|
||||
Rotation rotation,
|
||||
|
@ -117,8 +140,8 @@ typedef struct _rrScrPriv {
|
|||
RRSetConfigProcPtr rrSetConfig;
|
||||
#endif
|
||||
RRGetInfoProcPtr rrGetInfo;
|
||||
RRSetScreenSizeProcPtr rrSetScreenSize;
|
||||
RRSetModeProcPtr rrSetMode;
|
||||
RRScreenSetSizeProcPtr rrScreenSetSize;
|
||||
RRCrtcSetProcPtr rrCrtcSet;
|
||||
|
||||
/*
|
||||
* Private part of the structure; not considered part of the ABI
|
||||
|
@ -126,20 +149,34 @@ typedef struct _rrScrPriv {
|
|||
TimeStamp lastSetTime; /* last changed by client */
|
||||
TimeStamp lastConfigTime; /* possible configs changed */
|
||||
RRCloseScreenProcPtr CloseScreen;
|
||||
Bool changed;
|
||||
CARD16 minWidth, minHeight;
|
||||
CARD16 maxWidth, maxHeight;
|
||||
|
||||
/*
|
||||
* monitor data
|
||||
*/
|
||||
RRMonitorPtr pMonitors;
|
||||
/* modes, outputs and crtcs */
|
||||
int numModes;
|
||||
RRModePtr *modes;
|
||||
|
||||
int numOutputs;
|
||||
RROutputPtr *outputs;
|
||||
|
||||
int numCrtcs;
|
||||
RRCrtcPtr *crtcs;
|
||||
|
||||
#ifdef RANDR_SCREEN_INTERFACE
|
||||
/*
|
||||
* Configuration information
|
||||
*/
|
||||
Rotation rotations;
|
||||
CARD16 reqWidth, reqHeight;
|
||||
|
||||
|
||||
int nSizes;
|
||||
RRScreenSizePtr pSizes;
|
||||
|
||||
RRScreenSizePtr pSize;
|
||||
Rotation rotation;
|
||||
int rate;
|
||||
int size;
|
||||
#endif
|
||||
} rrScrPrivRec, *rrScrPrivPtr;
|
||||
|
||||
|
@ -154,33 +191,91 @@ void
|
|||
RRExtensionInit (void);
|
||||
|
||||
/*
|
||||
* Then, register a monitor with the screen
|
||||
* Set the range of sizes for the screen
|
||||
*/
|
||||
|
||||
RRMonitorPtr
|
||||
RRRegisterMonitor (ScreenPtr pScreen,
|
||||
void *identifier,
|
||||
Rotation rotations);
|
||||
void
|
||||
RRScreenSetSizeRange (ScreenPtr pScreen,
|
||||
CARD16 minWidth,
|
||||
CARD16 minHeight,
|
||||
CARD16 maxWidth,
|
||||
CARD16 maxHeight);
|
||||
|
||||
/*
|
||||
* Next, register the list of modes with the monitor
|
||||
* Create a CRTC
|
||||
*/
|
||||
RRCrtcPtr
|
||||
RRCrtcCreate (ScreenPtr pScreen,
|
||||
void *devPrivate);
|
||||
|
||||
|
||||
/*
|
||||
* Use this value for any num parameter to indicate that
|
||||
* the related data are unchanged
|
||||
*/
|
||||
#define RR_NUM_UNCHANGED -1
|
||||
|
||||
/*
|
||||
* Notify the extension that the Crtc has been reconfigured
|
||||
*/
|
||||
Bool
|
||||
RRCrtcSet (RRCrtcPtr crtc,
|
||||
RRModePtr mode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation,
|
||||
int numOutput,
|
||||
RROutputPtr *outputs);
|
||||
|
||||
/*
|
||||
* Destroy a Crtc at shutdown
|
||||
*/
|
||||
void
|
||||
RRCrtcDestroy (RRCrtcPtr crtc);
|
||||
|
||||
/*
|
||||
* Find, and if necessary, create a mode
|
||||
*/
|
||||
|
||||
RRModePtr
|
||||
RRRegisterMode (RRMonitorPtr pMonitor,
|
||||
xRRMonitorMode *pMode,
|
||||
char *name);
|
||||
RRModeGet (ScreenPtr pScreen,
|
||||
xRRModeInfo *modeInfo,
|
||||
char *name);
|
||||
|
||||
/*
|
||||
* Finally, set the current configuration of each monitor
|
||||
* Destroy a mode.
|
||||
*/
|
||||
|
||||
void
|
||||
RRSetCurrentMode (RRMonitorPtr pMonitor,
|
||||
RRModePtr pMode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation);
|
||||
RRModeDestroy (RRModePtr mode);
|
||||
|
||||
/*
|
||||
* Create an output
|
||||
*/
|
||||
|
||||
RROutputPtr
|
||||
RROutputCreate (ScreenPtr pScreen,
|
||||
char *name,
|
||||
int nameLength,
|
||||
void *devPrivate);
|
||||
|
||||
/*
|
||||
* Notify extension that output parameters have been changed
|
||||
*/
|
||||
Bool
|
||||
RROutputSet (RROutputPtr output,
|
||||
RROutputPtr *clones,
|
||||
int numClones,
|
||||
RRModePtr *modes,
|
||||
int numModes,
|
||||
RRCrtcPtr *crtcs,
|
||||
int numCrtcs,
|
||||
CARD8 connection);
|
||||
|
||||
void
|
||||
RROutputDestroy (RROutputPtr output);
|
||||
|
||||
void
|
||||
RRTellChanged (ScreenPtr pScreen);
|
||||
|
||||
Bool RRScreenInit(ScreenPtr pScreen);
|
||||
|
||||
|
@ -197,12 +292,14 @@ Bool
|
|||
miRRGetScreenInfo (ScreenPtr pScreen);
|
||||
|
||||
Bool
|
||||
miRRSetMode (ScreenPtr pScreen,
|
||||
int monitor,
|
||||
RRModePtr pMode,
|
||||
miRRCrtcSet (ScreenPtr pScreen,
|
||||
RRCrtcPtr crtc,
|
||||
RRModePtr mode,
|
||||
int x,
|
||||
int y,
|
||||
Rotation rotation);
|
||||
Rotation rotation,
|
||||
int numOutput,
|
||||
RROutputPtr *outputs);
|
||||
|
||||
#ifdef RANDR_SCREEN_INTERFACE
|
||||
/*
|
||||
|
@ -225,9 +322,6 @@ Bool RRRegisterRate (ScreenPtr pScreen,
|
|||
RRScreenSizePtr pSize,
|
||||
int rate);
|
||||
|
||||
Bool RRRegisterRotation (ScreenPtr pScreen,
|
||||
Rotation rotation);
|
||||
|
||||
/*
|
||||
* Finally, set the current configuration of the screen
|
||||
*/
|
||||
|
@ -238,17 +332,16 @@ RRSetCurrentConfig (ScreenPtr pScreen,
|
|||
int rate,
|
||||
RRScreenSizePtr pSize);
|
||||
|
||||
Bool RRScreenInit (ScreenPtr pScreen);
|
||||
|
||||
Rotation
|
||||
RRGetRotation (ScreenPtr pScreen);
|
||||
|
||||
int
|
||||
RRSetScreenConfig (ScreenPtr pScreen,
|
||||
Rotation rotation,
|
||||
int rate,
|
||||
RRScreenSizePtr pSize);
|
||||
|
||||
Bool
|
||||
miRRSetConfig (ScreenPtr pScreen,
|
||||
Rotation rotation,
|
||||
int rate,
|
||||
RRScreenSizePtr size);
|
||||
|
||||
#endif
|
||||
#endif /* _RANDRSTR_H_ */
|
||||
|
|
Loading…
Reference in New Issue
Block a user