# HG changeset patch # User Mike Pavone # Date 1554069209 25200 # Node ID 70a1304b432bd0a478799f0ac5b2e4eb3419d8cc # Parent 4fb9af0c65b67cda4ad6a0df6bd70e210d08deaf Fix crash that occurs when changing video screen settings if the emulator window is currently fullscreen. Add a little more error handling to Open GL code diff -r 4fb9af0c65b6 -r 70a1304b432b render_sdl.c --- a/render_sdl.c Sun Mar 31 12:38:47 2019 -0700 +++ b/render_sdl.c Sun Mar 31 14:53:29 2019 -0700 @@ -531,6 +531,10 @@ fsize += strlen(shader_prefix); } GLuint ret = glCreateShader(shader_type); + if (!ret) { + warning("glCreateShader failed with error %d\n", glGetError()); + return 0; + } glShaderSource(ret, 1, (const GLchar **)&text, (const GLint *)&fsize); free(text); glCompileShader(ret); @@ -965,6 +969,9 @@ switch (event->window.event) { case SDL_WINDOWEVENT_SIZE_CHANGED: + if (!main_window) { + break; + } main_width = event->window.data1; main_height = event->window.data2; update_aspect(); @@ -984,7 +991,7 @@ #endif break; case SDL_WINDOWEVENT_CLOSE: - if (SDL_GetWindowID(main_window) == event->window.windowID) { + if (main_window && SDL_GetWindowID(main_window) == event->window.windowID) { exit(0); } else { for (int i = 0; i < num_textures - FRAMEBUFFER_USER_START; i++) @@ -1305,6 +1312,7 @@ #endif in_toggle = 1; SDL_DestroyWindow(main_window); + main_window = NULL; drain_events(); char *config_width = tern_find_path(config, "video\0width\0", TVAL_PTR).ptrval;