ref: e3db7749baa82dba4ea4596b5df90301d6dd5a71
parent: 49d32a98c552e24343aa91fe4ce29b530a4d2828
author: Clownacy <Clownacy@users.noreply.github.com>
date: Sat Feb 1 07:22:44 EST 2020
Add verbose error-reporting to backends Should fix #98
--- a/src/Backends/Audio/SDL2.cpp
+++ b/src/Backends/Audio/SDL2.cpp
@@ -163,7 +163,10 @@
BOOL AudioBackend_Init(void)
{
if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0)
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDL2 audio backend)", "'SDL_InitSubSystem(SDL_INIT_AUDIO)' failed", NULL);
return FALSE;
+ }
#ifndef NDEBUG
puts("Available SDL2 audio drivers:");
@@ -185,7 +188,10 @@
output_frequency = obtained_specification.freq;
if (device_id == 0)
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDL2 audio backend)", "'SDL_OpenAudioDevice' failed", NULL);
return FALSE;
+ }
SDL_PauseAudioDevice(device_id, 0);
--- a/src/Backends/Rendering/OpenGL3.cpp
+++ b/src/Backends/Rendering/OpenGL3.cpp
@@ -310,7 +310,7 @@
{
char buffer[0x200];
glGetShaderInfoLog(vertex_shader, sizeof(buffer), NULL, buffer);
- printf("Vertex shader: %s", buffer);
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Vertex shader error", buffer, window);
return 0;
}
@@ -325,7 +325,7 @@
{
char buffer[0x200];
glGetShaderInfoLog(fragment_shader, sizeof(buffer), NULL, buffer);
- printf("Fragment shader: %s", buffer);
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fragment shader error", buffer, window);
return 0;
}
@@ -341,7 +341,7 @@
{
char buffer[0x200];
glGetProgramInfoLog(program_id, sizeof(buffer), NULL, buffer);
- printf("Shader linker: %s", buffer);
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Shader linker error", buffer, window);
return 0;
}
@@ -455,13 +455,11 @@
{
#ifndef USE_OPENGLES2
if (gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress))
- #endif
{
- #ifndef USE_OPENGLES2
// Check if the platform supports OpenGL 3.2
if (GLAD_GL_VERSION_3_2)
- #endif
{
+ #endif
#ifndef NDEBUG
printf("GL_VENDOR = %s\n", glGetString(GL_VENDOR));
printf("GL_RENDERER = %s\n", glGetString(GL_RENDERER));
@@ -552,14 +550,36 @@
#ifndef USE_OPENGLES2
glDeleteVertexArrays(1, &vertex_array_id);
#endif
+ #ifndef USE_OPENGLES2
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Your system does not support OpenGL 3.2", window);
+ }
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not load OpenGL functions", window);
+ }
+ #endif
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "SDL_GL_MakeCurrent failed", window);
+ }
SDL_GL_DeleteContext(context);
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not create OpenGL context", window);
+ }
SDL_DestroyWindow(window);
+ }
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (OpenGL rendering backend)", "Could not create window", NULL);
}
return NULL;
--- a/src/Backends/Rendering/SDLSurface.cpp
+++ b/src/Backends/Rendering/SDLSurface.cpp
@@ -62,8 +62,14 @@
if (framebuffer.sdlsurface != NULL)
return &framebuffer;
+ else
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLSurface rendering backend)", "Could not create framebuffer surface", window);
SDL_DestroyWindow(window);
+ }
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLSurface rendering backend)", "Could not create window", NULL);
}
return NULL;
--- a/src/Backends/Rendering/SDLTexture.cpp
+++ b/src/Backends/Rendering/SDLTexture.cpp
@@ -110,11 +110,24 @@
return &framebuffer;
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create framebuffer", window);
+ }
SDL_DestroyRenderer(renderer);
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create renderer", window);
+ }
+
SDL_DestroyWindow(window);
+ }
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (SDLTexture rendering backend)", "Could not create window", NULL);
}
return NULL;
--- a/src/Backends/Rendering/Software.cpp
+++ b/src/Backends/Rendering/Software.cpp
@@ -65,8 +65,16 @@
return &framebuffer;
}
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (software rendering backend)", "Could not create framebuffer surface", window);
+ }
SDL_DestroyWindow(window);
+ }
+ else
+ {
+ SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Fatal error (software rendering backend)", "Could not create window", NULL);
}
return NULL;
--
⑨