Use xf86ScreenToScrn and xf86ScrnToScreen
Part of the new compat-api.h are ScreenPtr <-> ScrnInfoPtr APIs.
Let's use them.
Cherry-picked from:
https://chromium.googlesource.com/chromiumos%2Fthird_party%2Fxf86-video-armsoc
ec81d1ef9d774af1189a05e5ce5a091d729d994a
Change-Id: I347f5973eae02066b9a6fc27e07599e519b95abf
diff --git a/src/armsoc_dri2.c b/src/armsoc_dri2.c
index 1290b92..e5746d6 100644
--- a/src/armsoc_dri2.c
+++ b/src/armsoc_dri2.c
@@ -116,7 +116,7 @@
canflip(DrawablePtr pDraw)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
if (pARMSOC->NoFlip) {
@@ -163,7 +163,7 @@
unsigned int format)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCDRI2BufferRec *buf = calloc(1, sizeof(*buf));
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
PixmapPtr pPixmap = NULL;
@@ -272,7 +272,7 @@
* instead (since it is at least refcntd)
*/
ScreenPtr pScreen = buf->pPixmaps[0]->drawable.pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
int numBuffers, i;
@@ -311,7 +311,7 @@
DRI2BufferPtr pDstBuffer, DRI2BufferPtr pSrcBuffer)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
DrawablePtr pSrcDraw = dri2draw(pDraw, pSrcBuffer);
DrawablePtr pDstDraw = dri2draw(pDraw, pDstBuffer);
RegionPtr pCopyClip;
@@ -351,7 +351,7 @@
ARMSOCDRI2GetMSC(DrawablePtr pDraw, CARD64 *ust, CARD64 *msc)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
drmVBlank vbl = { .request = {
.type = DRM_VBLANK_RELATIVE,
@@ -406,7 +406,7 @@
static Bool allocNextBuffer(DrawablePtr pDraw, PixmapPtr *ppPixmap,
uint32_t *name) {
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct armsoc_bo *bo;
PixmapPtr pPixmap;
int ret;
@@ -465,7 +465,7 @@
static void nextBuffer(DrawablePtr pDraw, struct ARMSOCDRI2BufferRec *backBuf)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
if (pARMSOC->driNumBufs <= 2) {
@@ -521,7 +521,7 @@
ARMSOCDRI2SwapComplete(struct ARMSOCDRISwapCmd *cmd)
{
ScreenPtr pScreen = cmd->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
DrawablePtr pDraw = NULL;
int status;
@@ -597,7 +597,7 @@
DRI2SwapEventPtr func, void *data)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
struct ARMSOCDRI2BufferRec *src = ARMSOCBUF(pSrcBuffer);
struct ARMSOCDRI2BufferRec *dst = ARMSOCBUF(pDstBuffer);
@@ -745,7 +745,7 @@
CARD64 target_msc, CARD64 divisor, CARD64 remainder)
{
ScreenPtr pScreen = pDraw->pScreen;
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
ERROR_MSG("not implemented");
return FALSE;
@@ -757,7 +757,7 @@
Bool
ARMSOCDRI2ScreenInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
DRI2InfoRec info = {
.version = 5,
@@ -791,7 +791,7 @@
void
ARMSOCDRI2CloseScreen(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
while (pARMSOC->pending_flips > 0) {
DEBUG_MSG("waiting..");
diff --git a/src/armsoc_driver.c b/src/armsoc_driver.c
index 7b99863..c7a1624 100644
--- a/src/armsoc_driver.c
+++ b/src/armsoc_driver.c
@@ -793,7 +793,7 @@
static void
ARMSOCAccelInit(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
if (!pARMSOC->pARMSOCEXA)
@@ -814,7 +814,7 @@
static Bool
ARMSOCScreenInit(SCREEN_INIT_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
#ifndef XF86_SCRN_INTERFACE
int scrnIndex = pScrn->scrnIndex;
#endif
@@ -1103,7 +1103,7 @@
static Bool
ARMSOCCreateScreenResources(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
swap(pARMSOC, pScreen, CreateScreenResources);
diff --git a/src/armsoc_driver.h b/src/armsoc_driver.h
index 8835e66..c4c1fd5 100644
--- a/src/armsoc_driver.h
+++ b/src/armsoc_driver.h
@@ -160,7 +160,7 @@
/** Return a pointer to the driver's private structure. */
#define ARMSOCPTR(p) ((struct ARMSOCRec *)((p)->driverPrivate))
#define ARMSOCPTR_FROM_SCREEN(pScreen) \
- ((struct ARMSOCRec *)(xf86Screens[(pScreen)->myNum])->driverPrivate)
+ ((struct ARMSOCRec *)(xf86ScreenToScrn(pScreen))->driverPrivate)
#define wrap(priv, real, mem, func) {\
priv->Saved##mem = real->mem; \
diff --git a/src/armsoc_exa.c b/src/armsoc_exa.c
index 879c605..57e2a6d 100644
--- a/src/armsoc_exa.c
+++ b/src/armsoc_exa.c
@@ -80,7 +80,7 @@
{
struct ARMSOCPixmapPrivRec *priv =
calloc(sizeof(struct ARMSOCPixmapPrivRec), 1);
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
enum armsoc_buf_type buf_type = ARMSOC_BO_NON_SCANOUT;
diff --git a/src/armsoc_exa.h b/src/armsoc_exa.h
index ec22108..002b351 100644
--- a/src/armsoc_exa.h
+++ b/src/armsoc_exa.h
@@ -73,7 +73,8 @@
static inline ScrnInfoPtr
pix2scrn(PixmapPtr pPixmap)
{
- return xf86Screens[(pPixmap)->drawable.pScreen->myNum];
+ ScreenPtr pScreen = (pPixmap)->drawable.pScreen;
+ return xf86ScreenToScrn(pScreen);
}
static inline PixmapPtr
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 5ef8a2e..a6edfa8 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -501,7 +501,7 @@
Bool
drmmode_cursor_init(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
struct drmmode_rec *drmmode = drmmode_from_scrn(pScrn);
struct drmmode_cursor_rec *cursor;
@@ -617,7 +617,7 @@
void drmmode_cursor_fini(ScreenPtr pScreen)
{
- ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct drmmode_rec *drmmode = drmmode_from_scrn(pScrn);
struct drmmode_cursor_rec *cursor = drmmode->cursor;
@@ -1425,7 +1425,8 @@
int
drmmode_page_flip(DrawablePtr draw, uint32_t fb_id, void *priv)
{
- ScrnInfoPtr pScrn = xf86Screens[draw->pScreen->myNum];
+ ScreenPtr pScreen = draw->pScreen;
+ ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
struct ARMSOCRec *pARMSOC = ARMSOCPTR(pScrn);
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
struct drmmode_crtc_private_rec *crtc = config->crtc[0]->driver_private;
@@ -1499,7 +1500,7 @@
if (memcmp(&s.st_rdev, &udev_devnum, sizeof(dev_t)) == 0 &&
hotplug && atoi(hotplug) == 1) {
- RRGetInfo(screenInfo.screens[pScrn->scrnIndex], TRUE);
+ RRGetInfo(xf86ScrnToScreen(pScrn), TRUE);
}
udev_device_unref(dev);
}