Use an opaque struct typedef for SDL_GLContext

Using a struct typedef instead of a void pointer results in extra C typechecks
This commit is contained in:
Anonymous Maarten 2024-06-14 19:56:33 +02:00 committed by Anonymous Maarten
parent 41532e84cb
commit 031dc0743f
3 changed files with 10 additions and 9 deletions

View File

@ -200,7 +200,7 @@ typedef enum SDL_FlashOperation
* *
* \sa SDL_GL_CreateContext * \sa SDL_GL_CreateContext
*/ */
typedef void *SDL_GLContext; typedef struct SDL_GLContextState *SDL_GLContext;
/** /**
* Opaque EGL types. * Opaque EGL types.

View File

@ -756,8 +756,8 @@ SDL_GLContext WIN_GL_CreateContext(SDL_VideoDevice *_this, SDL_Window *window)
} }
/* Make the context current */ /* Make the context current */
if (WIN_GL_MakeCurrent(_this, window, temp_context) < 0) { if (WIN_GL_MakeCurrent(_this, window, (SDL_GLContext)temp_context) < 0) {
WIN_GL_DeleteContext(_this, temp_context); WIN_GL_DeleteContext(_this, (SDL_GLContext)temp_context);
return NULL; return NULL;
} }
@ -819,12 +819,12 @@ SDL_GLContext WIN_GL_CreateContext(SDL_VideoDevice *_this, SDL_Window *window)
return NULL; return NULL;
} }
if (WIN_GL_MakeCurrent(_this, window, context) < 0) { if (WIN_GL_MakeCurrent(_this, window, (SDL_GLContext)context) < 0) {
WIN_GL_DeleteContext(_this, context); WIN_GL_DeleteContext(_this, (SDL_GLContext)context);
return NULL; return NULL;
} }
return context; return (SDL_GLContext)context;
} }
int WIN_GL_MakeCurrent(SDL_VideoDevice *_this, SDL_Window *window, SDL_GLContext context) int WIN_GL_MakeCurrent(SDL_VideoDevice *_this, SDL_Window *window, SDL_GLContext context)

View File

@ -716,7 +716,8 @@ SDL_GLContext X11_GL_CreateContext(SDL_VideoDevice *_this, SDL_Window *window)
XWindowAttributes xattr; XWindowAttributes xattr;
XVisualInfo v, *vinfo; XVisualInfo v, *vinfo;
int n; int n;
GLXContext context = NULL, share_context; SDL_GLContext context = NULL;
GLXContext share_context;
const int transparent = (window->flags & SDL_WINDOW_TRANSPARENT) ? SDL_TRUE : SDL_FALSE; const int transparent = (window->flags & SDL_WINDOW_TRANSPARENT) ? SDL_TRUE : SDL_FALSE;
if (_this->gl_config.share_with_current_context) { if (_this->gl_config.share_with_current_context) {
@ -741,7 +742,7 @@ SDL_GLContext X11_GL_CreateContext(SDL_VideoDevice *_this, SDL_Window *window)
_this->gl_config.flags == 0 && !transparent) { _this->gl_config.flags == 0 && !transparent) {
/* Create legacy context */ /* Create legacy context */
context = context =
_this->gl_data->glXCreateContext(display, vinfo, share_context, True); (SDL_GLContext)_this->gl_data->glXCreateContext(display, vinfo, share_context, True);
} else { } else {
/* max 14 attributes plus terminator */ /* max 14 attributes plus terminator */
int attribs[15] = { int attribs[15] = {
@ -813,7 +814,7 @@ SDL_GLContext X11_GL_CreateContext(SDL_VideoDevice *_this, SDL_Window *window)
} }
if (framebuffer_config) { if (framebuffer_config) {
context = _this->gl_data->glXCreateContextAttribsARB(display, context = (SDL_GLContext)_this->gl_data->glXCreateContextAttribsARB(display,
framebuffer_config[0], framebuffer_config[0],
share_context, True, attribs); share_context, True, attribs);
X11_XFree(framebuffer_config); X11_XFree(framebuffer_config);