From: rlk Date: Mon, 4 Apr 2011 21:54:20 +0000 (+0000) Subject: Implemented an ugly hack to silence a C warning about casting a void pointer to a... X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=c1c00cf82bb93f088c7dde90f5471c9e89d6e504;p=neverball Implemented an ugly hack to silence a C warning about casting a void pointer to a function pointer. It's really great that POSIX forces you to break the language rules like that. git-svn-id: https://s.snth.net/svn/neverball/branches/gles@3556 78b8d119-cf0a-0410-b17c-f493084dd1d7 --- diff --git a/share/glext.c b/share/glext.c index c85b699..d1d3dde 100644 --- a/share/glext.c +++ b/share/glext.c @@ -56,37 +56,34 @@ int glext_check(const char *needle) /*---------------------------------------------------------------------------*/ +#define SDL_GL_GFPA(fun, str) do { \ + ptr = SDL_GL_GetProcAddress(str); \ + memcpy(&fun, &ptr, sizeof (void *)); \ +} while(0) + +/*---------------------------------------------------------------------------*/ + void glext_init(void) { #ifndef CONF_OPENGLES + void *ptr; + if (glext_check("ARB_multitexture")) - { - glActiveTexture_ = (PFNGLACTIVETEXTURE_PROC) - SDL_GL_GetProcAddress("glActiveTextureARB"); - } + SDL_GL_GFPA(glActiveTexture_, "glActiveTextureARB"); if (glext_check("ARB_vertex_buffer_object")) { - glGenBuffers_ = (PFNGLGENBUFFERS_PROC) - SDL_GL_GetProcAddress("glGenBuffersARB"); - glBindBuffer_ = (PFNGLBINDBUFFER_PROC) - SDL_GL_GetProcAddress("glBindBufferARB"); - glBufferData_ = (PFNGLBUFFERDATA_PROC) - SDL_GL_GetProcAddress("glBufferDataARB"); - glBufferSubData_ = (PFNGLBUFFERSUBDATA_PROC) - SDL_GL_GetProcAddress("glBufferSubDataARB"); - glDeleteBuffers_ = (PFNGLDELETEBUFFERS_PROC) - SDL_GL_GetProcAddress("glDeleteBuffersARB"); - glIsBuffer_ = (PFNGLISBUFFER_PROC) - SDL_GL_GetProcAddress("glIsBufferARB"); + SDL_GL_GFPA(glGenBuffers_, "glGenBuffersARB"); + SDL_GL_GFPA(glBindBuffer_, "glBindBufferARB"); + SDL_GL_GFPA(glBufferData_, "glBufferDataARB"); + SDL_GL_GFPA(glBufferSubData_, "glBufferSubDataARB"); + SDL_GL_GFPA(glDeleteBuffers_, "glDeleteBuffersARB"); + SDL_GL_GFPA(glIsBuffer_, "glIsBufferARB"); } if (glext_check("ARB_point_parameters")) - { - glPointParameterfv_ = (PFNGLPOINTPARAMETERFV_PROC) - SDL_GL_GetProcAddress("glPointParameterfvARB"); - } + SDL_GL_GFPA(glPointParameterfv_, "glPointParameterfvARB"); #endif }