diff options
| author | Ray <raysan5@gmail.com> | 2018-02-04 11:55:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-02-04 11:55:18 +0100 |
| commit | e2861fa71ffb4d5145369939c03d19f4a2945d95 (patch) | |
| tree | e68dcda404d03c8ebb7e4ee3ca73a01f9aee492c | |
| parent | 44cd4faf83666d545d6a9424128c5926e5cfdcef (diff) | |
| parent | 26c9176a1422125d062185b9fe9ce3c8777d87db (diff) | |
| download | raylib-e2861fa71ffb4d5145369939c03d19f4a2945d95.tar.gz raylib-e2861fa71ffb4d5145369939c03d19f4a2945d95.zip | |
Merge pull request #456 from a3f/develop
Return false from InitWindow if glfwInit or glfwCreateWindow fails -TO REVIEW AS DISCUSSED-
| -rw-r--r-- | src/core.c | 23 | ||||
| -rw-r--r-- | src/raylib.h | 2 |
2 files changed, 17 insertions, 8 deletions
@@ -362,7 +362,7 @@ extern void UnloadDefaultFont(void); // [Module: text] Unloads default fo //---------------------------------------------------------------------------------- // Module specific Functions Declaration //---------------------------------------------------------------------------------- -static void InitGraphicsDevice(int width, int height); // Initialize graphics device +static bool InitGraphicsDevice(int width, int height); // Initialize graphics device static void SetupFramebufferSize(int displayWidth, int displayHeight); static void InitTimer(void); // Initialize timer static void Wait(float ms); // Wait for some milliseconds (stop program execution) @@ -429,7 +429,7 @@ static void *GamepadThread(void *arg); // Mouse reading thread #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_RPI) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP) // Initialize window and OpenGL context // NOTE: data parameter could be used to pass any kind of required data to the initialization -void InitWindow(int width, int height, void *data) +bool InitWindow(int width, int height, void *data) { TraceLog(LOG_INFO, "Initializing raylib (v1.9-dev)"); @@ -442,7 +442,8 @@ void InitWindow(int width, int height, void *data) #endif // Init graphics device (display device and OpenGL context) - InitGraphicsDevice(width, height); + if (!InitGraphicsDevice(width, height)) + return false; // Init hi-res timer InitTimer(); @@ -492,13 +493,14 @@ void InitWindow(int width, int height, void *data) SetTargetFPS(60); LogoAnimation(); } + return true; } #endif #if defined(PLATFORM_ANDROID) // Initialize window and OpenGL context (and Android activity) // NOTE: data parameter could be used to pass any kind of required data to the initialization -void InitWindow(int width, int height, void *data) +bool InitWindow(int width, int height, void *data) { TraceLog(LOG_INFO, "Initializing raylib (v1.9-dev)"); @@ -555,6 +557,7 @@ void InitWindow(int width, int height, void *data) //if (app->destroyRequested != 0) windowShouldClose = true; } } + return true; } #endif @@ -1697,7 +1700,7 @@ Vector2 GetTouchPosition(int index) // Initialize display device and framebuffer // NOTE: width and height represent the screen (framebuffer) desired size, not actual display size // If width or height are 0, default display size will be used for framebuffer size -static void InitGraphicsDevice(int width, int height) +static bool InitGraphicsDevice(int width, int height) { screenWidth = width; // User desired width screenHeight = height; // User desired height @@ -1711,7 +1714,11 @@ static void InitGraphicsDevice(int width, int height) #if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) glfwSetErrorCallback(ErrorCallback); - if (!glfwInit()) TraceLog(LOG_ERROR, "Failed to initialize GLFW"); + if (!glfwInit()) + { + TraceLog(LOG_WARNING, "Failed to initialize GLFW"); + return false; + } // NOTE: Getting video modes is not implemented in emscripten GLFW3 version #if defined(PLATFORM_DESKTOP) @@ -1842,7 +1849,8 @@ static void InitGraphicsDevice(int width, int height) if (!window) { glfwTerminate(); - TraceLog(LOG_ERROR, "GLFW Failed to initialize Window"); + TraceLog(LOG_WARNING, "GLFW Failed to initialize Window"); + return false; } else { @@ -2199,6 +2207,7 @@ static void InitGraphicsDevice(int width, int height) #if defined(PLATFORM_ANDROID) windowReady = true; // IMPORTANT! #endif + return true; } // Set viewport parameters diff --git a/src/raylib.h b/src/raylib.h index f881dc68..0aa5ccae 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -684,7 +684,7 @@ extern "C" { // Prevents name mangling of functions //------------------------------------------------------------------------------------ // Window-related functions -RLAPI void InitWindow(int width, int height, void *data); // Initialize window and OpenGL context +RLAPI bool InitWindow(int width, int height, void *data); // Initialize window and OpenGL context RLAPI void CloseWindow(void); // Close window and unload OpenGL context RLAPI bool WindowShouldClose(void); // Check if KEY_ESCAPE pressed or Close icon pressed RLAPI bool IsWindowMinimized(void); // Check if window has been minimized (or lost focus) |
