From 3e6f0d7372268545e56ced5515764e1176d95d70 Mon Sep 17 00:00:00 2001 From: Jeffery Myers Date: Mon, 8 Mar 2021 09:08:37 -0800 Subject: [PATCH 1/7] Always try to set vsync. (#1636) Use the internal monitor function to correctly get the display for windows. --- src/core.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/core.c b/src/core.c index 889eae8a0..75b38766d 100644 --- a/src/core.c +++ b/src/core.c @@ -1034,7 +1034,13 @@ void ToggleFullscreen(void) // Store previous window position (in case we exit fullscreen) glfwGetWindowPos(CORE.Window.handle, &CORE.Window.position.x, &CORE.Window.position.y); - GLFWmonitor *monitor = glfwGetWindowMonitor(CORE.Window.handle); + int monitorCount = 0; + GLFWmonitor** monitors = glfwGetMonitors(&monitorCount); + + int monitorIndex = GetCurrentMonitor(); + // use GetCurrentMonitor so we correctly get the display the window is on + GLFWmonitor* monitor = monitorIndex < monitorCount ? monitors[monitorIndex] : NULL; + if (!monitor) { TRACELOG(LOG_WARNING, "GLFW: Failed to get monitor"); @@ -1048,10 +1054,6 @@ void ToggleFullscreen(void) glfwSetWindowSizeCallback(CORE.Window.handle, NULL); glfwSetWindowMonitor(CORE.Window.handle, monitor, 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); - - // Try to enable GPU V-Sync, so frames are limited to screen refresh rate (60Hz -> 60 FPS) - // NOTE: V-Sync can be enabled by graphic driver configuration - if (CORE.Window.flags & FLAG_VSYNC_HINT) glfwSwapInterval(1); } else { @@ -1060,6 +1062,10 @@ void ToggleFullscreen(void) glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); } + // Try to enable GPU V-Sync, so frames are limited to screen refresh rate (60Hz -> 60 FPS) + // NOTE: V-Sync can be enabled by graphic driver configuration + if (CORE.Window.flags & FLAG_VSYNC_HINT) glfwSwapInterval(1); + CORE.Window.fullscreen = !CORE.Window.fullscreen; // Toggle fullscreen flag CORE.Window.flags ^= FLAG_FULLSCREEN_MODE; From 8a30a2408c992774f42b55cd62e651c770b07eea Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 8 Mar 2021 18:48:27 +0100 Subject: [PATCH 2/7] ADDED: Required callbacks Removed memory allocation callbacks --- src/raylib.h | 8 -------- src/utils.c | 27 ++++++--------------------- 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index 5696be2a2..659cbc74a 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -876,11 +876,6 @@ typedef enum { // Callbacks to hook some internal functions // WARNING: This callbacks are intended for advance users typedef void (*TraceLogCallback)(int logType, const char *text, va_list args); // Logging: Redirect trace log messages - -typedef void *(*MemAllocCallback)(int size); // Memory: Custom allocator -typedef void *(*MemReallocCallback)(void *ptr, int size); // Memory: Custom re-allocator -typedef void (*MemFreeCallback)(void *ptr); // Memory: Custom free - typedef unsigned char* (*LoadFileDataCallback)(const char* fileName, unsigned int* bytesRead); // FileIO: Load binary data typedef void (*SaveFileDataCallback)(const char *fileName, void *data, unsigned int bytesToWrite); // FileIO: Save binary data typedef char *(*LoadFileTextCallback)(const char* fileName); // FileIO: Load text data @@ -991,9 +986,6 @@ RLAPI void MemFree(void *ptr); // Internal me // Set custom callbacks // WARNING: Callbacks setup is intended for advance users RLAPI void SetTraceLogCallback(TraceLogCallback callback); // Set custom trace log -RLAPI void SetMemAllocCallback(MemAllocCallback callback); // Set custom memory allocator -RLAPI void SetMemReallocCallback(MemReallocCallback callback); // Set custom memory reallocator -RLAPI void SetMemFreeCallback(MemFreeCallback callback); // Set custom memory free RLAPI void SetLoadFileDataCallback(LoadFileDataCallback callback); // Set custom file binary data loader RLAPI void SetSaveFileDataCallback(SaveFileDataCallback callback); // Set custom file binary data saver RLAPI void SetLoadFileTextCallback(LoadFileTextCallback callback); // Set custom file text data loader diff --git a/src/utils.c b/src/utils.c index 568c6c886..9579346e2 100644 --- a/src/utils.c +++ b/src/utils.c @@ -63,26 +63,18 @@ //---------------------------------------------------------------------------------- // Global Variables Definition //---------------------------------------------------------------------------------- - -// Log types messages static int logTypeLevel = LOG_INFO; // Minimum log type level static TraceLogCallback traceLog = NULL; // TraceLog callback function pointer -static MemAllocCallback memAlloc = NULL; // MemAlloc callback function pointer -static MemReallocCallback memRealloc = NULL; // MemRealloc callback funtion pointer -static MemFreeCallback memFree = NULL; // MemFree callback funtion pointer static LoadFileDataCallback loadFileData = NULL; // LoadFileData callback funtion pointer static SaveFileDataCallback saveFileData = NULL; // SaveFileText callback funtion pointer static LoadFileTextCallback loadFileText = NULL; // LoadFileText callback funtion pointer static SaveFileTextCallback saveFileText = NULL; // SaveFileText callback funtion pointer -//void *MemAllocDefault(unsigned int size) { return RL_MALLOC(size); } -//void MemFreeDefault(void *ptr) { RL_FREE(ptr); } - +//---------------------------------------------------------------------------------- +// Functions to set internal callbacks +//---------------------------------------------------------------------------------- void SetTraceLogCallback(TraceLogCallback callback) { traceLog = callback; } // Set custom trace log -void SetMemAllocCallback(MemAllocCallback callback) { memAlloc = callback; } // Set custom memory allocator -void SetMemReallocCallback(MemReallocCallback callback) { memRealloc = callback; } // Set custom memory reallocator -void SetMemFreeCallback(MemFreeCallback callback) { memFree = callback; } // Set custom memory free void SetLoadFileDataCallback(LoadFileDataCallback callback) { loadFileData = callback; } // Set custom file data loader void SetSaveFileDataCallback(SaveFileDataCallback callback) { saveFileData = callback; } // Set custom file data saver void SetLoadFileTextCallback(LoadFileTextCallback callback) { loadFileText = callback; } // Set custom file text loader @@ -172,28 +164,21 @@ void TraceLog(int logType, const char *text, ...) // NOTE: Initializes to zero by default void *MemAlloc(int size) { - // WARNING: This implementation allows changing memAlloc at any - // point during program execution, it could be a security risk - void *ptr = NULL; - if (memAlloc) ptr = memAlloc(size); - else ptr = RL_CALLOC(size, 1); + void *ptr = RL_CALLOC(size, 1); return ptr; } // Internal memory reallocator void *MemRealloc(void *ptr, int size) { - void *ret = NULL; - if (memRealloc) ret = memRealloc(ptr, size); - else ret = RL_REALLOC(ptr, size); + void *ret = RL_REALLOC(ptr, size); return ret; } // Internal memory free void MemFree(void *ptr) { - if (memFree) memFree(ptr); - else RL_FREE(ptr); + RL_FREE(ptr); } // Load data from file into a buffer From 955d4d3d1a38d5498ac732e2a128a649ec4d5866 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 8 Mar 2021 19:09:22 +0100 Subject: [PATCH 3/7] Create linux_examples.yml --- .github/workflows/linux_examples.yml | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/linux_examples.yml diff --git a/.github/workflows/linux_examples.yml b/.github/workflows/linux_examples.yml new file mode 100644 index 000000000..c268f4796 --- /dev/null +++ b/.github/workflows/linux_examples.yml @@ -0,0 +1,32 @@ +name: Linux Examples + +on: + push: + pull_request: + branches: [ master ] + paths: + - 'examples/**' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Environment + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends libglfw3 libglfw3-dev libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libxext-dev libxfixes-dev + + - name: Build Library + run: | + cd src + make PLATFORM=PLATFORM_DESKTOP CC=gcc RAYLIB_LIBTYPE=STATIC + cd .. + + - name: Build Examples + run: | + cd examples + make PLATFORM=PLATFORM_DESKTOP -B + cd .. From 55bf595cae484e942489e0f8bd48811af9b0bb44 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 8 Mar 2021 19:17:42 +0100 Subject: [PATCH 4/7] Create windows_examples.yml --- .github/workflows/windows_examples.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/windows_examples.yml diff --git a/.github/workflows/windows_examples.yml b/.github/workflows/windows_examples.yml new file mode 100644 index 000000000..b42f8c069 --- /dev/null +++ b/.github/workflows/windows_examples.yml @@ -0,0 +1,26 @@ +name: Windows Examples + +on: + push: + pull_request: + branches: [ master ] + paths: + - 'examples/**' + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v2 + + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v1 + + - name: Build Library (MSVC16) + run: | + cd projects/VS2019 + msbuild.exe raylib.sln /property:Configuration=Release /property:Platform=x86 + cd ../.. + shell: cmd + From 915b0780d68990c1bc861fdfc7759ba10fe946ac Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 8 Mar 2021 19:19:43 +0100 Subject: [PATCH 5/7] Update core_3d_picking.c --- examples/core/core_3d_picking.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/core/core_3d_picking.c b/examples/core/core_3d_picking.c index 01fe2b550..1360f006d 100644 --- a/examples/core/core_3d_picking.c +++ b/examples/core/core_3d_picking.c @@ -90,7 +90,7 @@ int main(void) DrawText("Try selecting the box with mouse!", 240, 10, 20, DARKGRAY); - if(collision) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30)) / 2, (int)(screenHeight * 0.1f), 30, GREEN); + if (collision) DrawText("BOX SELECTED", (screenWidth - MeasureText("BOX SELECTED", 30)) / 2, (int)(screenHeight * 0.1f), 30, GREEN); DrawFPS(10, 10); From 8dc3057fe581c23f418fd3ca71750a567120e911 Mon Sep 17 00:00:00 2001 From: Ray Date: Mon, 8 Mar 2021 19:21:24 +0100 Subject: [PATCH 6/7] Update windows_examples.yml --- .github/workflows/windows_examples.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows_examples.yml b/.github/workflows/windows_examples.yml index b42f8c069..05bc49940 100644 --- a/.github/workflows/windows_examples.yml +++ b/.github/workflows/windows_examples.yml @@ -3,7 +3,7 @@ name: Windows Examples on: push: pull_request: - branches: [ master ] + branches: [ master ] paths: - 'examples/**' From 19651cfaad679e89329d252511b2516ad5146b31 Mon Sep 17 00:00:00 2001 From: Kirottu <56396750+Kirottu@users.noreply.github.com> Date: Mon, 8 Mar 2021 23:12:27 +0200 Subject: [PATCH 7/7] Added SUPPORT_STANDARD_FILEIO flag support for the CMake build system (#1638) * Update CMakeOptions.txt * Update config.h.in * Added SUPPORT_STANDARD_FILEIO to CMakeOptions.txt * Fixed typo * Added SUPPORT_STANDARD_FILEIO to CompileDefinitions.cmake Co-authored-by: KirottuM --- CMakeOptions.txt | 1 + cmake/CompileDefinitions.cmake | 1 + 2 files changed, 2 insertions(+) diff --git a/CMakeOptions.txt b/CMakeOptions.txt index d60ca2b79..ebdba0c9b 100644 --- a/CMakeOptions.txt +++ b/CMakeOptions.txt @@ -86,4 +86,5 @@ cmake_dependent_option(SUPPORT_FILEFORMAT_MP3 "Support loading MP3 for sound" O cmake_dependent_option(SUPPORT_FILEFORMAT_FLAC "Support loading FLAC for sound" ${OFF} CUSTOMIZE_BUILD OFF) # utils.c +cmake_dependent_option(SUPPORT_STANDARD_FILEIO "Support standard file io library (stdio.h)" ON CUSTOMIZE_BUILD ON) cmake_dependent_option(SUPPORT_TRACELOG "Show TraceLog() output messages. NOTE: By default LOG_DEBUG traces not shown" ON CUSTOMIZE_BUILD ON) diff --git a/cmake/CompileDefinitions.cmake b/cmake/CompileDefinitions.cmake index b07503c16..36062b309 100644 --- a/cmake/CompileDefinitions.cmake +++ b/cmake/CompileDefinitions.cmake @@ -54,6 +54,7 @@ if (${CUSTOMIZE_BUILD}) define_if("raylib" SUPPORT_FILEFORMAT_MOD) define_if("raylib" SUPPORT_FILEFORMAT_FLAC) define_if("raylib" SUPPORT_FILEFORMAT_MP3) + define_if("raylib" SUPPORT_STANDARD_FILEIO) define_if("raylib" SUPPORT_TRACELOG) define_if("raylib" SUPPORT_COMPRESSION_API)