summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stone <daniel@fooishbar.org>2012-10-24 16:23:28 +1100
committerDaniel Stone <daniel@fooishbar.org>2012-10-24 16:24:01 +1100
commit5b083465ddd0d7f90e9069fa76a3ffe4d845e56b (patch)
tree53af775321f19fac7d6973b79ef3eb7077d54752
parent8044a6ae5b5b04a95459256ecba4a426750585b3 (diff)
Adapt to scrnIndex removal and API changes
Import compat-api.h from xf86-video-intel and make use of it where necessary. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
-rw-r--r--src/Makefile.am3
-rw-r--r--src/compat-api.h106
-rw-r--r--src/wlshm.c80
3 files changed, 148 insertions, 41 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 3d27981..7c84179 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -33,4 +33,5 @@ wlshm_drv_ladir = @moduledir@/drivers
wlshm_drv_la_SOURCES = \
wlshm.c \
- wlshm.h
+ wlshm.h \
+ compat-api.h
diff --git a/src/compat-api.h b/src/compat-api.h
new file mode 100644
index 0000000..6b76572
--- /dev/null
+++ b/src/compat-api.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2012 Red Hat, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Dave Airlie <airlied@redhat.com>
+ */
+
+/* this file provides API compat between server post 1.13 and pre it,
+ it should be reused inside as many drivers as possible */
+#ifndef COMPAT_API_H
+#define COMPAT_API_H
+
+#ifndef GLYPH_HAS_GLYPH_PICTURE_ACCESSOR
+#define GetGlyphPicture(g, s) GlyphPicture((g))[(s)->myNum]
+#define SetGlyphPicture(g, s, p) GlyphPicture((g))[(s)->myNum] = p
+#endif
+
+#ifndef XF86_HAS_SCRN_CONV
+#define xf86ScreenToScrn(s) xf86Screens[(s)->myNum]
+#define xf86ScrnToScreen(s) screenInfo.screens[(s)->scrnIndex]
+#endif
+
+#ifndef XF86_SCRN_INTERFACE
+
+#define SCRN_ARG_TYPE int
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr scrn = xf86Screens[(arg1)]
+
+#define SCREEN_ARG_TYPE int
+#define SCREEN_PTR(arg1) ScreenPtr screen = screenInfo.screens[(arg1)]
+
+#define SCREEN_INIT_ARGS_DECL int scrnIndex, ScreenPtr screen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer timeout, pointer read_mask
+#define BLOCKHANDLER_ARGS arg, blockData, timeout, read_mask
+
+#define WAKEUPHANDLER_ARGS_DECL int arg, pointer wakeupData, unsigned long result, pointer read_mask
+#define WAKEUPHANDLER_ARGS arg, wakeupData, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr screen
+#define CLOSE_SCREEN_ARGS scrnIndex, screen
+
+#define ADJUST_FRAME_ARGS_DECL int arg, int x, int y, int flags
+#define ADJUST_FRAME_ARGS(arg, x, y) (arg)->scrnIndex, x, y, 0
+
+#define SWITCH_MODE_ARGS_DECL int arg, DisplayModePtr mode, int flags
+#define SWITCH_MODE_ARGS(arg, m) (arg)->scrnIndex, m, 0
+
+#define FREE_SCREEN_ARGS_DECL int arg, int flags
+
+#define VT_FUNC_ARGS_DECL int arg, int flags
+#define VT_FUNC_ARGS(flags) scrn->scrnIndex, (flags)
+
+#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex)
+
+#else
+#define SCRN_ARG_TYPE ScrnInfoPtr
+#define SCRN_INFO_PTR(arg1) ScrnInfoPtr scrn = (arg1)
+
+#define SCREEN_ARG_TYPE ScreenPtr
+#define SCREEN_PTR(arg1) ScreenPtr screen = (arg1)
+
+#define SCREEN_INIT_ARGS_DECL ScreenPtr screen, int argc, char **argv
+
+#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer timeout, pointer read_mask
+#define BLOCKHANDLER_ARGS arg, timeout, read_mask
+
+#define WAKEUPHANDLER_ARGS_DECL ScreenPtr arg, unsigned long result, pointer read_mask
+#define WAKEUPHANDLER_ARGS arg, result, read_mask
+
+#define CLOSE_SCREEN_ARGS_DECL ScreenPtr screen
+#define CLOSE_SCREEN_ARGS screen
+
+#define ADJUST_FRAME_ARGS_DECL ScrnInfoPtr arg, int x, int y
+#define ADJUST_FRAME_ARGS(arg, x, y) arg, x, y
+
+#define SWITCH_MODE_ARGS_DECL ScrnInfoPtr arg, DisplayModePtr mode
+#define SWITCH_MODE_ARGS(arg, m) arg, m
+
+#define FREE_SCREEN_ARGS_DECL ScrnInfoPtr arg
+
+#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg
+#define VT_FUNC_ARGS(flags) scrn
+
+#define XF86_ENABLEDISABLEFB_ARG(x) (x)
+
+#endif
+
+#endif
diff --git a/src/wlshm.c b/src/wlshm.c
index 30206d0..308c5d0 100644
--- a/src/wlshm.c
+++ b/src/wlshm.c
@@ -1,4 +1,3 @@
-
/*
* Copyright 2002, SuSE Linux AG, Author: Egbert Eich
* Copyright 2010, commonIT, Author: Corentin Chary
@@ -30,6 +29,7 @@
* Driver data structures.
*/
#include "wlshm.h"
+#include "compat-api.h"
#include <sys/mman.h>
#include <unistd.h>
@@ -99,24 +99,24 @@ wlshm_save_screen(ScreenPtr pScreen, int mode)
}
static Bool
-wlshm_enter_vt(int scrnIndex, int flags)
+wlshm_enter_vt(VT_FUNC_ARGS_DECL)
{
return TRUE;
}
static void
-wlshm_leave_vt(int scrnIndex, int flags)
+wlshm_leave_vt(VT_FUNC_ARGS_DECL)
{
}
static Bool
-wlshm_switch_mode(int scrnIndex, DisplayModePtr mode, int flags)
+wlshm_switch_mode(SWITCH_MODE_ARGS_DECL)
{
return TRUE;
}
static void
-wlshm_adjust_frame(int scrnIndex, int x, int y, int flags)
+wlshm_adjust_frame(ADJUST_FRAME_ARGS_DECL)
{
}
@@ -131,9 +131,9 @@ wlshm_flush_callback(CallbackListPtr *list,
}
static Bool
-wlshm_close_screen(int scrnIndex, ScreenPtr pScreen)
+wlshm_close_screen(CLOSE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86Screens[screen->myNum];
struct wlshm_device *wlshm = wlshm_scrninfo_priv(pScrn);
DeleteCallback(&FlushCallback, wlshm_flush_callback, wlshm);
@@ -145,15 +145,15 @@ wlshm_close_screen(int scrnIndex, ScreenPtr pScreen)
xwl_screen_close(wlshm->xwl_screen);
pScrn->vtSema = FALSE;
- pScreen->CloseScreen = wlshm->CloseScreen;
- return (*pScreen->CloseScreen)(scrnIndex, pScreen);
+ screen->CloseScreen = wlshm->CloseScreen;
+ return (*screen->CloseScreen)(CLOSE_SCREEN_ARGS);
}
static void
-wlshm_free_screen(int scrnIndex, int flags)
+wlshm_free_screen(FREE_SCREEN_ARGS_DECL)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- struct wlshm_device *wlshm = wlshm_scrninfo_priv(pScrn);
+ SCRN_INFO_PTR(arg);
+ struct wlshm_device *wlshm = wlshm_scrninfo_priv(scrn);
if (wlshm) {
if (wlshm->xwl_screen)
@@ -161,11 +161,11 @@ wlshm_free_screen(int scrnIndex, int flags)
wlshm->xwl_screen = NULL;
}
- wlshm_free_device(pScrn);
+ wlshm_free_device(scrn);
}
static ModeStatus
-wlshm_valid_mode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
+wlshm_valid_mode(SCRN_ARG_TYPE arg, DisplayModePtr mode, Bool verbose, int flags)
{
return MODE_OK;
}
@@ -274,7 +274,7 @@ wlshm_create_window(WindowPtr pWin)
}
static Bool
-wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
+wlshm_screen_init(SCREEN_INIT_ARGS_DECL)
{
ScrnInfoPtr pScrn;
struct wlshm_device *wlshm;
@@ -287,8 +287,8 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
* we need to get the ScrnInfoRec for this screen, so let's allocate
* one first thing
*/
- pScrn = xf86Screens[pScreen->myNum];
- wlshm = wlshm_screen_priv(pScreen);
+ pScrn = xf86Screens[screen->myNum];
+ wlshm = wlshm_screen_priv(screen);
/*
* Reset visual list.
@@ -314,7 +314,7 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
* Call the framebuffer layer's ScreenInit function, and fill in other
* pScreen fields.
*/
- ret = fbScreenInit(pScreen, wlshm->fb,
+ ret = fbScreenInit(screen, wlshm->fb,
pScrn->virtualX, pScrn->virtualY,
pScrn->xDpi, pScrn->yDpi,
pScrn->displayWidth, pScrn->bitsPerPixel);
@@ -323,8 +323,8 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
if (pScrn->depth > 8) {
/* Fixup RGB ordering */
- visual = pScreen->visuals + pScreen->numVisuals;
- while (--visual >= pScreen->visuals) {
+ visual = screen->visuals + screen->numVisuals;
+ while (--visual >= screen->visuals) {
if ((visual->class | DynamicClass) == DirectColor) {
visual->offsetRed = pScrn->offset.red;
visual->offsetGreen = pScrn->offset.green;
@@ -337,9 +337,9 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
}
/* must be after RGB ordering fixed */
- fbPictureInit(pScreen, 0, 0);
+ fbPictureInit(screen, 0, 0);
- xf86SetBlackWhitePixels(pScreen);
+ xf86SetBlackWhitePixels(screen);
{
BoxRec AvailFBArea;
@@ -349,39 +349,39 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
AvailFBArea.x2 = pScrn->displayWidth;
AvailFBArea.y2 = pScrn->virtualY;
- xf86InitFBManager(pScreen, &AvailFBArea);
+ xf86InitFBManager(screen, &AvailFBArea);
}
- xf86SetBackingStore(pScreen);
- xf86SetSilkenMouse(pScreen);
+ xf86SetBackingStore(screen);
+ xf86SetSilkenMouse(screen);
/* Initialise cursor functions */
- miDCInitialize (pScreen, xf86GetPointerScreenFuncs());
+ miDCInitialize (screen, xf86GetPointerScreenFuncs());
/* FIXME: colourmap */
- miCreateDefColormap(pScreen);
+ miCreateDefColormap(screen);
- pScreen->SaveScreen = wlshm_save_screen;
+ screen->SaveScreen = wlshm_save_screen;
/* Wrap the current CloseScreen function */
- wlshm->CloseScreen = pScreen->CloseScreen;
- pScreen->CloseScreen = wlshm_close_screen;
+ wlshm->CloseScreen = screen->CloseScreen;
+ screen->CloseScreen = wlshm_close_screen;
/* Wrap the current CreateWindow function */
- wlshm->CreateWindow = pScreen->CreateWindow;
- pScreen->CreateWindow = wlshm_create_window;
+ wlshm->CreateWindow = screen->CreateWindow;
+ screen->CreateWindow = wlshm_create_window;
/* Wrap the current DestroyWindow function */
- wlshm->DestroyWindow = pScreen->DestroyWindow;
- pScreen->DestroyWindow = wlshm_destroy_window;
+ wlshm->DestroyWindow = screen->DestroyWindow;
+ screen->DestroyWindow = wlshm_destroy_window;
/* Wrap the current UnrealizeWindow function */
- wlshm->UnrealizeWindow = pScreen->UnrealizeWindow;
- pScreen->UnrealizeWindow = wlshm_unrealize_window;
+ wlshm->UnrealizeWindow = screen->UnrealizeWindow;
+ screen->UnrealizeWindow = wlshm_unrealize_window;
/* Wrap the current SetWindowPixmap function */
- wlshm->SetWindowPixmap = pScreen->SetWindowPixmap;
- pScreen->SetWindowPixmap = wlshm_set_window_pixmap;
+ wlshm->SetWindowPixmap = screen->SetWindowPixmap;
+ screen->SetWindowPixmap = wlshm_set_window_pixmap;
AddCallback(&FlushCallback, wlshm_flush_callback, wlshm);
@@ -390,10 +390,10 @@ wlshm_screen_init(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
xf86ShowUnusedOptions(pScrn->scrnIndex, pScrn->options);
}
- miScreenDevPrivateInit(pScreen, pScreen->width, wlshm->fb);
+ miScreenDevPrivateInit(screen, screen->width, wlshm->fb);
if (wlshm->xwl_screen)
- return (xwl_screen_init(wlshm->xwl_screen, pScreen) == Success);
+ return (xwl_screen_init(wlshm->xwl_screen, screen) == Success);
return TRUE;
}