diff options
author | marha <marha@users.sourceforge.net> | 2013-10-07 08:23:46 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-10-07 08:23:46 +0200 |
commit | 81fd17c8678e89cea6610b8b2996b028b21eb5dc (patch) | |
tree | d2c201976b3cd000658870071ab7b533359de039 /xorg-server/hw/xnest | |
parent | 5593a3d2f370e3e12a043110bf2e395c938980d6 (diff) | |
download | vcxsrv-81fd17c8678e89cea6610b8b2996b028b21eb5dc.tar.gz vcxsrv-81fd17c8678e89cea6610b8b2996b028b21eb5dc.tar.bz2 vcxsrv-81fd17c8678e89cea6610b8b2996b028b21eb5dc.zip |
xserver fontconfig libXdmcp mesa pixmand xkeyboard-config git update 7 oct 2013
xserver commit ccbe17b1c6da1ad9d085fc8133cdd15dc7004a4a
xkeyboard-config commit c8326b7d12b20eccfd38d661b95d9b23d8a56e27
libXdmcp commit 089081dca4ba3598c6f9bf401c029378943b5854
pixman commit c89f4c826695dbb5df0817d84f845dbd3e28b7a7
fontconfig commit 604c2a683f1357fc65bad372b5d25a90099f827f
mesa commit cfbfb50cb8d47b7f6975828b504936f9324f3b12
Diffstat (limited to 'xorg-server/hw/xnest')
-rw-r--r-- | xorg-server/hw/xnest/GCOps.c | 14 | ||||
-rw-r--r-- | xorg-server/hw/xnest/Pixmap.c | 15 | ||||
-rw-r--r-- | xorg-server/hw/xnest/Screen.c | 1 | ||||
-rw-r--r-- | xorg-server/hw/xnest/XNPixmap.h | 2 |
4 files changed, 32 insertions, 0 deletions
diff --git a/xorg-server/hw/xnest/GCOps.c b/xorg-server/hw/xnest/GCOps.c index e26a1363b..7b1956de0 100644 --- a/xorg-server/hw/xnest/GCOps.c +++ b/xorg-server/hw/xnest/GCOps.c @@ -94,15 +94,29 @@ xnestPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth, int x, int y, } } +static int +xnestIgnoreErrorHandler (Display *display, + XErrorEvent *event) +{ + return False; /* return value is ignored */ +} + void xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h, unsigned int format, unsigned long planeMask, char *pImage) { XImage *ximage; int length; + int (*old_handler)(Display*, XErrorEvent*); + + /* we may get BadMatch error when xnest window is minimized */ + XSync(xnestDisplay, False); + old_handler = XSetErrorHandler (xnestIgnoreErrorHandler); ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable), x, y, w, h, planeMask, format); + XSync(xnestDisplay, False); + XSetErrorHandler(old_handler); if (ximage) { length = ximage->bytes_per_line * ximage->height; diff --git a/xorg-server/hw/xnest/Pixmap.c b/xorg-server/hw/xnest/Pixmap.c index 13e1610fd..2902acd56 100644 --- a/xorg-server/hw/xnest/Pixmap.c +++ b/xorg-server/hw/xnest/Pixmap.c @@ -78,6 +78,21 @@ xnestDestroyPixmap(PixmapPtr pPixmap) return TRUE; } +Bool +xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, + int bitsPerPixel, int devKind, pointer pPixData) +{ + if(!xnestPixmapPriv(pPixmap)->pixmap && width > 0 && height > 0) { + xnestPixmapPriv(pPixmap)->pixmap = + XCreatePixmap(xnestDisplay, + xnestDefaultWindows[pPixmap->drawable.pScreen->myNum], + width, height, depth); + } + + return miModifyPixmapHeader(pPixmap, width, height, depth, + bitsPerPixel, devKind, pPixData); +} + RegionPtr xnestPixmapToRegion(PixmapPtr pPixmap) { diff --git a/xorg-server/hw/xnest/Screen.c b/xorg-server/hw/xnest/Screen.c index 58b5a1199..abb4d372d 100644 --- a/xorg-server/hw/xnest/Screen.c +++ b/xorg-server/hw/xnest/Screen.c @@ -282,6 +282,7 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[]) pScreen->CreatePixmap = xnestCreatePixmap; pScreen->DestroyPixmap = xnestDestroyPixmap; + pScreen->ModifyPixmapHeader = xnestModifyPixmapHeader; /* Font procedures */ diff --git a/xorg-server/hw/xnest/XNPixmap.h b/xorg-server/hw/xnest/XNPixmap.h index 268ba1e8b..5b2e796fe 100644 --- a/xorg-server/hw/xnest/XNPixmap.h +++ b/xorg-server/hw/xnest/XNPixmap.h @@ -33,6 +33,8 @@ typedef struct { PixmapPtr xnestCreatePixmap(ScreenPtr pScreen, int width, int height, int depth, unsigned usage_hint); Bool xnestDestroyPixmap(PixmapPtr pPixmap); +Bool xnestModifyPixmapHeader(PixmapPtr pPixmap, int width, int height, int depth, + int bitsPerPixel, int devKind, pointer pPixData); RegionPtr xnestPixmapToRegion(PixmapPtr pPixmap); #endif /* XNESTPIXMAP_H */ |