diff --git a/src/library_sdl.js b/src/library_sdl.js index 96663237468ec..14bdd0f269133 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -3330,7 +3330,8 @@ var LibrarySDL = { // SDL 2 SDL_GL_ExtensionSupported__proxy: 'sync', - SDL_GL_ExtensionSupported: (extension) => Module.ctx.getExtension(extension) | 0, + SDL_GL_ExtensionSupported__deps: ['$GLctx', '$UTF8ToString'], + SDL_GL_ExtensionSupported: (extension) => GLctx?.getExtension(UTF8ToString(extension)) ? 1 : 0, SDL_DestroyWindow: (window) => {}, diff --git a/test/browser/test_sdl_gl_extensions.c b/test/browser/test_sdl_gl_extensions.c new file mode 100644 index 0000000000000..b718eea085e74 --- /dev/null +++ b/test/browser/test_sdl_gl_extensions.c @@ -0,0 +1,32 @@ +#include "SDL/SDL.h" +#include "SDL/SDL_opengl.h" + +#include +#include +#include + +int main(int argc, char *argv[]) { + SDL_Surface *screen; + + assert(SDL_Init(SDL_INIT_VIDEO) == 0); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + screen = SDL_SetVideoMode( 640, 480, 16, SDL_OPENGL); + assert(screen); + + char *extensions = (char*)glGetString(GL_EXTENSIONS); + printf("extensions: %s\n", extensions); + assert(extensions); + + int supported = SDL_GL_ExtensionSupported("foobar"); + assert(!supported); + + char* end = strchr(extensions, ' '); + *end = '\0'; + printf("testing for extension: %s\n", extensions); + supported = SDL_GL_ExtensionSupported(extensions); + printf("supported: %d\n", supported); + assert(supported); + + SDL_Quit(); + return 0; +} diff --git a/test/test_browser.py b/test/test_browser.py index f1f2abf32fda6..0f94399b4773c 100644 --- a/test/test_browser.py +++ b/test/test_browser.py @@ -1479,6 +1479,10 @@ def test_sdl_canvas_size(self): args=['-O2', '--minify=0', '--shell-file', test_file('browser/test_sdl_canvas_size.html'), '-lSDL', '-lGL']) + @requires_graphics_hardware + def test_sdl_gl_extensions(self): + self.btest_exit('test_sdl_gl_extensions.c', args=['-lSDL', '-lGL']) + @requires_graphics_hardware def test_sdl_gl_read(self): # SDL, OpenGL, readPixels