aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/exa
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-07-11 11:55:48 +0200
committermarha <marha@users.sourceforge.net>2012-07-11 11:55:48 +0200
commit6cab6b3ebc8ed1a81ced93d621ea3abf05e282ab (patch)
tree21e1af7ee94600e349ae21353dc11963a06e988d /xorg-server/exa
parent75f57cf199b6c042b0f7515e3a1ab80f7ccecfab (diff)
parentd137057fd13e83ec15ab416c7fe774741da06047 (diff)
downloadvcxsrv-6cab6b3ebc8ed1a81ced93d621ea3abf05e282ab.tar.gz
vcxsrv-6cab6b3ebc8ed1a81ced93d621ea3abf05e282ab.tar.bz2
vcxsrv-6cab6b3ebc8ed1a81ced93d621ea3abf05e282ab.zip
Merge remote-tracking branch 'origin/released'
Conflicts: xorg-server/Xext/shm.c xorg-server/Xext/sync.c xorg-server/Xext/xf86bigfont.c xorg-server/Xi/opendev.c xorg-server/dix/dispatch.c xorg-server/include/globals.h xorg-server/mi/miinitext.c
Diffstat (limited to 'xorg-server/exa')
-rw-r--r--xorg-server/exa/exa.c7
-rw-r--r--xorg-server/exa/exa.h6
-rw-r--r--xorg-server/exa/exa_mixed.c33
-rw-r--r--xorg-server/exa/exa_priv.h7
4 files changed, 52 insertions, 1 deletions
diff --git a/xorg-server/exa/exa.c b/xorg-server/exa/exa.c
index 623ece073..d12344f79 100644
--- a/xorg-server/exa/exa.c
+++ b/xorg-server/exa/exa.c
@@ -782,6 +782,10 @@ exaCloseScreen(ScreenPtr pScreen)
unwrap(pExaScr, pScreen, ChangeWindowAttributes);
unwrap(pExaScr, pScreen, BitmapToRegion);
unwrap(pExaScr, pScreen, CreateScreenResources);
+ if (pExaScr->SavedSharePixmapBacking)
+ unwrap(pExaScr, pScreen, SharePixmapBacking);
+ if (pExaScr->SavedSetSharedPixmapBacking)
+ unwrap(pExaScr, pScreen, SetSharedPixmapBacking);
unwrap(pExaScr, ps, Composite);
if (pExaScr->SavedGlyphs)
unwrap(pExaScr, ps, Glyphs);
@@ -976,6 +980,9 @@ exaDriverInit(ScreenPtr pScreen, ExaDriverPtr pScreenInfo)
wrap(pExaScr, pScreen, DestroyPixmap, exaDestroyPixmap_mixed);
wrap(pExaScr, pScreen, ModifyPixmapHeader,
exaModifyPixmapHeader_mixed);
+ wrap(pExaScr, pScreen, SharePixmapBacking, exaSharePixmapBacking_mixed);
+ wrap(pExaScr, pScreen, SetSharedPixmapBacking, exaSetSharedPixmapBacking_mixed);
+
pExaScr->do_migration = exaDoMigration_mixed;
pExaScr->pixmap_has_gpu_copy = exaPixmapHasGpuCopy_mixed;
pExaScr->do_move_in_pixmap = exaMoveInPixmap_mixed;
diff --git a/xorg-server/exa/exa.h b/xorg-server/exa/exa.h
index 8a6539f65..be022b2db 100644
--- a/xorg-server/exa/exa.h
+++ b/xorg-server/exa/exa.h
@@ -39,7 +39,7 @@
#include "fb.h"
#define EXA_VERSION_MAJOR 2
-#define EXA_VERSION_MINOR 5
+#define EXA_VERSION_MINOR 6
#define EXA_VERSION_RELEASE 0
typedef struct _ExaOffscreenArea ExaOffscreenArea;
@@ -694,6 +694,10 @@ typedef struct _ExaDriver {
int depth, int usage_hint, int bitsPerPixel,
int *new_fb_pitch);
/** @} */
+ Bool (*SharePixmapBacking)(PixmapPtr pPixmap, ScreenPtr slave, void **handle_p);
+
+ Bool (*SetSharedPixmapBacking)(PixmapPtr pPixmap, void *handle);
+
} ExaDriverRec, *ExaDriverPtr;
/** @name EXA driver flags
diff --git a/xorg-server/exa/exa_mixed.c b/xorg-server/exa/exa_mixed.c
index 06817313f..0fb409102 100644
--- a/xorg-server/exa/exa_mixed.c
+++ b/xorg-server/exa/exa_mixed.c
@@ -294,3 +294,36 @@ exaPixmapHasGpuCopy_mixed(PixmapPtr pPixmap)
return ret;
}
+
+Bool
+exaSharePixmapBacking_mixed(PixmapPtr pPixmap, ScreenPtr slave, void **handle_p)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret = FALSE;
+
+ exaMoveInPixmap(pPixmap);
+ /* get the driver to give us a handle */
+ if (pExaScr->info->SharePixmapBacking)
+ ret = pExaScr->info->SharePixmapBacking(pPixmap, slave, handle_p);
+
+ return ret;
+}
+
+Bool
+exaSetSharedPixmapBacking_mixed(PixmapPtr pPixmap, void *handle)
+{
+ ScreenPtr pScreen = pPixmap->drawable.pScreen;
+ ExaScreenPriv(pScreen);
+ Bool ret = FALSE;
+
+ if (pExaScr->info->SetSharedPixmapBacking)
+ ret = pExaScr->info->SetSharedPixmapBacking(pPixmap, handle);
+
+ if (ret == TRUE)
+ exaMoveInPixmap(pPixmap);
+
+ return ret;
+}
+
+
diff --git a/xorg-server/exa/exa_priv.h b/xorg-server/exa/exa_priv.h
index 68eadc550..ea7e7faff 100644
--- a/xorg-server/exa/exa_priv.h
+++ b/xorg-server/exa/exa_priv.h
@@ -163,6 +163,8 @@ typedef struct {
BitmapToRegionProcPtr SavedBitmapToRegion;
CreateScreenResourcesProcPtr SavedCreateScreenResources;
ModifyPixmapHeaderProcPtr SavedModifyPixmapHeader;
+ SharePixmapBackingProcPtr SavedSharePixmapBacking;
+ SetSharedPixmapBackingProcPtr SavedSetSharedPixmapBacking;
SourceValidateProcPtr SavedSourceValidate;
CompositeProcPtr SavedComposite;
TrianglesProcPtr SavedTriangles;
@@ -658,6 +660,11 @@ void
void
exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg);
+Bool
+exaSetSharedPixmapBacking_mixed(PixmapPtr pPixmap, void *handle);
+Bool
+exaSharePixmapBacking_mixed(PixmapPtr pPixmap, ScreenPtr slave, void **handle_p);
+
/* exa_render.c */
Bool
exaOpReadsDestination(CARD8 op);