Commit 8d6d1c0e authored by Ryan C. Gordon's avatar Ryan C. Gordon

Check configure-defined macro before doing _anything_ with XShape.

parent 799e5c6c
...@@ -21,13 +21,14 @@ ...@@ -21,13 +21,14 @@
*/ */
#include <assert.h> #include <assert.h>
#include <X11/extensions/shape.h> #include "SDL_x11video.h"
#include "SDL_x11shape.h" #include "SDL_x11shape.h"
#include "SDL_x11window.h" #include "SDL_x11window.h"
#include "SDL_x11video.h"
SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) { SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) {
SDL_WindowShaper* result = NULL; SDL_WindowShaper* result = NULL;
#if SDL_VIDEO_DRIVER_X11_XSHAPE
if (SDL_X11_HAVE_XSHAPE) { /* Make sure X server supports it. */ if (SDL_X11_HAVE_XSHAPE) { /* Make sure X server supports it. */
result = malloc(sizeof(SDL_WindowShaper)); result = malloc(sizeof(SDL_WindowShaper));
result->window = window; result->window = window;
...@@ -38,6 +39,7 @@ SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) { ...@@ -38,6 +39,7 @@ SDL_WindowShaper* X11_CreateShaper(SDL_Window* window) {
int resized_properly = X11_ResizeWindowShape(window); int resized_properly = X11_ResizeWindowShape(window);
assert(resized_properly == 0); assert(resized_properly == 0);
} }
#endif
return result; return result;
} }
...@@ -69,6 +71,8 @@ int X11_ResizeWindowShape(SDL_Window* window) { ...@@ -69,6 +71,8 @@ int X11_ResizeWindowShape(SDL_Window* window) {
int X11_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shapeMode) { int X11_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shapeMode) {
if(shaper == NULL || shape == NULL || shaper->driverdata == NULL) if(shaper == NULL || shape == NULL || shaper->driverdata == NULL)
return -1; 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))) if(!SDL_ISPIXELFORMAT_ALPHA(SDL_MasksToPixelFormatEnum(shape->format->BitsPerPixel,shape->format->Rmask,shape->format->Gmask,shape->format->Bmask,shape->format->Amask)))
return -2; return -2;
if(shape->w != shaper->window->w || shape->h != shaper->window->h) 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 ...@@ -85,6 +89,7 @@ int X11_SetWindowShape(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowSha
XSync(windowdata->videodata->display,False); XSync(windowdata->videodata->display,False);
XFreePixmap(windowdata->videodata->display,shapemask); XFreePixmap(windowdata->videodata->display,shapemask);
#endif
return 0; return 0;
} }
...@@ -233,7 +233,7 @@ SDL_X11_SYM(Status,XScreenSaverQueryVersion,(Display *dpy,int *major_versionp,in ...@@ -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) SDL_X11_SYM(void,XScreenSaverSuspend,(Display *dpy,Bool suspend),(dpy,suspend),return)
#endif #endif
#if 1 /* !!! FIXME: SDL_VIDEO_DRIVER_X11_XSHAPE */ #if SDL_VIDEO_DRIVER_X11_XSHAPE
SDL_X11_MODULE(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),) 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 #endif
......
...@@ -45,6 +45,9 @@ ...@@ -45,6 +45,9 @@
#if SDL_VIDEO_DRIVER_X11_SCRNSAVER #if SDL_VIDEO_DRIVER_X11_SCRNSAVER
#include <X11/extensions/scrnsaver.h> #include <X11/extensions/scrnsaver.h>
#endif #endif
#if SDL_VIDEO_DRIVER_X11_XSHAPE
#include <X11/extensions/shape.h>
#endif
#include "SDL_x11dyn.h" #include "SDL_x11dyn.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment