aboutsummaryrefslogtreecommitdiff
path: root/3rdparty/glfw/source/tests/allocator.c
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2025-08-16 11:23:49 -0700
committerrtk0c <[email protected]>2025-08-16 11:23:49 -0700
commit047f294de1b4d385b811ac9f5afc393d81cc4ae9 (patch)
treef96100a813a4ffb28dcd074455d3a2f8ee426430 /3rdparty/glfw/source/tests/allocator.c
parent488fb8b4b9da7f99a5cc37e39fff9f1cb700f2a8 (diff)
Copy changes from the no-history fork, generated back in 2023
Original commit message: > commit f138311d2d2e0cc9ba0496d523bb46f2c1c9fb73 > Author: rtk0c <[email protected]> > Date: Wed Sep 20 23:58:58 2023 -0700 > > Copy from the PlasticSCM repo, replace vendored glm wtih conan In reality, this also introduced a few uncommitted changes in the original PlasticSCM repo. See the modified and new files in this patch.
Diffstat (limited to '3rdparty/glfw/source/tests/allocator.c')
-rw-r--r--3rdparty/glfw/source/tests/allocator.c142
1 files changed, 0 insertions, 142 deletions
diff --git a/3rdparty/glfw/source/tests/allocator.c b/3rdparty/glfw/source/tests/allocator.c
deleted file mode 100644
index 3fb004d..0000000
--- a/3rdparty/glfw/source/tests/allocator.c
+++ /dev/null
@@ -1,142 +0,0 @@
-//========================================================================
-// Custom heap allocator test
-// Copyright (c) Camilla Löwy <[email protected]>
-//
-// This software is provided 'as-is', without any express or implied
-// warranty. In no event will the authors be held liable for any damages
-// arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it
-// freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not
-// claim that you wrote the original software. If you use this software
-// in a product, an acknowledgment in the product documentation would
-// be appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not
-// be misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source
-// distribution.
-//
-//========================================================================
-
-#define GLAD_GL_IMPLEMENTATION
-#include <glad/gl.h>
-#define GLFW_INCLUDE_NONE
-#include <GLFW/glfw3.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#define CALL(x) (function_name = #x, x)
-static const char* function_name = NULL;
-
-struct allocator_stats
-{
- size_t total;
- size_t current;
- size_t maximum;
-};
-
-static void error_callback(int error, const char* description)
-{
- fprintf(stderr, "Error: %s\n", description);
-}
-
-static void* allocate(size_t size, void* user)
-{
- struct allocator_stats* stats = user;
- assert(size > 0);
-
- stats->total += size;
- stats->current += size;
- if (stats->current > stats->maximum)
- stats->maximum = stats->current;
-
- printf("%s: allocate %zu bytes (current %zu maximum %zu total %zu)\n",
- function_name, size, stats->current, stats->maximum, stats->total);
-
- size_t* real_block = malloc(size + sizeof(size_t));
- assert(real_block != NULL);
- *real_block = size;
- return real_block + 1;
-}
-
-static void deallocate(void* block, void* user)
-{
- struct allocator_stats* stats = user;
- assert(block != NULL);
-
- size_t* real_block = (size_t*) block - 1;
- stats->current -= *real_block;
-
- printf("%s: deallocate %zu bytes (current %zu maximum %zu total %zu)\n",
- function_name, *real_block, stats->current, stats->maximum, stats->total);
-
- free(real_block);
-}
-
-static void* reallocate(void* block, size_t size, void* user)
-{
- struct allocator_stats* stats = user;
- assert(block != NULL);
- assert(size > 0);
-
- size_t* real_block = (size_t*) block - 1;
- stats->total += size;
- stats->current += size - *real_block;
- if (stats->current > stats->maximum)
- stats->maximum = stats->current;
-
- printf("%s: reallocate %zu bytes to %zu bytes (current %zu maximum %zu total %zu)\n",
- function_name, *real_block, size, stats->current, stats->maximum, stats->total);
-
- real_block = realloc(real_block, size + sizeof(size_t));
- assert(real_block != NULL);
- *real_block = size;
- return real_block + 1;
-}
-
-int main(void)
-{
- struct allocator_stats stats = {0};
- const GLFWallocator allocator =
- {
- .allocate = allocate,
- .deallocate = deallocate,
- .reallocate = reallocate,
- .user = &stats
- };
-
- glfwSetErrorCallback(error_callback);
- glfwInitAllocator(&allocator);
-
- if (!CALL(glfwInit)())
- exit(EXIT_FAILURE);
-
- GLFWwindow* window = CALL(glfwCreateWindow)(400, 400, "Custom allocator test", NULL, NULL);
- if (!window)
- {
- glfwTerminate();
- exit(EXIT_FAILURE);
- }
-
- CALL(glfwMakeContextCurrent)(window);
- gladLoadGL(glfwGetProcAddress);
- CALL(glfwSwapInterval)(1);
-
- while (!CALL(glfwWindowShouldClose)(window))
- {
- glClear(GL_COLOR_BUFFER_BIT);
- CALL(glfwSwapBuffers)(window);
- CALL(glfwWaitEvents)();
- }
-
- CALL(glfwTerminate)();
- exit(EXIT_SUCCESS);
-}
-