diff options
Diffstat (limited to 'xorg/server/module/rdpDraw.c')
| -rw-r--r-- | xorg/server/module/rdpDraw.c | 88 |
1 files changed, 22 insertions, 66 deletions
diff --git a/xorg/server/module/rdpDraw.c b/xorg/server/module/rdpDraw.c index 7abcb406..08fe4b85 100644 --- a/xorg/server/module/rdpDraw.c +++ b/xorg/server/module/rdpDraw.c @@ -38,82 +38,21 @@ misc draw calls #include <mi.h> #include "rdp.h" +#include "rdpDraw.h" -/******************************************************************************/ #define LOG_LEVEL 1 #define LLOGLN(_level, _args) \ do { if (_level < LOG_LEVEL) { ErrorF _args ; ErrorF("\n"); } } while (0) /*****************************************************************************/ -PixmapPtr -rdpCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, - unsigned usage_hint) -{ - ScrnInfoPtr pScrn; - rdpPtr dev; - PixmapPtr rv; - - LLOGLN(10, ("rdpCreatePixmap: width %d height %d depth %d", - width, height, depth)); - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); - pScreen->CreatePixmap = dev->CreatePixmap; - rv = pScreen->CreatePixmap(pScreen, width, height, depth, usage_hint); - pScreen->CreatePixmap = rdpCreatePixmap; - return rv; -} - -/******************************************************************************/ -Bool -rdpDestroyPixmap(PixmapPtr pPixmap) -{ - Bool rv; - ScreenPtr pScreen; - rdpPtr dev; - ScrnInfoPtr pScrn; - - LLOGLN(10, ("rdpDestroyPixmap: refcnt %d", pPixmap->refcnt)); - pScreen = pPixmap->drawable.pScreen; - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); - pScreen->DestroyPixmap = dev->DestroyPixmap; - rv = pScreen->DestroyPixmap(pPixmap); - pScreen->DestroyPixmap = rdpDestroyPixmap; - return rv; -} - -/******************************************************************************/ -Bool -rdpModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, - int bitsPerPixel, int devKind, pointer pPixData) -{ - Bool rv; - ScreenPtr pScreen; - rdpPtr dev; - ScrnInfoPtr pScrn; - - LLOGLN(10, ("rdpModifyPixmapHeader:")); - pScreen = pPixmap->drawable.pScreen; - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); - pScreen->ModifyPixmapHeader = dev->ModifyPixmapHeader; - rv = pScreen->ModifyPixmapHeader(pPixmap, width, height, depth, bitsPerPixel, - devKind, pPixData); - pScreen->ModifyPixmapHeader = rdpModifyPixmapHeader; - return rv; -} - -/*****************************************************************************/ void rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) { - ScrnInfoPtr pScrn; ScreenPtr pScreen; rdpPtr dev; pScreen = pWin->drawable.pScreen; - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); + dev = rdpGetDevFromScreen(pScreen); dev->pScreen->CopyWindow = dev->CopyWindow; dev->pScreen->CopyWindow(pWin, ptOldOrg, pOldRegion); dev->pScreen->CopyWindow = rdpCopyWindow; @@ -123,13 +62,11 @@ rdpCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr pOldRegion) Bool rdpCloseScreen(int index, ScreenPtr pScreen) { - ScrnInfoPtr pScrn; rdpPtr dev; Bool rv; LLOGLN(0, ("rdpCloseScreen:")); - pScrn = xf86Screens[pScreen->myNum]; - dev = XRDPPTR(pScrn); + dev = rdpGetDevFromScreen(pScreen); dev->pScreen->CloseScreen = dev->CloseScreen; rv = dev->pScreen->CloseScreen(index, pScreen); dev->pScreen->CloseScreen = rdpCloseScreen; @@ -146,3 +83,22 @@ rdpGetRootWindowPtr(ScreenPtr pScreen) return pScreen->root; #endif } + +/******************************************************************************/ +rdpPtr +rdpGetDevFromScreen(ScreenPtr pScreen) +{ + ScrnInfoPtr pScrn; + rdpPtr dev; + + if (pScreen == NULL) + { + pScrn = xf86Screens[0]; + } + else + { + pScrn = xf86Screens[pScreen->myNum]; + } + dev = XRDPPTR(pScrn); + return dev; +} |
