From 5e2144ca7589e1b394215d257141c91141e77552 Mon Sep 17 00:00:00 2001 From: Eli Gottlieb Date: Thu, 15 Jul 2010 01:41:38 -0400 Subject: [PATCH] Added in Visual Studio patch. --- VisualC/SDL_VS2010.sln | 4 ++-- src/video/SDL_shape.c | 24 +++++++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/VisualC/SDL_VS2010.sln b/VisualC/SDL_VS2010.sln index 1e18f366f..b55d8d7c7 100644 --- a/VisualC/SDL_VS2010.sln +++ b/VisualC/SDL_VS2010.sln @@ -2,9 +2,9 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CE748C1F-3C21-4825-AA6A-F895A023F7E7}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL", "SDL\SDL_VS2008.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL", "SDL\SDL_VS2010.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDLmain", "SDLmain\SDLmain_VS2008.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDLmain", "SDLmain\SDLmain_VS2010.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "automated", "tests\automated\automated.vcxproj", "{DDD710DB-EC7B-4CCB-BD75-535D401A2FE0}" EndProject diff --git a/src/video/SDL_shape.c b/src/video/SDL_shape.c index 5e0d33a30..d9ccc0e24 100644 --- a/src/video/SDL_shape.c +++ b/src/video/SDL_shape.c @@ -30,11 +30,21 @@ SDL_Window* SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags) { SDL_Window *result = SDL_CreateWindow(title,x,y,w,h,SDL_WINDOW_BORDERLESS | flags & !SDL_WINDOW_FULLSCREEN & !SDL_WINDOW_SHOWN); - result->shaper = result->display->device->shape_driver.CreateShaper(result); - result->shaper->usershownflag = flags & SDL_WINDOW_SHOWN; - result->shaper->alphacutoff = 1; - result->shaper->hasshape = SDL_FALSE; - return result; + if(result != NULL) { + result->shaper = result->display->device->shape_driver.CreateShaper(result); + if(result->shaper != NULL) { + result->shaper->usershownflag = flags & SDL_WINDOW_SHOWN; + result->shaper->alphacutoff = 1; + result->shaper->hasshape = SDL_FALSE; + return result; + } + else { + SDL_DestroyWindow(result); + return NULL; + } + } + else + return NULL; } SDL_bool SDL_IsShapedWindow(const SDL_Window *window) { @@ -55,10 +65,10 @@ void SDL_CalculateShapeBitmap(Uint8 alphacutoff,SDL_Surface *shape,Uint8* bitmap SDL_LockSurface(shape); for(x = 0;xw;x++) for(y = 0;yh;y++) { - pixel = shape->pixels + (y*shape->pitch) + (x*shape->format->BytesPerPixel); + pixel = (Uint8 *)(shape->pixels) + (y*shape->pitch) + (x*shape->format->BytesPerPixel); alpha = 0; SDL_GetRGBA(*(Uint32*)pixel,shape->format,&r,&g,&b,&alpha); - Uint32 bitmap_pixel = y*shape->w + x; + bitmap_pixel = y*shape->w + x; bitmap[bitmap_pixel / ppb] |= (alpha >= alphacutoff ? value : 0) << ((ppb - 1) - (bitmap_pixel % ppb)); } if(SDL_MUSTLOCK(shape))