diff options
Diffstat (limited to 'xorg/server/xrdpdev/xrdpdev.c')
-rw-r--r-- | xorg/server/xrdpdev/xrdpdev.c | 779 |
1 files changed, 0 insertions, 779 deletions
diff --git a/xorg/server/xrdpdev/xrdpdev.c b/xorg/server/xrdpdev/xrdpdev.c deleted file mode 100644 index 29de4688..00000000 --- a/xorg/server/xrdpdev/xrdpdev.c +++ /dev/null @@ -1,779 +0,0 @@ -/* -Copyright 2013-2014 Jay Sorg - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice 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 -OPEN GROUP 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. - -This is the main driver file - -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -/* this should be before all X11 .h files */ -#include <xorg-server.h> -#include <xorgVersion.h> - -/* all driver need this */ -#include <xf86.h> -#include <xf86_OSproc.h> - -#include <mipointer.h> -#include <fb.h> -#include <micmap.h> -#include <mi.h> -#include <randrstr.h> - -#include <xf86Modes.h> - -#include "rdp.h" -#include "rdpPri.h" -#include "rdpDraw.h" -#include "rdpGC.h" -#include "rdpCursor.h" -#include "rdpRandR.h" -#include "rdpMisc.h" -#include "rdpComposite.h" -#include "rdpTrapezoids.h" -#include "rdpGlyphs.h" -#include "rdpPixmap.h" -#include "rdpClientCon.h" -#include "rdpXv.h" -#include "rdpSimd.h" - -#define LLOG_LEVEL 1 -#define LLOGLN(_level, _args) \ - do \ - { \ - if (_level < LLOG_LEVEL) \ - { \ - ErrorF _args ; \ - ErrorF("\n"); \ - } \ - } \ - while (0) - -int g_bpp = 32; -int g_depth = 24; -int g_rgb_bits = 8; -int g_redOffset = 16; -int g_redBits = 8; -int g_greenOffset = 8; -int g_greenBits = 8; -int g_blueOffset = 0; -int g_blueBits = 8; - -static int g_setup_done = 0; -static OsTimerPtr g_timer = 0; - -/* Supported "chipsets" */ -static SymTabRec g_Chipsets[] = -{ - { 0, XRDP_DRIVER_NAME }, - { -1, 0 } -}; - -static XF86ModuleVersionInfo g_VersRec = -{ - XRDP_DRIVER_NAME, - MODULEVENDORSTRING, - MODINFOSTRING1, - MODINFOSTRING2, - XORG_VERSION_CURRENT, - PACKAGE_VERSION_MAJOR, - PACKAGE_VERSION_MINOR, - PACKAGE_VERSION_PATCHLEVEL, - ABI_CLASS_VIDEODRV, - ABI_VIDEODRV_VERSION, - 0, - { 0, 0, 0, 0 } -}; - -/*****************************************************************************/ -static Bool -rdpAllocRec(ScrnInfoPtr pScrn) -{ - LLOGLN(10, ("rdpAllocRec:")); - if (pScrn->driverPrivate != 0) - { - return TRUE; - } - /* xnfcalloc exits if alloc failed */ - pScrn->driverPrivate = xnfcalloc(sizeof(rdpRec), 1); - return TRUE; -} - -/*****************************************************************************/ -static void -rdpFreeRec(ScrnInfoPtr pScrn) -{ - LLOGLN(10, ("rdpFreeRec:")); - if (pScrn->driverPrivate == 0) - { - return; - } - free(pScrn->driverPrivate); - pScrn->driverPrivate = 0; -} - -/*****************************************************************************/ -static Bool -rdpPreInit(ScrnInfoPtr pScrn, int flags) -{ - rgb zeros1; - Gamma zeros2; - int got_res_match; - char **modename; - DisplayModePtr mode; - rdpPtr dev; - - LLOGLN(0, ("rdpPreInit:")); - if (flags & PROBE_DETECT) - { - return FALSE; - } - if (pScrn->numEntities != 1) - { - return FALSE; - } - - rdpAllocRec(pScrn); - dev = XRDPPTR(pScrn); - - dev->width = 1024; - dev->height = 768; - - pScrn->monitor = pScrn->confScreen->monitor; - pScrn->bitsPerPixel = g_bpp; - pScrn->virtualX = dev->width; - pScrn->displayWidth = dev->width; - pScrn->virtualY = dev->height; - pScrn->progClock = 1; - pScrn->rgbBits = g_rgb_bits; - pScrn->depth = g_depth; - pScrn->chipset = XRDP_DRIVER_NAME; - pScrn->currentMode = pScrn->modes; - pScrn->offset.blue = g_blueOffset; - pScrn->offset.green = g_greenOffset; - pScrn->offset.red = g_redOffset; - pScrn->mask.blue = ((1 << g_blueBits) - 1) << pScrn->offset.blue; - pScrn->mask.green = ((1 << g_greenBits) - 1) << pScrn->offset.green; - pScrn->mask.red = ((1 << g_redBits) - 1) << pScrn->offset.red; - - if (!xf86SetDepthBpp(pScrn, g_depth, g_bpp, g_bpp, - Support24bppFb | Support32bppFb | - SupportConvert32to24 | SupportConvert24to32)) - { - LLOGLN(0, ("rdpPreInit: xf86SetDepthBpp failed")); - rdpFreeRec(pScrn); - return FALSE; - } - xf86PrintDepthBpp(pScrn); - g_memset(&zeros1, 0, sizeof(zeros1)); - if (!xf86SetWeight(pScrn, zeros1, zeros1)) - { - LLOGLN(0, ("rdpPreInit: xf86SetWeight failed")); - rdpFreeRec(pScrn); - return FALSE; - } - g_memset(&zeros2, 0, sizeof(zeros2)); - if (!xf86SetGamma(pScrn, zeros2)) - { - LLOGLN(0, ("rdpPreInit: xf86SetGamma failed")); - rdpFreeRec(pScrn); - return FALSE; - } - if (!xf86SetDefaultVisual(pScrn, -1)) - { - LLOGLN(0, ("rdpPreInit: xf86SetDefaultVisual failed")); - rdpFreeRec(pScrn); - return FALSE; - } - xf86SetDpi(pScrn, 0, 0); - if (0 == pScrn->display->modes) - { - LLOGLN(0, ("rdpPreInit: modes error")); - rdpFreeRec(pScrn); - return FALSE; - } - - pScrn->virtualX = pScrn->display->virtualX; - pScrn->virtualY = pScrn->display->virtualY; - - got_res_match = 0; - for (modename = pScrn->display->modes; *modename != 0; modename++) - { - for (mode = pScrn->monitor->Modes; mode != 0; mode = mode->next) - { - LLOGLN(10, ("%s %s", mode->name, *modename)); - if (0 == strcmp(mode->name, *modename)) - { - break; - } - } - if (0 == mode) - { - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "\tmode \"%s\" not found\n", - *modename); - continue; - } - xf86DrvMsg(pScrn->scrnIndex, X_INFO, "\tmode \"%s\" ok\n", *modename); - LLOGLN(10, ("%d %d %d %d", mode->HDisplay, dev->width, - mode->VDisplay, dev->height)); - if ((mode->HDisplay == dev->width) && (mode->VDisplay == dev->height)) - { - pScrn->virtualX = mode->HDisplay; - pScrn->virtualY = mode->VDisplay; - got_res_match = 1; - } - if (got_res_match) - { - pScrn->modes = xf86DuplicateMode(mode); - pScrn->modes->next = pScrn->modes; - pScrn->modes->prev = pScrn->modes; - dev->num_modes = 1; - break; - } - } - pScrn->currentMode = pScrn->modes; - xf86PrintModes(pScrn); - LLOGLN(10, ("rdpPreInit: out fPtr->num_modes %d", dev->num_modes)); - if (!got_res_match) - { - LLOGLN(0, ("rdpPreInit: could not find screen resolution %dx%d", - dev->width, dev->height)); - return FALSE; - } - return TRUE; -} - -/******************************************************************************/ -static miPointerSpriteFuncRec g_rdpSpritePointerFuncs = -{ - /* these are in rdpCursor.c */ - rdpSpriteRealizeCursor, - rdpSpriteUnrealizeCursor, - rdpSpriteSetCursor, - rdpSpriteMoveCursor, - rdpSpriteDeviceCursorInitialize, - rdpSpriteDeviceCursorCleanup -}; - -/******************************************************************************/ -static Bool -rdpSaveScreen(ScreenPtr pScreen, int on) -{ - LLOGLN(0, ("rdpSaveScreen:")); - return TRUE; -} - -/******************************************************************************/ -static Bool -rdpResizeSession(rdpPtr dev, int width, int height) -{ - int mmwidth; - int mmheight; - RRScreenSizePtr pSize; - Bool ok; - - LLOGLN(0, ("rdpResizeSession: width %d height %d", width, height)); - mmwidth = PixelToMM(width); - mmheight = PixelToMM(height); - - pSize = RRRegisterSize(dev->pScreen, width, height, mmwidth, mmheight); - RRSetCurrentConfig(dev->pScreen, RR_Rotate_0, 0, pSize); - - ok = TRUE; - if ((dev->width != width) || (dev->height != height)) - { - LLOGLN(0, (" calling RRScreenSizeSet")); - ok = RRScreenSizeSet(dev->pScreen, width, height, mmwidth, mmheight); - LLOGLN(0, (" RRScreenSizeSet ok %d", ok)); - } - return ok; -} - -/******************************************************************************/ -/* returns error */ -static CARD32 -rdpDeferredRandR(OsTimerPtr timer, CARD32 now, pointer arg) -{ - ScreenPtr pScreen; - rrScrPrivPtr pRRScrPriv; - rdpPtr dev; - char *envvar; - int width; - int height; - - pScreen = (ScreenPtr) arg; - dev = rdpGetDevFromScreen(pScreen); - LLOGLN(0, ("rdpDeferredRandR:")); - pRRScrPriv = rrGetScrPriv(pScreen); - if (pRRScrPriv == 0) - { - LLOGLN(0, ("rdpDeferredRandR: rrGetScrPriv failed")); - return 1; - } - - dev->rrSetConfig = pRRScrPriv->rrSetConfig; - dev->rrGetInfo = pRRScrPriv->rrGetInfo; - dev->rrScreenSetSize = pRRScrPriv->rrScreenSetSize; - dev->rrCrtcSet = pRRScrPriv->rrCrtcSet; - dev->rrCrtcSetGamma = pRRScrPriv->rrCrtcSetGamma; - dev->rrCrtcGetGamma = pRRScrPriv->rrCrtcGetGamma; - dev->rrOutputSetProperty = pRRScrPriv->rrOutputSetProperty; - dev->rrOutputValidateMode = pRRScrPriv->rrOutputValidateMode; - dev->rrModeDestroy = pRRScrPriv->rrModeDestroy; - dev->rrOutputGetProperty = pRRScrPriv->rrOutputGetProperty; - dev->rrGetPanning = pRRScrPriv->rrGetPanning; - dev->rrSetPanning = pRRScrPriv->rrSetPanning; - - LLOGLN(10, (" rrSetConfig = %p", dev->rrSetConfig)); - LLOGLN(10, (" rrGetInfo = %p", dev->rrGetInfo)); - LLOGLN(10, (" rrScreenSetSize = %p", dev->rrScreenSetSize)); - LLOGLN(10, (" rrCrtcSet = %p", dev->rrCrtcSet)); - LLOGLN(10, (" rrCrtcSetGamma = %p", dev->rrCrtcSetGamma)); - LLOGLN(10, (" rrCrtcGetGamma = %p", dev->rrCrtcGetGamma)); - LLOGLN(10, (" rrOutputSetProperty = %p", dev->rrOutputSetProperty)); - LLOGLN(10, (" rrOutputValidateMode = %p", dev->rrOutputValidateMode)); - LLOGLN(10, (" rrModeDestroy = %p", dev->rrModeDestroy)); - LLOGLN(10, (" rrOutputGetProperty = %p", dev->rrOutputGetProperty)); - LLOGLN(10, (" rrGetPanning = %p", dev->rrGetPanning)); - LLOGLN(10, (" rrSetPanning = %p", dev->rrSetPanning)); - - pRRScrPriv->rrSetConfig = rdpRRSetConfig; - pRRScrPriv->rrGetInfo = rdpRRGetInfo; - pRRScrPriv->rrScreenSetSize = rdpRRScreenSetSize; - pRRScrPriv->rrCrtcSet = rdpRRCrtcSet; - pRRScrPriv->rrCrtcSetGamma = rdpRRCrtcSetGamma; - pRRScrPriv->rrCrtcGetGamma = rdpRRCrtcGetGamma; - pRRScrPriv->rrOutputSetProperty = rdpRROutputSetProperty; - pRRScrPriv->rrOutputValidateMode = rdpRROutputValidateMode; - pRRScrPriv->rrModeDestroy = rdpRRModeDestroy; - pRRScrPriv->rrOutputGetProperty = rdpRROutputGetProperty; - pRRScrPriv->rrGetPanning = rdpRRGetPanning; - pRRScrPriv->rrSetPanning = rdpRRSetPanning; - - rdpResizeSession(dev, dev->width, dev->height); - - envvar = getenv("XRDP_START_WIDTH"); - if (envvar != 0) - { - width = atoi(envvar); - if ((width >= 16) && (width < 8192)) - { - envvar = getenv("XRDP_START_HEIGHT"); - if (envvar != 0) - { - height = atoi(envvar); - if ((height >= 16) && (height < 8192)) - { - rdpResizeSession(dev, width, height); - } - } - } - } - - return 0; -} - -/******************************************************************************/ -static void -rdpBlockHandler1(pointer blockData, OSTimePtr pTimeout, pointer pReadmask) -{ -} - -/******************************************************************************/ -static void -rdpWakeupHandler1(pointer blockData, int result, pointer pReadmask) -{ - rdpClientConCheck((ScreenPtr)blockData); -} - -/*****************************************************************************/ -static Bool -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv) -#else -rdpScreenInit(ScreenPtr pScreen, int argc, char **argv) -#endif -{ - ScrnInfoPtr pScrn; - rdpPtr dev; - VisualPtr vis; - Bool vis_found; - PictureScreenPtr ps; - - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); - - dev->pScreen = pScreen; - - miClearVisualTypes(); - miSetVisualTypes(pScrn->depth, miGetDefaultVisualMask(pScrn->depth), - pScrn->rgbBits, TrueColor); - miSetPixmapDepths(); - LLOGLN(0, ("rdpScreenInit: virtualX %d virtualY %d rgbBits %d depth %d", - pScrn->virtualX, pScrn->virtualY, pScrn->rgbBits, pScrn->depth)); - - dev->depth = pScrn->depth; - dev->paddedWidthInBytes = PixmapBytePad(dev->width, dev->depth); - dev->bitsPerPixel = rdpBitsPerPixel(dev->depth); - dev->sizeInBytes = dev->paddedWidthInBytes * dev->height; - LLOGLN(0, ("rdpScreenInit: pfbMemory bytes %d", dev->sizeInBytes)); - dev->pfbMemory_alloc = (char *) g_malloc(dev->sizeInBytes + 16, 1); - dev->pfbMemory = (char*) RDPALIGN(dev->pfbMemory_alloc, 16); - LLOGLN(0, ("rdpScreenInit: pfbMemory %p", dev->pfbMemory)); - if (!fbScreenInit(pScreen, dev->pfbMemory, - pScrn->virtualX, pScrn->virtualY, - pScrn->xDpi, pScrn->yDpi, pScrn->displayWidth, - pScrn->bitsPerPixel)) - { - LLOGLN(0, ("rdpScreenInit: fbScreenInit failed")); - return FALSE; - } - -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 14, 0, 0, 0) - /* 1.13 has this function, 1.14 and up does not */ - miInitializeBackingStore(pScreen); -#endif - - /* try in init simd functions */ - rdpSimdInit(pScreen, pScrn); - -#if defined(XvExtension) && XvExtension - /* XVideo */ - if (!rdpXvInit(pScreen, pScrn)) - { - LLOGLN(0, ("rdpScreenInit: rdpXvInit failed")); - } -#endif - - vis = pScreen->visuals + (pScreen->numVisuals - 1); - while (vis >= pScreen->visuals) - { - if ((vis->class | DynamicClass) == DirectColor) - { - vis->offsetBlue = pScrn->offset.blue; - vis->blueMask = pScrn->mask.blue; - vis->offsetGreen = pScrn->offset.green; - vis->greenMask = pScrn->mask.green; - vis->offsetRed = pScrn->offset.red; - vis->redMask = pScrn->mask.red; - } - vis--; - } - fbPictureInit(pScreen, 0, 0); - xf86SetBlackWhitePixels(pScreen); - xf86SetBackingStore(pScreen); - -#if 1 - /* hardware cursor */ - dev->pCursorFuncs = xf86GetPointerScreenFuncs(); - miPointerInitialize(pScreen, &g_rdpSpritePointerFuncs, - dev->pCursorFuncs, 0); -#else - /* software cursor */ - dev->pCursorFuncs = xf86GetPointerScreenFuncs(); - miDCInitialize(pScreen, dev->pCursorFuncs); -#endif - - fbCreateDefColormap(pScreen); - - /* must assign this one */ - pScreen->SaveScreen = rdpSaveScreen; - - vis_found = FALSE; - vis = pScreen->visuals + (pScreen->numVisuals - 1); - while (vis >= pScreen->visuals) - { - if (vis->vid == pScreen->rootVisual) - { - vis_found = TRUE; - } - vis--; - } - if (!vis_found) - { - LLOGLN(0, ("rdpScreenInit: no root visual")); - return FALSE; - } - - dev->privateKeyRecGC = rdpAllocateGCPrivate(pScreen, sizeof(rdpGCRec)); - dev->privateKeyRecPixmap = rdpAllocatePixmapPrivate(pScreen, sizeof(rdpPixmapRec)); - - dev->CopyWindow = pScreen->CopyWindow; - pScreen->CopyWindow = rdpCopyWindow; - - dev->CreateGC = pScreen->CreateGC; - pScreen->CreateGC = rdpCreateGC; - - dev->CreatePixmap = pScreen->CreatePixmap; - pScreen->CreatePixmap = rdpCreatePixmap; - - dev->DestroyPixmap = pScreen->DestroyPixmap; - pScreen->DestroyPixmap = rdpDestroyPixmap; - - dev->ModifyPixmapHeader = pScreen->ModifyPixmapHeader; - pScreen->ModifyPixmapHeader = rdpModifyPixmapHeader; - - ps = GetPictureScreenIfSet(pScreen); - if (ps != 0) - { - /* composite */ - dev->Composite = ps->Composite; - ps->Composite = rdpComposite; - /* glyphs */ - dev->Glyphs = ps->Glyphs; - ps->Glyphs = rdpGlyphs; - /* trapezoids */ - dev->Trapezoids = ps->Trapezoids; - ps->Trapezoids = rdpTrapezoids; - } - - RegisterBlockAndWakeupHandlers(rdpBlockHandler1, rdpWakeupHandler1, pScreen); - - g_timer = TimerSet(g_timer, 0, 10, rdpDeferredRandR, pScreen); - - if (rdpClientConInit(dev) != 0) - { - LLOGLN(0, ("rdpScreenInit: rdpClientConInit failed")); - } - - dev->Bpp_mask = 0x00FFFFFF; - dev->Bpp = 4; - dev->bitsPerPixel = 32; - - LLOGLN(0, ("rdpScreenInit: out")); - return TRUE; -} - -/*****************************************************************************/ -static Bool -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpSwitchMode(int a, DisplayModePtr b, int c) -#else -rdpSwitchMode(ScrnInfoPtr a, DisplayModePtr b) -#endif -{ - LLOGLN(0, ("rdpSwitchMode:")); - return TRUE; -} - -/*****************************************************************************/ -static void -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpAdjustFrame(int a, int b, int c, int d) -#else -rdpAdjustFrame(ScrnInfoPtr a, int b, int c) -#endif -{ - LLOGLN(10, ("rdpAdjustFrame:")); -} - -/*****************************************************************************/ -static Bool -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpEnterVT(int a, int b) -#else -rdpEnterVT(ScrnInfoPtr a) -#endif -{ - LLOGLN(0, ("rdpEnterVT:")); - return TRUE; -} - -/*****************************************************************************/ -static void -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpLeaveVT(int a, int b) -#else -rdpLeaveVT(ScrnInfoPtr a) -#endif -{ - LLOGLN(0, ("rdpLeaveVT:")); -} - -/*****************************************************************************/ -static ModeStatus -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpValidMode(int a, DisplayModePtr b, Bool c, int d) -#else -rdpValidMode(ScrnInfoPtr a, DisplayModePtr b, Bool c, int d) -#endif -{ - LLOGLN(0, ("rdpValidMode:")); - return 0; -} - -/*****************************************************************************/ -static void -#if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(1, 13, 0, 0, 0) -rdpFreeScreen(int a, int b) -#else -rdpFreeScreen(ScrnInfoPtr a) -#endif -{ - LLOGLN(0, ("rdpFreeScreen:")); -} - -/*****************************************************************************/ -static Bool -rdpProbe(DriverPtr drv, int flags) -{ - int num_dev_sections; - int i; - int entity; - GDevPtr *dev_sections; - Bool found_screen; - ScrnInfoPtr pscrn; - - LLOGLN(0, ("rdpProbe:")); - if (flags & PROBE_DETECT) - { - return FALSE; - } - /* fbScreenInit, fbPictureInit, ... */ - if (!xf86LoadDrvSubModule(drv, "fb")) - { - LLOGLN(0, ("rdpProbe: xf86LoadDrvSubModule for fb failed")); - return FALSE; - } - - num_dev_sections = xf86MatchDevice(XRDP_DRIVER_NAME, &dev_sections); - if (num_dev_sections <= 0) - { - LLOGLN(0, ("rdpProbe: xf86MatchDevice failed")); - return FALSE; - } - - pscrn = 0; - found_screen = FALSE; - for (i = 0; i < num_dev_sections; i++) - { - entity = xf86ClaimFbSlot(drv, 0, dev_sections[i], 1); - pscrn = xf86ConfigFbEntity(pscrn, 0, entity, 0, 0, 0, 0); - if (pscrn) - { - LLOGLN(10, ("rdpProbe: found screen")); - found_screen = 1; - pscrn->driverVersion = XRDP_VERSION; - pscrn->driverName = XRDP_DRIVER_NAME; - pscrn->name = XRDP_DRIVER_NAME; - pscrn->Probe = rdpProbe; - pscrn->PreInit = rdpPreInit; - pscrn->ScreenInit = rdpScreenInit; - pscrn->SwitchMode = rdpSwitchMode; - pscrn->AdjustFrame = rdpAdjustFrame; - pscrn->EnterVT = rdpEnterVT; - pscrn->LeaveVT = rdpLeaveVT; - pscrn->ValidMode = rdpValidMode; - pscrn->FreeScreen = rdpFreeScreen; - xf86DrvMsg(pscrn->scrnIndex, X_INFO, "%s", "using default device\n"); - } - } - free(dev_sections); - return found_screen; -} - -/*****************************************************************************/ -static const OptionInfoRec * -rdpAvailableOptions(int chipid, int busid) -{ - LLOGLN(0, ("rdpAvailableOptions:")); - return 0; -} - -#ifndef HW_SKIP_CONSOLE -#define HW_SKIP_CONSOLE 4 -#endif - -/*****************************************************************************/ -static Bool -rdpDriverFunc(ScrnInfoPtr pScrn, xorgDriverFuncOp op, pointer ptr) -{ - xorgHWFlags *flags; - int rv; - - rv = FALSE; - LLOGLN(0, ("rdpDriverFunc: op %d", (int)op)); - if (op == GET_REQUIRED_HW_INTERFACES) - { - flags = (xorgHWFlags *) ptr; - *flags = HW_SKIP_CONSOLE; - rv = TRUE; - } - return rv; -} - -/*****************************************************************************/ -static void -rdpIdentify(int flags) -{ - LLOGLN(0, ("rdpIdentify:")); - xf86PrintChipsets(XRDP_DRIVER_NAME, "driver for xrdp", g_Chipsets); -} - -/*****************************************************************************/ -_X_EXPORT DriverRec g_DriverRec = -{ - XRDP_VERSION, - XRDP_DRIVER_NAME, - rdpIdentify, - rdpProbe, - rdpAvailableOptions, - 0, - 0, - rdpDriverFunc -}; - -/*****************************************************************************/ -static pointer -xrdpdevSetup(pointer module, pointer opts, int *errmaj, int *errmin) -{ - LLOGLN(0, ("xrdpdevSetup:")); - if (!g_setup_done) - { - g_setup_done = 1; - xf86AddDriver(&g_DriverRec, module, HaveDriverFuncs); - return (pointer)1; - } - else - { - if (errmaj != 0) - { - *errmaj = LDR_ONCEONLY; - } - return 0; - } -} - -/*****************************************************************************/ -static void -xrdpdevTearDown(pointer Module) -{ - LLOGLN(0, ("xrdpdevTearDown:")); -} - -/* <drivername>ModuleData */ -_X_EXPORT XF86ModuleData xrdpdevModuleData = -{ - &g_VersRec, - xrdpdevSetup, - xrdpdevTearDown -}; |