From f52876d7712b379f7f9e4527725d4f5dbcc58fc3 Mon Sep 17 00:00:00 2001 From: Erik Andersson Date: Tue, 19 Mar 2013 15:50:23 -0500 Subject: [PATCH] Fixes for X 1.14 ABI --- src/compat-api.h | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/drmmode_display.c | 6 +-- src/omap_driver.c | 67 ++++++++++++++++----------------- src/omap_driver.h | 3 +- src/omap_exa.h | 5 ++- src/omap_exa_null.c | 4 +- 6 files changed, 140 insertions(+), 46 deletions(-) create mode 100644 src/compat-api.h diff --git a/src/compat-api.h b/src/compat-api.h new file mode 100644 index 0000000..b74a582 --- /dev/null +++ b/src/compat-api.h @@ -0,0 +1,101 @@ +/* + * 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 + */ + +/* 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 pScrn = xf86Screens[(arg1)] + +#define SCREEN_ARG_TYPE int +#define SCREEN_PTR(arg1) ScreenPtr pScreen = screenInfo.screens[(arg1)] + +#define SCREEN_INIT_ARGS_DECL int i, ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL int arg, pointer blockData, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, blockData, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL int scrnIndex, ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS scrnIndex, pScreen + +#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 FREE_SCREEN_ARGS(x) (x)->scrnIndex, 0 + +#define VT_FUNC_ARGS_DECL int arg, int flags +#define VT_FUNC_ARGS(flags) pScrn->scrnIndex, (flags) + +#define XF86_ENABLEDISABLEFB_ARG(x) ((x)->scrnIndex) +#else +#define SCRN_ARG_TYPE ScrnInfoPtr +#define SCRN_INFO_PTR(arg1) ScrnInfoPtr pScrn = (arg1) + +#define SCREEN_ARG_TYPE ScreenPtr +#define SCREEN_PTR(arg1) ScreenPtr pScreen = (arg1) + +#define SCREEN_INIT_ARGS_DECL ScreenPtr pScreen, int argc, char **argv + +#define BLOCKHANDLER_ARGS_DECL ScreenPtr arg, pointer pTimeout, pointer pReadmask +#define BLOCKHANDLER_ARGS arg, pTimeout, pReadmask + +#define CLOSE_SCREEN_ARGS_DECL ScreenPtr pScreen +#define CLOSE_SCREEN_ARGS pScreen + +#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 FREE_SCREEN_ARGS(x) (x) + +#define VT_FUNC_ARGS_DECL ScrnInfoPtr arg +#define VT_FUNC_ARGS(flags) pScrn + +#define XF86_ENABLEDISABLEFB_ARG(x) (x) + +#endif + +#endif diff --git a/src/drmmode_display.c b/src/drmmode_display.c index 0d5faef..424e0da 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -58,9 +58,6 @@ #include "compiler.h" #include "mipointer.h" -/* All drivers implementing backing store need this */ -#include "mibstore.h" - #include "micmap.h" #include "xf86DDC.h" @@ -1524,7 +1521,6 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) TRACE_ENTER(); - pScrn->canDoBGNoneRoot = TRUE; drmmode = calloc(1, sizeof *drmmode); drmmode->fd = fd; @@ -1564,7 +1560,7 @@ Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp) } void -drmmode_adjust_frame(ScrnInfoPtr pScrn, int x, int y, int flags) +drmmode_adjust_frame(ScrnInfoPtr pScrn, int x, int y) { xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn); xf86OutputPtr output = config->output[config->compat_output]; diff --git a/src/omap_driver.c b/src/omap_driver.c index f343ffb..a3a55ef 100644 --- a/src/omap_driver.c +++ b/src/omap_driver.c @@ -36,7 +36,7 @@ #endif #include "omap_driver.h" - +#include "compat-api.h" Bool omapDebug = 0; @@ -47,19 +47,17 @@ static const OptionInfoRec *OMAPAvailableOptions(int chipid, int busid); static void OMAPIdentify(int flags); static Bool OMAPProbe(DriverPtr drv, int flags); static Bool OMAPPreInit(ScrnInfoPtr pScrn, int flags); -static Bool OMAPScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, - char **argv); +static Bool OMAPScreenInit(SCREEN_INIT_ARGS_DECL); static void OMAPLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO * colors, VisualPtr pVisual); -static Bool OMAPCloseScreen(int scrnIndex, ScreenPtr pScreen); +static Bool OMAPCloseScreen(CLOSE_SCREEN_ARGS_DECL); static Bool OMAPCreateScreenResources(ScreenPtr pScreen); -static void OMAPBlockHandler(int i, pointer blockData, pointer pTimeout, - pointer pReadmask); -static Bool OMAPSwitchMode(int scrnIndex, DisplayModePtr mode, int flags); -static void OMAPAdjustFrame(int scrnIndex, int x, int y, int flags); -static Bool OMAPEnterVT(int scrnIndex, int flags); -static void OMAPLeaveVT(int scrnIndex, int flags); -static void OMAPFreeScreen(int scrnIndex, int flags); +static void OMAPBlockHandler(BLOCKHANDLER_ARGS_DECL); +static Bool OMAPSwitchMode(SWITCH_MODE_ARGS_DECL); +static void OMAPAdjustFrame(ADJUST_FRAME_ARGS_DECL); +static Bool OMAPEnterVT(VT_FUNC_ARGS_DECL); +static void OMAPLeaveVT(VT_FUNC_ARGS_DECL); +static void OMAPFreeScreen(FREE_SCREEN_ARGS_DECL); @@ -668,7 +666,7 @@ OMAPAccelInit(ScreenPtr pScreen) * save state, initialize the mode, etc. */ static Bool -OMAPScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) +OMAPScreenInit(SCREEN_INIT_ARGS_DECL) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; OMAPPtr pOMAP = OMAPPTR(pScrn); @@ -762,7 +760,6 @@ OMAPScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) OMAPAccelInit(pScreen); /* Initialize backing store: */ - miInitializeBackingStore(pScreen); xf86SetBackingStore(pScreen); /* Cause the cursor position to be updated by the mouse signal handler: */ @@ -786,7 +783,7 @@ OMAPScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) /* Take over the virtual terminal from the console, set the desired mode, * etc.: */ - if (!OMAPEnterVT(scrnIndex, 0)) { + if (!OMAPEnterVT(VT_FUNC_ARGS(0))) { ERROR_MSG("OMAPEnterVT() failed!"); goto fail; } @@ -856,9 +853,9 @@ OMAPLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, * held by pScrn). */ static Bool -OMAPCloseScreen(int scrnIndex, ScreenPtr pScreen) +OMAPCloseScreen(CLOSE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); OMAPPtr pOMAP = OMAPPTR(pScrn); TRACE_ENTER(); @@ -866,12 +863,12 @@ OMAPCloseScreen(int scrnIndex, ScreenPtr pScreen) drmmode_screen_fini(pScrn); if (pScrn->vtSema == TRUE) { - OMAPLeaveVT(scrnIndex, 0); + OMAPLeaveVT(VT_FUNC_ARGS(0)); } if (pOMAP->pOMAPEXA) { if (pOMAP->pOMAPEXA->CloseScreen) { - pOMAP->pOMAPEXA->CloseScreen(scrnIndex, pScreen); + pOMAP->pOMAPEXA->CloseScreen(CLOSE_SCREEN_ARGS); } } @@ -893,7 +890,7 @@ OMAPCloseScreen(int scrnIndex, ScreenPtr pScreen) TRACE_EXIT(); - return (*pScreen->CloseScreen)(scrnIndex, pScreen); + return (*pScreen->CloseScreen)(CLOSE_SCREEN_ARGS); } @@ -920,14 +917,14 @@ OMAPCreateScreenResources(ScreenPtr pScreen) static void -OMAPBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) +OMAPBlockHandler(BLOCKHANDLER_ARGS_DECL) { - ScreenPtr pScreen = screenInfo.screens[i]; - ScrnInfoPtr pScrn = xf86Screens[i]; + SCREEN_PTR(arg); + ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); OMAPPtr pOMAP = OMAPPTR(pScrn); swap(pOMAP, pScreen, BlockHandler); - (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask); + (*pScreen->BlockHandler) (BLOCKHANDLER_ARGS); swap(pOMAP, pScreen, BlockHandler); /* TODO OMAPVideoBlockHandler(), etc.. */ @@ -940,9 +937,9 @@ OMAPBlockHandler(int i, pointer blockData, pointer pTimeout, pointer pReadmask) * Screen. */ static Bool -OMAPSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) +OMAPSwitchMode(SWITCH_MODE_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); return xf86SetSingleMode(pScrn, mode, RR_Rotate_0); } @@ -954,10 +951,10 @@ OMAPSwitchMode(int scrnIndex, DisplayModePtr mode, int flags) * buffer within the "viewport" of the monitor. */ static void -OMAPAdjustFrame(int scrnIndex, int x, int y, int flags) +OMAPAdjustFrame(ADJUST_FRAME_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; - drmmode_adjust_frame(pScrn, x, y, flags); + SCRN_INFO_PTR(arg); + drmmode_adjust_frame(pScrn, x, y); } @@ -969,9 +966,9 @@ OMAPAdjustFrame(int scrnIndex, int x, int y, int flags) * HW state as needed by the X server. */ static Bool -OMAPEnterVT(int scrnIndex, int flags) +OMAPEnterVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); OMAPPtr pOMAP = OMAPPTR(pScrn); int i, ret; @@ -1005,9 +1002,9 @@ OMAPEnterVT(int scrnIndex, int flags) * need to restore the console's HW state. */ static void -OMAPLeaveVT(int scrnIndex, int flags) +OMAPLeaveVT(VT_FUNC_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); OMAPPtr pOMAP = OMAPPTR(pScrn); int i, ret; @@ -1034,9 +1031,9 @@ OMAPLeaveVT(int scrnIndex, int flags) * up-to-and-including an unsuccessful ScreenInit() call. */ static void -OMAPFreeScreen(int scrnIndex, int flags) +OMAPFreeScreen(FREE_SCREEN_ARGS_DECL) { - ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; + SCRN_INFO_PTR(arg); OMAPPtr pOMAP = OMAPPTR(pScrn); TRACE_ENTER(); @@ -1048,7 +1045,7 @@ OMAPFreeScreen(int scrnIndex, int flags) if (pOMAP->pOMAPEXA) { if (pOMAP->pOMAPEXA->FreeScreen) { - pOMAP->pOMAPEXA->FreeScreen(scrnIndex, flags); + pOMAP->pOMAPEXA->FreeScreen(FREE_SCREEN_ARGS(pScrn)); } free(pOMAP->pOMAPEXA); } diff --git a/src/omap_driver.h b/src/omap_driver.h index e07fcc2..711830a 100644 --- a/src/omap_driver.h +++ b/src/omap_driver.h @@ -40,7 +40,6 @@ * XXX - figure out what can be removed.. */ #include "mipointer.h" -#include "mibstore.h" #include "micmap.h" #include "colormapst.h" #include "xf86cmap.h" @@ -240,7 +239,7 @@ static inline Bool has_dmm(OMAPPtr pOMAP) Bool drmmode_pre_init(ScrnInfoPtr pScrn, int fd, int cpp); void drmmode_screen_init(ScrnInfoPtr pScrn); void drmmode_screen_fini(ScrnInfoPtr pScrn); -void drmmode_adjust_frame(ScrnInfoPtr pScrn, int x, int y, int flags); +void drmmode_adjust_frame(ScrnInfoPtr pScrn, int x, int y); int drmmode_page_flip(DrawablePtr draw, uint32_t fb_id, void *priv, int* num_flipped); void drmmode_wait_for_event(ScrnInfoPtr pScrn); diff --git a/src/omap_exa.h b/src/omap_exa.h index 9980858..b1d4c64 100644 --- a/src/omap_exa.h +++ b/src/omap_exa.h @@ -36,6 +36,7 @@ #include "omap_drmif_fb.h" #include "omap_util.h" #include "exa.h" +#include "compat-api.h" /** * A per-Screen structure used to communicate and coordinate between the OMAP X @@ -50,14 +51,14 @@ typedef struct _OMAPEXARec * generation to free per-Screen data structures (except those held by * pScrn). */ - Bool (*CloseScreen)(int scrnIndex, ScreenPtr pScreen); + Bool (*CloseScreen)(CLOSE_SCREEN_ARGS_DECL); /** * Called by X driver's FreeScreen() function at the end of each server * lifetime to free per-ScrnInfoRec data structures, to close any external * connections (e.g. with PVR2D, DRM), etc. */ - void (*FreeScreen)(int scrnIndex, int flags); + void (*FreeScreen)(FREE_SCREEN_ARGS_DECL); /** get formats supported by PutTextureImage() (for dri2 video..) */ #define MAX_FORMATS 16 diff --git a/src/omap_exa_null.c b/src/omap_exa_null.c index 7d1f295..3c1e683 100644 --- a/src/omap_exa_null.c +++ b/src/omap_exa_null.c @@ -77,7 +77,7 @@ PrepareCompositeFail(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture, } static Bool -CloseScreen(int scrnIndex, ScreenPtr pScreen) +CloseScreen(CLOSE_SCREEN_ARGS_DECL) { #if 0 // TODO need to change CloseScreen/FreeScreen .. exaDriverFini(pScreen); @@ -87,7 +87,7 @@ CloseScreen(int scrnIndex, ScreenPtr pScreen) } static void -FreeScreen(int scrnIndex, int flags) +FreeScreen(FREE_SCREEN_ARGS_DECL) { } -- 1.8.2