From 524bf3c282f341a72bd14953f9b78bac423a8de5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 9 Dec 2016 01:47:43 -0800 Subject: [PATCH] Fixed bug 3513 - SDL_GL_SwapWindow does not return error status Return an error code from SDL_GL_SwapWindow(), like the other SDL APIs. --- include/SDL_video.h | 2 +- src/dynapi/SDL_dynapi_procs.h | 2 +- src/video/SDL_egl_c.h | 6 +- src/video/SDL_sysvideo.h | 2 +- src/video/SDL_video.c | 12 ++- src/video/cocoa/SDL_cocoaopengl.h | 2 +- src/video/cocoa/SDL_cocoaopengl.m | 3 +- src/video/directfb/SDL_DirectFB_opengl.c | 6 +- src/video/directfb/SDL_DirectFB_opengl.h | 2 +- src/video/haiku/SDL_BWin.h | 2 + src/video/haiku/SDL_bclipboard.cc | 2 + src/video/haiku/SDL_bclipboard.h | 2 + src/video/haiku/SDL_bevents.cc | 2 + src/video/haiku/SDL_bevents.h | 2 + src/video/haiku/SDL_bframebuffer.cc | 2 + src/video/haiku/SDL_bframebuffer.h | 2 + src/video/haiku/SDL_bkeyboard.cc | 2 + src/video/haiku/SDL_bkeyboard.h | 2 + src/video/haiku/SDL_bmodes.cc | 2 + src/video/haiku/SDL_bmodes.h | 2 + src/video/haiku/SDL_bopengl.cc | 105 ++++++++++++----------- src/video/haiku/SDL_bopengl.h | 4 +- src/video/haiku/SDL_bvideo.cc | 2 + src/video/haiku/SDL_bvideo.h | 2 + src/video/haiku/SDL_bwindow.cc | 2 + src/video/haiku/SDL_bwindow.h | 1 + src/video/mir/SDL_miropengl.c | 4 +- src/video/mir/SDL_miropengl.h | 2 +- src/video/pandora/SDL_pandora.c | 6 +- src/video/psp/SDL_pspgl.c | 3 +- src/video/psp/SDL_pspgl_c.h | 2 +- src/video/psp/SDL_pspvideo.h | 2 +- src/video/uikit/SDL_uikitopengles.h | 2 +- src/video/uikit/SDL_uikitopengles.m | 3 +- src/video/windows/SDL_windowsopengl.c | 7 +- src/video/windows/SDL_windowsopengl.h | 2 +- src/video/x11/SDL_x11opengl.c | 3 +- src/video/x11/SDL_x11opengl.h | 2 +- 38 files changed, 126 insertions(+), 87 deletions(-) diff --git a/include/SDL_video.h b/include/SDL_video.h index 402ff1c21e6bc..d116ef612492b 100644 --- a/include/SDL_video.h +++ b/include/SDL_video.h @@ -1195,7 +1195,7 @@ extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); * \brief Swap the OpenGL buffers for a window, if double-buffering is * supported. */ -extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); +extern DECLSPEC int SDLCALL SDL_GL_SwapWindow(SDL_Window * window); /** * \brief Delete an OpenGL context. diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index d6a2ea20747dd..132d8c2b44850 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -595,7 +595,7 @@ SDL_DYNAPI_PROC(SDL_GLContext,SDL_GL_GetCurrentContext,(void),(),return) SDL_DYNAPI_PROC(void,SDL_GL_GetDrawableSize,(SDL_Window *a, int *b, int *c),(a,b,c),) SDL_DYNAPI_PROC(int,SDL_GL_SetSwapInterval,(int a),(a),return) SDL_DYNAPI_PROC(int,SDL_GL_GetSwapInterval,(void),(),return) -SDL_DYNAPI_PROC(void,SDL_GL_SwapWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(int,SDL_GL_SwapWindow,(SDL_Window *a),(a),return) SDL_DYNAPI_PROC(void,SDL_GL_DeleteContext,(SDL_GLContext a),(a),) SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c),return) SDL_DYNAPI_PROC(int,SDL_GameControllerAddMappingsFromRW,(SDL_RWops *a, int b),(a,b),return) diff --git a/src/video/SDL_egl_c.h b/src/video/SDL_egl_c.h index 72e2cebb24980..3c1f98418103e 100644 --- a/src/video/SDL_egl_c.h +++ b/src/video/SDL_egl_c.h @@ -96,14 +96,14 @@ extern void SDL_EGL_DestroySurface(_THIS, EGLSurface egl_surface); /* These need to be wrapped to get the surface for the window by the platform GLES implementation */ extern SDL_GLContext SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface); extern int SDL_EGL_MakeCurrent(_THIS, EGLSurface egl_surface, SDL_GLContext context); -extern void SDL_EGL_SwapBuffers(_THIS, EGLSurface egl_surface); +extern int SDL_EGL_SwapBuffers(_THIS, EGLSurface egl_surface); /* A few of useful macros */ -#define SDL_EGL_SwapWindow_impl(BACKEND) void \ +#define SDL_EGL_SwapWindow_impl(BACKEND) int \ BACKEND ## _GLES_SwapWindow(_THIS, SDL_Window * window) \ {\ - SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);\ + return SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface);\ } #define SDL_EGL_MakeCurrent_impl(BACKEND) int \ diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index b01faae41281a..53ef9b361eba3 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -252,7 +252,7 @@ struct SDL_VideoDevice void (*GL_GetDrawableSize) (_THIS, SDL_Window * window, int *w, int *h); int (*GL_SetSwapInterval) (_THIS, int interval); int (*GL_GetSwapInterval) (_THIS); - void (*GL_SwapWindow) (_THIS, SDL_Window * window); + int (*GL_SwapWindow) (_THIS, SDL_Window * window); void (*GL_DeleteContext) (_THIS, SDL_GLContext context); /* * * */ diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index ba724e28bd767..cc8e8ef6cd13d 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -3382,22 +3382,20 @@ SDL_GL_GetSwapInterval(void) } } -void +int SDL_GL_SwapWindow(SDL_Window * window) { - CHECK_WINDOW_MAGIC(window,); + CHECK_WINDOW_MAGIC(window,-1); if (!(window->flags & SDL_WINDOW_OPENGL)) { - SDL_SetError("The specified window isn't an OpenGL window"); - return; + return SDL_SetError("The specified window isn't an OpenGL window"); } if (SDL_GL_GetCurrentWindow() != window) { - SDL_SetError("The specified window has not been made current"); - return; + return SDL_SetError("The specified window has not been made current"); } - _this->GL_SwapWindow(_this, window); + return _this->GL_SwapWindow(_this, window); } void diff --git a/src/video/cocoa/SDL_cocoaopengl.h b/src/video/cocoa/SDL_cocoaopengl.h index 1f7bd57f057a6..ac6db799d3a5e 100644 --- a/src/video/cocoa/SDL_cocoaopengl.h +++ b/src/video/cocoa/SDL_cocoaopengl.h @@ -58,7 +58,7 @@ extern void Cocoa_GL_GetDrawableSize(_THIS, SDL_Window * window, int * w, int * h); extern int Cocoa_GL_SetSwapInterval(_THIS, int interval); extern int Cocoa_GL_GetSwapInterval(_THIS); -extern void Cocoa_GL_SwapWindow(_THIS, SDL_Window * window); +extern int Cocoa_GL_SwapWindow(_THIS, SDL_Window * window); extern void Cocoa_GL_DeleteContext(_THIS, SDL_GLContext context); #endif /* SDL_VIDEO_OPENGL_CGL */ diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 645e5ba45dc96..d067b8386ac16 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -383,13 +383,14 @@ - (void)setWindow:(SDL_Window *)newWindow return status; }} -void +int Cocoa_GL_SwapWindow(_THIS, SDL_Window * window) { @autoreleasepool { SDLOpenGLContext* nscontext = (SDLOpenGLContext*)SDL_GL_GetCurrentContext(); [nscontext flushBuffer]; [nscontext updateIfNeeded]; + return 0; }} void diff --git a/src/video/directfb/SDL_DirectFB_opengl.c b/src/video/directfb/SDL_DirectFB_opengl.c index 065854a08fbbb..f631671fe4ca3 100644 --- a/src/video/directfb/SDL_DirectFB_opengl.c +++ b/src/video/directfb/SDL_DirectFB_opengl.c @@ -246,7 +246,7 @@ DirectFB_GL_GetSwapInterval(_THIS) return 0; } -void +int DirectFB_GL_SwapWindow(_THIS, SDL_Window * window) { SDL_DFB_WINDOWDATA(window); @@ -273,9 +273,9 @@ DirectFB_GL_SwapWindow(_THIS, SDL_Window * window) } SDL_DFB_CHECKERR(windata->window_surface->Flip(windata->window_surface,NULL, DSFLIP_PIPELINE |DSFLIP_BLIT | DSFLIP_ONSYNC )); - return; + return 0; error: - return; + return -1; } void diff --git a/src/video/directfb/SDL_DirectFB_opengl.h b/src/video/directfb/SDL_DirectFB_opengl.h index 6391ee4f3d752..591cbc55a5b0b 100644 --- a/src/video/directfb/SDL_DirectFB_opengl.h +++ b/src/video/directfb/SDL_DirectFB_opengl.h @@ -50,7 +50,7 @@ extern int DirectFB_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); extern int DirectFB_GL_SetSwapInterval(_THIS, int interval); extern int DirectFB_GL_GetSwapInterval(_THIS); -extern void DirectFB_GL_SwapWindow(_THIS, SDL_Window * window); +extern int DirectFB_GL_SwapWindow(_THIS, SDL_Window * window); extern void DirectFB_GL_DeleteContext(_THIS, SDL_GLContext context); extern void DirectFB_GL_FreeWindowContexts(_THIS, SDL_Window * window); diff --git a/src/video/haiku/SDL_BWin.h b/src/video/haiku/SDL_BWin.h index a353e1acade0b..befe90f9a614f 100644 --- a/src/video/haiku/SDL_BWin.h +++ b/src/video/haiku/SDL_BWin.h @@ -668,3 +668,5 @@ class SDL_BWin:public BDirectWindow * buffer provided by DirectConnected() is invalidated. */ #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bclipboard.cc b/src/video/haiku/SDL_bclipboard.cc index fcd1caa269bae..a0084939ddcc7 100644 --- a/src/video/haiku/SDL_bclipboard.cc +++ b/src/video/haiku/SDL_bclipboard.cc @@ -93,3 +93,5 @@ SDL_bool BE_HasClipboardText(_THIS) { #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bclipboard.h b/src/video/haiku/SDL_bclipboard.h index dd31f19a558ac..773e03ebd8e3d 100644 --- a/src/video/haiku/SDL_bclipboard.h +++ b/src/video/haiku/SDL_bclipboard.h @@ -29,3 +29,5 @@ extern char *BE_GetClipboardText(_THIS); extern SDL_bool BE_HasClipboardText(_THIS); #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bevents.cc b/src/video/haiku/SDL_bevents.cc index 36513a3b242cc..207628b970430 100644 --- a/src/video/haiku/SDL_bevents.cc +++ b/src/video/haiku/SDL_bevents.cc @@ -37,3 +37,5 @@ void BE_PumpEvents(_THIS) { #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bevents.h b/src/video/haiku/SDL_bevents.h index cb756c9677bdc..9a74dc8a6eb67 100644 --- a/src/video/haiku/SDL_bevents.h +++ b/src/video/haiku/SDL_bevents.h @@ -35,3 +35,5 @@ extern void BE_PumpEvents(_THIS); #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bframebuffer.cc b/src/video/haiku/SDL_bframebuffer.cc index 5e6a300e8e251..48f8d4c828793 100644 --- a/src/video/haiku/SDL_bframebuffer.cc +++ b/src/video/haiku/SDL_bframebuffer.cc @@ -252,3 +252,5 @@ int32 BE_UpdateOnce(SDL_Window *window) { #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bframebuffer.h b/src/video/haiku/SDL_bframebuffer.h index d6be21f4d064e..393b770fb0b46 100644 --- a/src/video/haiku/SDL_bframebuffer.h +++ b/src/video/haiku/SDL_bframebuffer.h @@ -43,3 +43,5 @@ extern int32 BE_DrawThread(void *data); #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bkeyboard.cc b/src/video/haiku/SDL_bkeyboard.cc index 0ae3d3fc109b8..6880dae28daed 100644 --- a/src/video/haiku/SDL_bkeyboard.cc +++ b/src/video/haiku/SDL_bkeyboard.cc @@ -186,3 +186,5 @@ void BE_SetKeyState(int32 bkey, int8 state) { #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bkeyboard.h b/src/video/haiku/SDL_bkeyboard.h index 632799421497d..84621e26ebfbb 100644 --- a/src/video/haiku/SDL_bkeyboard.h +++ b/src/video/haiku/SDL_bkeyboard.h @@ -40,3 +40,5 @@ extern void BE_SetKeyState(int32 bkey, int8 state); #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bmodes.cc b/src/video/haiku/SDL_bmodes.cc index 84aeb1f07bcb0..30b9539a93460 100644 --- a/src/video/haiku/SDL_bmodes.cc +++ b/src/video/haiku/SDL_bmodes.cc @@ -329,3 +329,5 @@ int BE_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode){ #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bmodes.h b/src/video/haiku/SDL_bmodes.h index c3882ba580dd0..10b4c3feb16e9 100644 --- a/src/video/haiku/SDL_bmodes.h +++ b/src/video/haiku/SDL_bmodes.h @@ -44,3 +44,5 @@ extern int BE_SetDisplayMode(_THIS, SDL_VideoDisplay *display, #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc index 15454f1007bf0..6e1a7b4e2167e 100644 --- a/src/video/haiku/SDL_bopengl.cc +++ b/src/video/haiku/SDL_bopengl.cc @@ -38,40 +38,40 @@ extern "C" { #define BGL_FLAGS BGL_RGB | BGL_DOUBLE static SDL_INLINE SDL_BWin *_ToBeWin(SDL_Window *window) { - return ((SDL_BWin*)(window->driverdata)); + return ((SDL_BWin*)(window->driverdata)); } static SDL_INLINE SDL_BApp *_GetBeApp() { - return ((SDL_BApp*)be_app); + return ((SDL_BApp*)be_app); } /* Passing a NULL path means load pointers from the application */ int BE_GL_LoadLibrary(_THIS, const char *path) { /* FIXME: Is this working correctly? */ - image_info info; - int32 cookie = 0; - while (get_next_image_info(0, &cookie, &info) == B_OK) { - void *location = NULL; - if( get_image_symbol(info.id, "glBegin", B_SYMBOL_TYPE_ANY, - &location) == B_OK) { - - _this->gl_config.dll_handle = (void *) info.id; - _this->gl_config.driver_loaded = 1; - SDL_strlcpy(_this->gl_config.driver_path, "libGL.so", - SDL_arraysize(_this->gl_config.driver_path)); - } - } - return 0; + image_info info; + int32 cookie = 0; + while (get_next_image_info(0, &cookie, &info) == B_OK) { + void *location = NULL; + if( get_image_symbol(info.id, "glBegin", B_SYMBOL_TYPE_ANY, + &location) == B_OK) { + + _this->gl_config.dll_handle = (void *) info.id; + _this->gl_config.driver_loaded = 1; + SDL_strlcpy(_this->gl_config.driver_path, "libGL.so", + SDL_arraysize(_this->gl_config.driver_path)); + } + } + return 0; } void *BE_GL_GetProcAddress(_THIS, const char *proc) { - if (_this->gl_config.dll_handle != NULL) { - void *location = NULL; - status_t err; - if ((err = - get_image_symbol((image_id) _this->gl_config.dll_handle, + if (_this->gl_config.dll_handle != NULL) { + void *location = NULL; + status_t err; + if ((err = + get_image_symbol((image_id) _this->gl_config.dll_handle, proc, B_SYMBOL_TYPE_ANY, &location)) == B_OK) { return location; @@ -79,52 +79,53 @@ void *BE_GL_GetProcAddress(_THIS, const char *proc) SDL_SetError("Couldn't find OpenGL symbol"); return NULL; } - } else { - SDL_SetError("OpenGL library not loaded"); - return NULL; - } + } else { + SDL_SetError("OpenGL library not loaded"); + return NULL; + } } -void BE_GL_SwapWindow(_THIS, SDL_Window * window) { +int BE_GL_SwapWindow(_THIS, SDL_Window * window) { _ToBeWin(window)->SwapBuffers(); + return 0; } int BE_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context) { - _GetBeApp()->SetCurrentContext(((SDL_BWin*)context)->GetGLView()); - return 0; + _GetBeApp()->SetCurrentContext(((SDL_BWin*)context)->GetGLView()); + return 0; } SDL_GLContext BE_GL_CreateContext(_THIS, SDL_Window * window) { - /* FIXME: Not sure what flags should be included here; may want to have - most of them */ - SDL_BWin *bwin = _ToBeWin(window); - bwin->CreateGLView(BGL_FLAGS); - return (SDL_GLContext)(bwin); + /* FIXME: Not sure what flags should be included here; may want to have + most of them */ + SDL_BWin *bwin = _ToBeWin(window); + bwin->CreateGLView(BGL_FLAGS); + return (SDL_GLContext)(bwin); } void BE_GL_DeleteContext(_THIS, SDL_GLContext context) { - /* Currently, automatically unlocks the view */ - ((SDL_BWin*)context)->RemoveGLView(); + /* Currently, automatically unlocks the view */ + ((SDL_BWin*)context)->RemoveGLView(); } int BE_GL_SetSwapInterval(_THIS, int interval) { - /* TODO: Implement this, if necessary? */ - return 0; + /* TODO: Implement this, if necessary? */ + return 0; } int BE_GL_GetSwapInterval(_THIS) { - /* TODO: Implement this, if necessary? */ - return 0; + /* TODO: Implement this, if necessary? */ + return 0; } void BE_GL_UnloadLibrary(_THIS) { - /* TODO: Implement this, if necessary? */ + /* TODO: Implement this, if necessary? */ } @@ -132,17 +133,17 @@ void BE_GL_UnloadLibrary(_THIS) { mode changes (see SDL_bmodes.cc), but it doesn't seem to help, and is not currently in use. */ void BE_GL_RebootContexts(_THIS) { - SDL_Window *window = _this->windows; - while(window) { - SDL_BWin *bwin = _ToBeWin(window); - if(bwin->GetGLView()) { - bwin->LockLooper(); - bwin->RemoveGLView(); - bwin->CreateGLView(BGL_FLAGS); - bwin->UnlockLooper(); - } - window = window->next; - } + SDL_Window *window = _this->windows; + while(window) { + SDL_BWin *bwin = _ToBeWin(window); + if(bwin->GetGLView()) { + bwin->LockLooper(); + bwin->RemoveGLView(); + bwin->CreateGLView(BGL_FLAGS); + bwin->UnlockLooper(); + } + window = window->next; + } } @@ -217,3 +218,5 @@ void BE_GL_RebootContexts(_THIS) { #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bopengl.h b/src/video/haiku/SDL_bopengl.h index e7d475dfb797e..feebcae91cc23 100644 --- a/src/video/haiku/SDL_bopengl.h +++ b/src/video/haiku/SDL_bopengl.h @@ -36,7 +36,7 @@ extern int BE_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); extern int BE_GL_SetSwapInterval(_THIS, int interval); /* TODO */ extern int BE_GL_GetSwapInterval(_THIS); /* TODO */ -extern void BE_GL_SwapWindow(_THIS, SDL_Window * window); +extern int BE_GL_SwapWindow(_THIS, SDL_Window * window); extern SDL_GLContext BE_GL_CreateContext(_THIS, SDL_Window * window); extern void BE_GL_DeleteContext(_THIS, SDL_GLContext context); @@ -47,3 +47,5 @@ extern void BE_GL_RebootContexts(_THIS); #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bvideo.cc b/src/video/haiku/SDL_bvideo.cc index 8986c609c7ad7..d02e1f21e87a4 100644 --- a/src/video/haiku/SDL_bvideo.cc +++ b/src/video/haiku/SDL_bvideo.cc @@ -173,3 +173,5 @@ void BE_VideoQuit(_THIS) #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bvideo.h b/src/video/haiku/SDL_bvideo.h index ef5c740320e87..13ba562c9dbd3 100644 --- a/src/video/haiku/SDL_bvideo.h +++ b/src/video/haiku/SDL_bvideo.h @@ -40,3 +40,5 @@ extern int BE_Available(void); #endif #endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bwindow.cc b/src/video/haiku/SDL_bwindow.cc index a35471df5b4c2..cd68c823fb8b8 100644 --- a/src/video/haiku/SDL_bwindow.cc +++ b/src/video/haiku/SDL_bwindow.cc @@ -227,3 +227,5 @@ SDL_bool BE_GetWindowWMInfo(_THIS, SDL_Window * window, #endif #endif /* SDL_VIDEO_DRIVER_HAIKU */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/haiku/SDL_bwindow.h b/src/video/haiku/SDL_bwindow.h index 388443dac5484..a785683837f81 100644 --- a/src/video/haiku/SDL_bwindow.h +++ b/src/video/haiku/SDL_bwindow.h @@ -52,3 +52,4 @@ extern SDL_bool BE_GetWindowWMInfo(_THIS, SDL_Window * window, #endif +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c index 23fabb2672598..652e1cbb1697c 100644 --- a/src/video/mir/SDL_miropengl.c +++ b/src/video/mir/SDL_miropengl.c @@ -31,12 +31,12 @@ #include "SDL_mirdyn.h" -void +int MIR_GL_SwapWindow(_THIS, SDL_Window* window) { MIR_Window* mir_wind = window->driverdata; - SDL_EGL_SwapBuffers(_this, mir_wind->egl_surface); + return SDL_EGL_SwapBuffers(_this, mir_wind->egl_surface); } int diff --git a/src/video/mir/SDL_miropengl.h b/src/video/mir/SDL_miropengl.h index 96bb40a6d8b6c..d5c361001062f 100644 --- a/src/video/mir/SDL_miropengl.h +++ b/src/video/mir/SDL_miropengl.h @@ -34,7 +34,7 @@ #define MIR_GL_GetSwapInterval SDL_EGL_GetSwapInterval #define MIR_GL_SetSwapInterval SDL_EGL_SetSwapInterval -extern void +extern int MIR_GL_SwapWindow(_THIS, SDL_Window* window); extern int diff --git a/src/video/pandora/SDL_pandora.c b/src/video/pandora/SDL_pandora.c index 7afa54306f199..e2469b4dafea5 100644 --- a/src/video/pandora/SDL_pandora.c +++ b/src/video/pandora/SDL_pandora.c @@ -774,15 +774,14 @@ PND_gl_getswapinterval(_THIS) return ((SDL_VideoData *) _this->driverdata)->swapinterval; } -void +int PND_gl_swapwindow(_THIS, SDL_Window * window) { SDL_VideoData *phdata = (SDL_VideoData *) _this->driverdata; SDL_WindowData *wdata = (SDL_WindowData *) window->driverdata; if (phdata->egl_initialized != SDL_TRUE) { - SDL_SetError("PND: GLES initialization failed, no OpenGL ES support"); - return; + return SDL_SetError("PND: GLES initialization failed, no OpenGL ES support"); } /* Many applications do not uses glFinish(), so we call it for them */ @@ -792,6 +791,7 @@ PND_gl_swapwindow(_THIS, SDL_Window * window) eglWaitGL(); eglSwapBuffers(phdata->egl_display, wdata->gles_surface); + return 0; } void diff --git a/src/video/psp/SDL_pspgl.c b/src/video/psp/SDL_pspgl.c index e4f81e9ee47d7..a07b24e687194 100644 --- a/src/video/psp/SDL_pspgl.c +++ b/src/video/psp/SDL_pspgl.c @@ -174,10 +174,11 @@ PSP_GL_GetSwapInterval(_THIS) return _this->gl_data->swapinterval; } -void +int PSP_GL_SwapWindow(_THIS, SDL_Window * window) { eglSwapBuffers(_this->gl_data->display, _this->gl_data->surface); + return 0; } void diff --git a/src/video/psp/SDL_pspgl_c.h b/src/video/psp/SDL_pspgl_c.h index 308b027290e46..332fb0a83145b 100644 --- a/src/video/psp/SDL_pspgl_c.h +++ b/src/video/psp/SDL_pspgl_c.h @@ -40,7 +40,7 @@ extern void * PSP_GL_GetProcAddress(_THIS, const char *proc); extern int PSP_GL_MakeCurrent(_THIS,SDL_Window * window, SDL_GLContext context); extern void PSP_GL_SwapBuffers(_THIS); -extern void PSP_GL_SwapWindow(_THIS, SDL_Window * window); +extern int PSP_GL_SwapWindow(_THIS, SDL_Window * window); extern SDL_GLContext PSP_GL_CreateContext(_THIS, SDL_Window * window); extern int PSP_GL_LoadLibrary(_THIS, const char *path); diff --git a/src/video/psp/SDL_pspvideo.h b/src/video/psp/SDL_pspvideo.h index f5705a9446a4f..1823a5c4b2335 100644 --- a/src/video/psp/SDL_pspvideo.h +++ b/src/video/psp/SDL_pspvideo.h @@ -88,7 +88,7 @@ SDL_GLContext PSP_GL_CreateContext(_THIS, SDL_Window * window); int PSP_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); int PSP_GL_SetSwapInterval(_THIS, int interval); int PSP_GL_GetSwapInterval(_THIS); -void PSP_GL_SwapWindow(_THIS, SDL_Window * window); +int PSP_GL_SwapWindow(_THIS, SDL_Window * window); void PSP_GL_DeleteContext(_THIS, SDL_GLContext context); /* PSP on screen keyboard */ diff --git a/src/video/uikit/SDL_uikitopengles.h b/src/video/uikit/SDL_uikitopengles.h index b52e429135f3b..e1c78a4d3d22e 100644 --- a/src/video/uikit/SDL_uikitopengles.h +++ b/src/video/uikit/SDL_uikitopengles.h @@ -27,7 +27,7 @@ extern int UIKit_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); extern void UIKit_GL_GetDrawableSize(_THIS, SDL_Window * window, int * w, int * h); -extern void UIKit_GL_SwapWindow(_THIS, SDL_Window * window); +extern int UIKit_GL_SwapWindow(_THIS, SDL_Window * window); extern SDL_GLContext UIKit_GL_CreateContext(_THIS, SDL_Window * window); extern void UIKit_GL_DeleteContext(_THIS, SDL_GLContext context); extern void *UIKit_GL_GetProcAddress(_THIS, const char *proc); diff --git a/src/video/uikit/SDL_uikitopengles.m b/src/video/uikit/SDL_uikitopengles.m index 461ff9b8065ac..1ce138640dfe4 100644 --- a/src/video/uikit/SDL_uikitopengles.m +++ b/src/video/uikit/SDL_uikitopengles.m @@ -111,7 +111,7 @@ - (void)dealloc return 0; } -void UIKit_GL_SwapWindow(_THIS, SDL_Window * window) +int UIKit_GL_SwapWindow(_THIS, SDL_Window * window) { @autoreleasepool { SDLEAGLContext *context = (__bridge SDLEAGLContext *) SDL_GL_GetCurrentContext(); @@ -127,6 +127,7 @@ void UIKit_GL_SwapWindow(_THIS, SDL_Window * window) * We don't pump events here because we don't want iOS application events * (low memory, terminate, etc.) to happen inside low level rendering. */ } + return 0; } SDL_GLContext diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index d30d838fdcc5a..7609062d5f563 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -766,12 +766,15 @@ WIN_GL_GetSwapInterval(_THIS) return retval; } -void +int WIN_GL_SwapWindow(_THIS, SDL_Window * window) { HDC hdc = ((SDL_WindowData *) window->driverdata)->hdc; - SwapBuffers(hdc); + if (!SwapBuffers(hdc)) { + return WIN_SetError("SwapBuffers()"); + } + return 0; } void diff --git a/src/video/windows/SDL_windowsopengl.h b/src/video/windows/SDL_windowsopengl.h index 7b95cc8d928fd..ffadf8d8690f3 100644 --- a/src/video/windows/SDL_windowsopengl.h +++ b/src/video/windows/SDL_windowsopengl.h @@ -62,7 +62,7 @@ extern int WIN_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); extern int WIN_GL_SetSwapInterval(_THIS, int interval); extern int WIN_GL_GetSwapInterval(_THIS); -extern void WIN_GL_SwapWindow(_THIS, SDL_Window * window); +extern int WIN_GL_SwapWindow(_THIS, SDL_Window * window); extern void WIN_GL_DeleteContext(_THIS, SDL_GLContext context); extern void WIN_GL_InitExtensions(_THIS); extern SDL_bool WIN_GL_SetPixelFormatFrom(_THIS, SDL_Window * fromWindow, SDL_Window * toWindow); diff --git a/src/video/x11/SDL_x11opengl.c b/src/video/x11/SDL_x11opengl.c index 0f050f7b315c9..ba6552b9b99ae 100644 --- a/src/video/x11/SDL_x11opengl.c +++ b/src/video/x11/SDL_x11opengl.c @@ -783,13 +783,14 @@ X11_GL_GetSwapInterval(_THIS) } } -void +int X11_GL_SwapWindow(_THIS, SDL_Window * window) { SDL_WindowData *data = (SDL_WindowData *) window->driverdata; Display *display = data->videodata->display; _this->gl_data->glXSwapBuffers(display, data->xwindow); + return 0; } void diff --git a/src/video/x11/SDL_x11opengl.h b/src/video/x11/SDL_x11opengl.h index 2bc7dedcf4362..ee861c39d71c4 100644 --- a/src/video/x11/SDL_x11opengl.h +++ b/src/video/x11/SDL_x11opengl.h @@ -63,7 +63,7 @@ extern int X11_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); extern int X11_GL_SetSwapInterval(_THIS, int interval); extern int X11_GL_GetSwapInterval(_THIS); -extern void X11_GL_SwapWindow(_THIS, SDL_Window * window); +extern int X11_GL_SwapWindow(_THIS, SDL_Window * window); extern void X11_GL_DeleteContext(_THIS, SDL_GLContext context); #endif /* SDL_VIDEO_OPENGL_GLX */