From cecb668149e1956fb29bc89855182349122e2f4e Mon Sep 17 00:00:00 2001 From: David Reveman Date: Sun, 14 Nov 2004 23:21:29 +0000 Subject: [PATCH] Add xglPixmapToRegion --- hw/xgl/xgl.h | 4 ++++ hw/xgl/xglpixmap.c | 18 ++++++++++++++++++ hw/xgl/xglscreen.c | 7 ++----- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/hw/xgl/xgl.h b/hw/xgl/xgl.h index 71250ded6..3f1616af5 100644 --- a/hw/xgl/xgl.h +++ b/hw/xgl/xgl.h @@ -129,6 +129,7 @@ typedef struct _xglScreen { CreateGCProcPtr CreateGC; CloseScreenProcPtr CloseScreen; SetWindowPixmapProcPtr SetWindowPixmap; + BitmapToRegionProcPtr BitmapToRegion; #ifdef RENDER CompositeProcPtr Composite; @@ -615,6 +616,9 @@ xglModifyPixmapHeader (PixmapPtr pPixmap, int devKind, pointer pPixData); +RegionPtr +xglPixmapToRegion (PixmapPtr pPixmap); + Bool xglCreatePixmapSurface (PixmapPtr pPixmap); diff --git a/hw/xgl/xglpixmap.c b/hw/xgl/xglpixmap.c index 38965739c..099ded652 100644 --- a/hw/xgl/xglpixmap.c +++ b/hw/xgl/xglpixmap.c @@ -356,6 +356,24 @@ xglModifyPixmapHeader (PixmapPtr pPixmap, return TRUE; } +RegionPtr +xglPixmapToRegion (PixmapPtr pPixmap) +{ + ScreenPtr pScreen = pPixmap->drawable.pScreen; + RegionPtr pRegion; + + XGL_SCREEN_PRIV (pScreen); + + if (!xglSyncBits (&pPixmap->drawable, NullBox)) + FatalError (XGL_SW_FAILURE_STRING); + + XGL_SCREEN_UNWRAP (BitmapToRegion); + pRegion = (*pScreen->BitmapToRegion) (pPixmap); + XGL_SCREEN_WRAP (BitmapToRegion, xglPixmapToRegion); + + return pRegion; +} + Bool xglCreatePixmapSurface (PixmapPtr pPixmap) { diff --git a/hw/xgl/xglscreen.c b/hw/xgl/xglscreen.c index 9e1cfdfd7..b2e1e1f48 100644 --- a/hw/xgl/xglscreen.c +++ b/hw/xgl/xglscreen.c @@ -56,7 +56,6 @@ int xglWinPrivateIndex; #define xglListInstalledColormaps (void *) NoopDDA #define xglStoreColors (void *) NoopDDA #define xglResolveColor (void *) NoopDDA -#define xglBitmapToRegion (void *) NoopDDA static PixmapPtr xglGetWindowPixmap (WindowPtr pWin) @@ -226,11 +225,9 @@ xglScreenInit (ScreenPtr pScreen, pScreen->ResolveColor = miResolveColor; */ - /* - pScreen->BitmapToRegion = xglBitmapToRegion; - */ - pScreen->ModifyPixmapHeader = xglModifyPixmapHeader; + + XGL_SCREEN_WRAP (BitmapToRegion, xglPixmapToRegion); pScreen->GetWindowPixmap = xglGetWindowPixmap;