From 3bfd80326dcc15e3d587e6d083b725858558519f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 13 Jul 2010 02:43:49 -0400 Subject: [PATCH] Check configure-defined macro before doing _anything_ with XShape. --- src/video/x11/SDL_x11shape.c | 11 ++++++++--- src/video/x11/SDL_x11sym.h | 2 +- src/video/x11/SDL_x11video.h | 3 +++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/video/x11/SDL_x11shape.c b/src/video/x11/SDL_x11shape.c index ac58dfbef..abf62559c 100644 --- a/src/video/x11/SDL_x11shape.c +++ b/src/video/x11/SDL_x11shape.c @@ -21,13 +21,14 @@ */ #include -#include +#include "SDL_x11video.h" #include "SDL_x11shape.h" #include "SDL_x11window.h" -#include "SDL_x11video.h" SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) { SDL_WindowShaper* result = NULL; + +#if SDL_VIDEO_DRIVER_X11_XSHAPE if (SDL_X11_HAVE_XSHAPE) { /* Make sure X server supports it. */ result = malloc(sizeof(SDL_WindowShaper)); result->window = window; @@ -38,6 +39,7 @@ SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) { int resized_properly = X11_ResizeWindowShape(window); assert(resized_properly == 0); } +#endif return result; } @@ -69,6 +71,8 @@ int X11_ResizeWindowShape(SDL_Window* window) { int X11_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shapeMode) { if(shaper == NULL || shape == NULL || shaper->driverdata == NULL) return -1; + +#if SDL_VIDEO_DRIVER_X11_XSHAPE if(!SDL_ISPIXELFORMAT_ALPHA(SDL_MasksToPixelFormatEnum(shape->format->BitsPerPixel,shape->format->Rmask,shape->format->Gmask,shape->format->Bmask,shape->format->Amask))) return -2; if(shape->w != shaper->window->w || shape->h != shaper->window->h) @@ -85,6 +89,7 @@ int X11_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowSha XSync(windowdata->videodata->display,False); XFreePixmap(windowdata->videodata->display,shapemask); - +#endif + return 0; } diff --git a/src/video/x11/SDL_x11sym.h b/src/video/x11/SDL_x11sym.h index 1669d7d54..f68465448 100644 --- a/src/video/x11/SDL_x11sym.h +++ b/src/video/x11/SDL_x11sym.h @@ -233,7 +233,7 @@ SDL_X11_SYM(Status,XScreenSaverQueryVersion,(Display *dpy,int *major_versionp,in SDL_X11_SYM(void,XScreenSaverSuspend,(Display *dpy,Bool suspend),(dpy,suspend),return) #endif -#if 1 /* !!! FIXME: SDL_VIDEO_DRIVER_X11_XSHAPE */ +#if SDL_VIDEO_DRIVER_X11_XSHAPE SDL_X11_MODULE(XSHAPE) SDL_X11_SYM(void,XShapeCombineMask,(Display *dpy,Window dest,int dest_kind,int x_off,int y_off,Pixmap src,int op),(dpy,dest,dest_kind,x_off,y_off,src,op),) #endif diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 1ba0ba392..d12884622 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -45,6 +45,9 @@ #if SDL_VIDEO_DRIVER_X11_SCRNSAVER #include #endif +#if SDL_VIDEO_DRIVER_X11_XSHAPE +#include +#endif #include "SDL_x11dyn.h"