summaryrefslogtreecommitdiffhomepage
path: root/src/rcore_desktop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rcore_desktop.c')
-rw-r--r--src/rcore_desktop.c161
1 files changed, 9 insertions, 152 deletions
diff --git a/src/rcore_desktop.c b/src/rcore_desktop.c
index 4039bbd8..29969d4c 100644
--- a/src/rcore_desktop.c
+++ b/src/rcore_desktop.c
@@ -142,162 +142,11 @@ static void JoystickCallback(int jid, int event);
// Module Functions Definition: Window and Graphics Device
//----------------------------------------------------------------------------------
-// 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, const char *title)
-{
- TRACELOG(LOG_INFO, "Initializing raylib %s", RAYLIB_VERSION);
-
- TRACELOG(LOG_INFO, "Supported raylib modules:");
- TRACELOG(LOG_INFO, " > rcore:..... loaded (mandatory)");
- TRACELOG(LOG_INFO, " > rlgl:...... loaded (mandatory)");
-#if defined(SUPPORT_MODULE_RSHAPES)
- TRACELOG(LOG_INFO, " > rshapes:... loaded (optional)");
-#else
- TRACELOG(LOG_INFO, " > rshapes:... not loaded (optional)");
-#endif
-#if defined(SUPPORT_MODULE_RTEXTURES)
- TRACELOG(LOG_INFO, " > rtextures:. loaded (optional)");
-#else
- TRACELOG(LOG_INFO, " > rtextures:. not loaded (optional)");
-#endif
-#if defined(SUPPORT_MODULE_RTEXT)
- TRACELOG(LOG_INFO, " > rtext:..... loaded (optional)");
-#else
- TRACELOG(LOG_INFO, " > rtext:..... not loaded (optional)");
-#endif
-#if defined(SUPPORT_MODULE_RMODELS)
- TRACELOG(LOG_INFO, " > rmodels:... loaded (optional)");
-#else
- TRACELOG(LOG_INFO, " > rmodels:... not loaded (optional)");
-#endif
-#if defined(SUPPORT_MODULE_RAUDIO)
- TRACELOG(LOG_INFO, " > raudio:.... loaded (optional)");
-#else
- TRACELOG(LOG_INFO, " > raudio:.... not loaded (optional)");
-#endif
-
- // Initialize window data
- CORE.Window.screen.width = width;
- CORE.Window.screen.height = height;
- CORE.Window.eventWaiting = false;
- CORE.Window.screenScale = MatrixIdentity(); // No draw scaling required by default
- if ((title != NULL) && (title[0] != 0)) CORE.Window.title = title;
-
- // Initialize global input state
- memset(&CORE.Input, 0, sizeof(CORE.Input)); // Reset CORE.Input structure to 0
- CORE.Input.Keyboard.exitKey = KEY_ESCAPE;
- CORE.Input.Mouse.scale = (Vector2){ 1.0f, 1.0f };
- CORE.Input.Mouse.cursor = MOUSE_CURSOR_ARROW;
- CORE.Input.Gamepad.lastButtonPressed = GAMEPAD_BUTTON_UNKNOWN;
-
- // Initialize platform
- //--------------------------------------------------------------
- InitPlatform();
- //--------------------------------------------------------------
-
- // Initialize rlgl default data (buffers and shaders)
- // NOTE: CORE.Window.currentFbo.width and CORE.Window.currentFbo.height not used, just stored as globals in rlgl
- rlglInit(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height);
-
- // Setup default viewport
- SetupViewport(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height);
-
-#if defined(SUPPORT_MODULE_RTEXT) && defined(SUPPORT_DEFAULT_FONT)
- // Load default font
- // WARNING: External function: Module required: rtext
- LoadFontDefault();
- #if defined(SUPPORT_MODULE_RSHAPES)
- // Set font white rectangle for shapes drawing, so shapes and text can be batched together
- // WARNING: rshapes module is required, if not available, default internal white rectangle is used
- Rectangle rec = GetFontDefault().recs[95];
- if (CORE.Window.flags & FLAG_MSAA_4X_HINT)
- {
- // NOTE: We try to maxime rec padding to avoid pixel bleeding on MSAA filtering
- SetShapesTexture(GetFontDefault().texture, (Rectangle){ rec.x + 2, rec.y + 2, 1, 1 });
- }
- else
- {
- // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding
- SetShapesTexture(GetFontDefault().texture, (Rectangle){ rec.x + 1, rec.y + 1, rec.width - 2, rec.height - 2 });
- }
- #endif
-#else
- #if defined(SUPPORT_MODULE_RSHAPES)
- // Set default texture and rectangle to be used for shapes drawing
- // NOTE: rlgl default texture is a 1x1 pixel UNCOMPRESSED_R8G8B8A8
- Texture2D texture = { rlGetTextureIdDefault(), 1, 1, 1, PIXELFORMAT_UNCOMPRESSED_R8G8B8A8 };
- SetShapesTexture(texture, (Rectangle){ 0.0f, 0.0f, 1.0f, 1.0f }); // WARNING: Module required: rshapes
- #endif
-#endif
-#if defined(SUPPORT_MODULE_RTEXT) && defined(SUPPORT_DEFAULT_FONT)
- if ((CORE.Window.flags & FLAG_WINDOW_HIGHDPI) > 0)
- {
- // Set default font texture filter for HighDPI (blurry)
- // RL_TEXTURE_FILTER_LINEAR - tex filter: BILINEAR, no mipmaps
- rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MIN_FILTER, RL_TEXTURE_FILTER_LINEAR);
- rlTextureParameters(GetFontDefault().texture.id, RL_TEXTURE_MAG_FILTER, RL_TEXTURE_FILTER_LINEAR);
- }
-#endif
-
-#if defined(SUPPORT_EVENTS_AUTOMATION)
- events = (AutomationEvent *)RL_CALLOC(MAX_CODE_AUTOMATION_EVENTS, sizeof(AutomationEvent));
- CORE.Time.frameCounter = 0;
-#endif
-
- // Initialize random seed
- SetRandomSeed((unsigned int)time(NULL));
-
- TRACELOG(LOG_INFO, "PLATFORM: DESKTOP: Application initialized successfully");
-}
-
-// Close window and unload OpenGL context
-void CloseWindow(void)
-{
-#if defined(SUPPORT_GIF_RECORDING)
- if (gifRecording)
- {
- MsfGifResult result = msf_gif_end(&gifState);
- msf_gif_free(result);
- gifRecording = false;
- }
-#endif
-
-#if defined(SUPPORT_MODULE_RTEXT) && defined(SUPPORT_DEFAULT_FONT)
- UnloadFontDefault(); // WARNING: Module required: rtext
-#endif
-
- rlglClose(); // De-init rlgl
-
- // De-initialize platform
- //--------------------------------------------------------------
- ClosePlatform();
- //--------------------------------------------------------------
-
-#if defined(SUPPORT_EVENTS_AUTOMATION)
- RL_FREE(events);
-#endif
-
- CORE.Window.ready = false;
- TRACELOG(LOG_INFO, "Window closed successfully");
-}
-
// Check if application should close
// NOTE: By default, if KEY_ESCAPE pressed or window close icon clicked
bool WindowShouldClose(void)
{
- if (CORE.Window.ready)
- {
- // While window minimized, stop loop execution
- while (IsWindowState(FLAG_WINDOW_MINIMIZED) && !IsWindowState(FLAG_WINDOW_ALWAYS_RUN)) glfwWaitEvents();
-
- CORE.Window.shouldClose = glfwWindowShouldClose(platform.handle);
-
- // Reset close status for next frame
- glfwSetWindowShouldClose(platform.handle, GLFW_FALSE);
-
- return CORE.Window.shouldClose;
- }
+ if (CORE.Window.ready) return CORE.Window.shouldClose;
else return true;
}
@@ -1349,6 +1198,14 @@ void PollInputEvents(void)
if (CORE.Window.eventWaiting) glfwWaitEvents(); // Wait for in input events before continue (drawing is paused)
else glfwPollEvents(); // Poll input events: keyboard/mouse/window events (callbacks)
+
+ // While window minimized, stop loop execution
+ while (IsWindowState(FLAG_WINDOW_MINIMIZED) && !IsWindowState(FLAG_WINDOW_ALWAYS_RUN)) glfwWaitEvents();
+
+ CORE.Window.shouldClose = glfwWindowShouldClose(platform.handle);
+
+ // Reset close status for next frame
+ glfwSetWindowShouldClose(platform.handle, GLFW_FALSE);
}