|
@@ -1416,16 +1416,25 @@ typedef struct GLFWcursor GLFWcursor;
|
|
* or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
|
|
* or `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
|
|
* failures gracefully yet.
|
|
* failures gracefully yet.
|
|
*
|
|
*
|
|
- * This function may be called during @ref glfwInit but before the library is
|
|
|
|
- * flagged as initialized, as well as during @ref glfwTerminate after the
|
|
|
|
- * library is no longer flagged as initialized.
|
|
|
|
|
|
+ * This function must support being called during @ref glfwInit but before the library is
|
|
|
|
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
|
|
|
|
+ * longer flagged as initialized.
|
|
*
|
|
*
|
|
- * Any memory allocated by this function will be deallocated during library
|
|
|
|
- * termination or earlier.
|
|
|
|
|
|
+ * Any memory allocated via this function will be deallocated via the same allocator
|
|
|
|
+ * during library termination or earlier.
|
|
|
|
+ *
|
|
|
|
+ * Any memory allocated via this function must be suitably aligned for any object type.
|
|
|
|
+ * If you are using C99 or earlier, this alignment is platform-dependent but will be the
|
|
|
|
+ * same as what `malloc` provides. If you are using C11 or later, this is the value of
|
|
|
|
+ * `alignof(max_align_t)`.
|
|
*
|
|
*
|
|
* The size will always be greater than zero. Allocations of size zero are filtered out
|
|
* The size will always be greater than zero. Allocations of size zero are filtered out
|
|
* before reaching the custom allocator.
|
|
* before reaching the custom allocator.
|
|
*
|
|
*
|
|
|
|
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
|
|
|
|
+ *
|
|
|
|
+ * This function must not call any GLFW function.
|
|
|
|
+ *
|
|
* @param[in] size The minimum size, in bytes, of the memory block.
|
|
* @param[in] size The minimum size, in bytes, of the memory block.
|
|
* @param[in] user The user-defined pointer from the allocator.
|
|
* @param[in] user The user-defined pointer from the allocator.
|
|
* @return The address of the newly allocated memory block, or `NULL` if an
|
|
* @return The address of the newly allocated memory block, or `NULL` if an
|
|
@@ -1436,7 +1445,8 @@ typedef struct GLFWcursor GLFWcursor;
|
|
*
|
|
*
|
|
* @reentrancy This function should not call any GLFW function.
|
|
* @reentrancy This function should not call any GLFW function.
|
|
*
|
|
*
|
|
- * @thread_safety This function may be called from any thread that calls GLFW functions.
|
|
|
|
|
|
+ * @thread_safety This function must support being called from any thread that calls GLFW
|
|
|
|
+ * functions.
|
|
*
|
|
*
|
|
* @sa @ref init_allocator
|
|
* @sa @ref init_allocator
|
|
* @sa @ref GLFWallocator
|
|
* @sa @ref GLFWallocator
|
|
@@ -1459,16 +1469,26 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
|
|
* `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
|
|
* `NULL` if allocation failed. Note that not all parts of GLFW handle allocation
|
|
* failures gracefully yet.
|
|
* failures gracefully yet.
|
|
*
|
|
*
|
|
- * This function may be called during @ref glfwInit but before the library is
|
|
|
|
- * flagged as initialized, as well as during @ref glfwTerminate after the
|
|
|
|
- * library is no longer flagged as initialized.
|
|
|
|
|
|
+ * This function must support being called during @ref glfwInit but before the library is
|
|
|
|
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
|
|
|
|
+ * longer flagged as initialized.
|
|
|
|
+ *
|
|
|
|
+ * Any memory allocated via this function will be deallocated via the same allocator
|
|
|
|
+ * during library termination or earlier.
|
|
*
|
|
*
|
|
- * Any memory allocated by this function will be deallocated during library
|
|
|
|
- * termination or earlier.
|
|
|
|
|
|
+ * Any memory allocated via this function must be suitably aligned for any object type.
|
|
|
|
+ * If you are using C99 or earlier, this alignment is platform-dependent but will be the
|
|
|
|
+ * same as what `realloc` provides. If you are using C11 or later, this is the value of
|
|
|
|
+ * `alignof(max_align_t)`.
|
|
*
|
|
*
|
|
* The block address will never be `NULL` and the size will always be greater than zero.
|
|
* The block address will never be `NULL` and the size will always be greater than zero.
|
|
- * Reallocations of a block to size zero are converted into deallocations. Reallocations
|
|
|
|
- * of `NULL` to a non-zero size are converted into regular allocations.
|
|
|
|
|
|
+ * Reallocations of a block to size zero are converted into deallocations before reaching
|
|
|
|
+ * the custom allocator. Reallocations of `NULL` to a non-zero size are converted into
|
|
|
|
+ * regular allocations before reaching the custom allocator.
|
|
|
|
+ *
|
|
|
|
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
|
|
|
|
+ *
|
|
|
|
+ * This function must not call any GLFW function.
|
|
*
|
|
*
|
|
* @param[in] block The address of the memory block to reallocate.
|
|
* @param[in] block The address of the memory block to reallocate.
|
|
* @param[in] size The new minimum size, in bytes, of the memory block.
|
|
* @param[in] size The new minimum size, in bytes, of the memory block.
|
|
@@ -1481,7 +1501,8 @@ typedef void* (* GLFWallocatefun)(size_t size, void* user);
|
|
*
|
|
*
|
|
* @reentrancy This function should not call any GLFW function.
|
|
* @reentrancy This function should not call any GLFW function.
|
|
*
|
|
*
|
|
- * @thread_safety This function may be called from any thread that calls GLFW functions.
|
|
|
|
|
|
+ * @thread_safety This function must support being called from any thread that calls GLFW
|
|
|
|
+ * functions.
|
|
*
|
|
*
|
|
* @sa @ref init_allocator
|
|
* @sa @ref init_allocator
|
|
* @sa @ref GLFWallocator
|
|
* @sa @ref GLFWallocator
|
|
@@ -1503,13 +1524,17 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
|
|
* This function may deallocate the specified memory block. This memory block
|
|
* This function may deallocate the specified memory block. This memory block
|
|
* will have been allocated with the same allocator.
|
|
* will have been allocated with the same allocator.
|
|
*
|
|
*
|
|
- * This function may be called during @ref glfwInit but before the library is
|
|
|
|
- * flagged as initialized, as well as during @ref glfwTerminate after the
|
|
|
|
- * library is no longer flagged as initialized.
|
|
|
|
|
|
+ * This function must support being called during @ref glfwInit but before the library is
|
|
|
|
+ * flagged as initialized, as well as during @ref glfwTerminate after the library is no
|
|
|
|
+ * longer flagged as initialized.
|
|
*
|
|
*
|
|
* The block address will never be `NULL`. Deallocations of `NULL` are filtered out
|
|
* The block address will never be `NULL`. Deallocations of `NULL` are filtered out
|
|
* before reaching the custom allocator.
|
|
* before reaching the custom allocator.
|
|
*
|
|
*
|
|
|
|
+ * If this function returns `NULL`, GLFW will emit @ref GLFW_OUT_OF_MEMORY.
|
|
|
|
+ *
|
|
|
|
+ * This function must not call any GLFW function.
|
|
|
|
+ *
|
|
* @param[in] block The address of the memory block to deallocate.
|
|
* @param[in] block The address of the memory block to deallocate.
|
|
* @param[in] user The user-defined pointer from the allocator.
|
|
* @param[in] user The user-defined pointer from the allocator.
|
|
*
|
|
*
|
|
@@ -1518,7 +1543,8 @@ typedef void* (* GLFWreallocatefun)(void* block, size_t size, void* user);
|
|
*
|
|
*
|
|
* @reentrancy This function should not call any GLFW function.
|
|
* @reentrancy This function should not call any GLFW function.
|
|
*
|
|
*
|
|
- * @thread_safety This function may be called from any thread that calls GLFW functions.
|
|
|
|
|
|
+ * @thread_safety This function must support being called from any thread that calls GLFW
|
|
|
|
+ * functions.
|
|
*
|
|
*
|
|
* @sa @ref init_allocator
|
|
* @sa @ref init_allocator
|
|
* @sa @ref GLFWallocator
|
|
* @sa @ref GLFWallocator
|
|
@@ -2086,7 +2112,10 @@ typedef struct GLFWgamepadstate
|
|
float axes[6];
|
|
float axes[6];
|
|
} GLFWgamepadstate;
|
|
} GLFWgamepadstate;
|
|
|
|
|
|
-/*! @brief
|
|
|
|
|
|
+/*! @brief Custom heap memory allocator.
|
|
|
|
+ *
|
|
|
|
+ * This describes a custom heap memory allocator for GLFW. To set an allocator, pass it
|
|
|
|
+ * to @ref glfwInitAllocator before initializing the library.
|
|
*
|
|
*
|
|
* @sa @ref init_allocator
|
|
* @sa @ref init_allocator
|
|
* @sa @ref glfwInitAllocator
|
|
* @sa @ref glfwInitAllocator
|
|
@@ -2097,9 +2126,21 @@ typedef struct GLFWgamepadstate
|
|
*/
|
|
*/
|
|
typedef struct GLFWallocator
|
|
typedef struct GLFWallocator
|
|
{
|
|
{
|
|
|
|
+ /*! The memory allocation function. See @ref GLFWallocatefun for details about
|
|
|
|
+ * allocation function.
|
|
|
|
+ */
|
|
GLFWallocatefun allocate;
|
|
GLFWallocatefun allocate;
|
|
|
|
+ /*! The memory reallocation function. See @ref GLFWreallocatefun for details about
|
|
|
|
+ * reallocation function.
|
|
|
|
+ */
|
|
GLFWreallocatefun reallocate;
|
|
GLFWreallocatefun reallocate;
|
|
|
|
+ /*! The memory deallocation function. See @ref GLFWdeallocatefun for details about
|
|
|
|
+ * deallocation function.
|
|
|
|
+ */
|
|
GLFWdeallocatefun deallocate;
|
|
GLFWdeallocatefun deallocate;
|
|
|
|
+ /*! The user pointer for this custom allocator. This value will be passed to the
|
|
|
|
+ * allocator functions.
|
|
|
|
+ */
|
|
void* user;
|
|
void* user;
|
|
} GLFWallocator;
|
|
} GLFWallocator;
|
|
|
|
|
|
@@ -2232,8 +2273,12 @@ GLFWAPI void glfwInitHint(int hint, int value);
|
|
* To use the default allocator, call this function with a `NULL` argument.
|
|
* To use the default allocator, call this function with a `NULL` argument.
|
|
*
|
|
*
|
|
* If you specify an allocator struct, every member must be a valid function
|
|
* If you specify an allocator struct, every member must be a valid function
|
|
- * pointer. If any member is `NULL`, this function emits @ref
|
|
|
|
- * GLFW_INVALID_VALUE and the init allocator is unchanged.
|
|
|
|
|
|
+ * pointer. If any member is `NULL`, this function will emit @ref
|
|
|
|
+ * GLFW_INVALID_VALUE and the init allocator will be unchanged.
|
|
|
|
+ *
|
|
|
|
+ * The functions in the allocator must fulfil a number of requirements. See the
|
|
|
|
+ * documentation for @ref GLFWallocatefun, @ref GLFWreallocatefun and @ref
|
|
|
|
+ * GLFWdeallocatefun for details.
|
|
*
|
|
*
|
|
* @param[in] allocator The allocator to use at the next initialization, or
|
|
* @param[in] allocator The allocator to use at the next initialization, or
|
|
* `NULL` to use the default one.
|
|
* `NULL` to use the default one.
|