Mercurial > repos > blastem
changeset 1820:70a1304b432b
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
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 31 Mar 2019 14:53:29 -0700 |
parents | 4fb9af0c65b6 |
children | 4f3443ecb6d6 8500bd987dda |
files | render_sdl.c |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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;