diff options
-rw-r--r-- | hw/xgl/xgl.h | 4 | ||||
-rw-r--r-- | hw/xgl/xglpixmap.c | 18 | ||||
-rw-r--r-- | 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; |