mirror of
https://github.com/nicbarker/clay.git
synced 2025-04-19 04:38:01 +00:00
Add workaround for modifying max element counts before initial context creation
This commit is contained in:
parent
24501f5380
commit
7f7dd08dd7
18
clay.h
18
clay.h
@ -566,6 +566,9 @@ extern uint32_t Clay__debugViewWidth;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Clay_Context *Clay__currentContext;
|
Clay_Context *Clay__currentContext;
|
||||||
|
int32_t Clay__defaultMaxElementCount = 8192;
|
||||||
|
int32_t Clay__defaultMaxMeasureTextWordCacheCount = 16384;
|
||||||
|
|
||||||
void Clay__ErrorHandlerFunctionDefault(Clay_ErrorData errorText) {
|
void Clay__ErrorHandlerFunctionDefault(Clay_ErrorData errorText) {
|
||||||
(void) errorText;
|
(void) errorText;
|
||||||
}
|
}
|
||||||
@ -3580,8 +3583,8 @@ bool Clay__Array_AddCapacityCheck(int32_t length, int32_t capacity)
|
|||||||
CLAY_WASM_EXPORT("Clay_MinMemorySize")
|
CLAY_WASM_EXPORT("Clay_MinMemorySize")
|
||||||
uint32_t Clay_MinMemorySize(void) {
|
uint32_t Clay_MinMemorySize(void) {
|
||||||
Clay_Context fakeContext = {
|
Clay_Context fakeContext = {
|
||||||
.maxElementCount = 8192,
|
.maxElementCount = Clay__defaultMaxElementCount,
|
||||||
.maxMeasureTextCacheWordCount = 16384,
|
.maxMeasureTextCacheWordCount = Clay__defaultMaxMeasureTextWordCacheCount,
|
||||||
.internalArena = {
|
.internalArena = {
|
||||||
.capacity = SIZE_MAX,
|
.capacity = SIZE_MAX,
|
||||||
.memory = (char*)&fakeContext,
|
.memory = (char*)&fakeContext,
|
||||||
@ -3696,7 +3699,7 @@ Clay_Context* Clay_Initialize(Clay_Arena arena, Clay_Dimensions layoutDimensions
|
|||||||
Clay_Context* context = Clay__Context_Allocate_Arena(&arena);
|
Clay_Context* context = Clay__Context_Allocate_Arena(&arena);
|
||||||
if (context == NULL) return NULL;
|
if (context == NULL) return NULL;
|
||||||
// DEFAULTS
|
// DEFAULTS
|
||||||
context->maxElementCount = 8192;
|
context->maxElementCount = Clay__defaultMaxElementCount;
|
||||||
context->maxMeasureTextCacheWordCount = context->maxElementCount * 2;
|
context->maxMeasureTextCacheWordCount = context->maxElementCount * 2;
|
||||||
context->errorHandler = CLAY__INIT(Clay_ErrorHandler) { Clay__ErrorHandlerFunctionDefault };
|
context->errorHandler = CLAY__INIT(Clay_ErrorHandler) { Clay__ErrorHandlerFunctionDefault };
|
||||||
Clay_SetCurrentContext(context);
|
Clay_SetCurrentContext(context);
|
||||||
@ -3986,7 +3989,11 @@ int32_t Clay_GetMaxElementCount(void) {
|
|||||||
CLAY_WASM_EXPORT("Clay_SetMaxElementCount")
|
CLAY_WASM_EXPORT("Clay_SetMaxElementCount")
|
||||||
void Clay_SetMaxElementCount(int32_t maxElementCount) {
|
void Clay_SetMaxElementCount(int32_t maxElementCount) {
|
||||||
Clay_Context* context = Clay_GetCurrentContext();
|
Clay_Context* context = Clay_GetCurrentContext();
|
||||||
|
if (context) {
|
||||||
context->maxElementCount = maxElementCount;
|
context->maxElementCount = maxElementCount;
|
||||||
|
} else {
|
||||||
|
Clay__defaultMaxElementCount = maxElementCount; // TODO: Fix this
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CLAY_WASM_EXPORT("Clay_GetMaxMeasureTextCacheWordCount")
|
CLAY_WASM_EXPORT("Clay_GetMaxMeasureTextCacheWordCount")
|
||||||
@ -3997,7 +4004,12 @@ int32_t Clay_GetMaxMeasureTextCacheWordCount(void) {
|
|||||||
|
|
||||||
CLAY_WASM_EXPORT("Clay_SetMaxMeasureTextCacheWordCount")
|
CLAY_WASM_EXPORT("Clay_SetMaxMeasureTextCacheWordCount")
|
||||||
void Clay_SetMaxMeasureTextCacheWordCount(int32_t maxMeasureTextCacheWordCount) {
|
void Clay_SetMaxMeasureTextCacheWordCount(int32_t maxMeasureTextCacheWordCount) {
|
||||||
|
Clay_Context* context = Clay_GetCurrentContext();
|
||||||
|
if (context) {
|
||||||
Clay__currentContext->maxMeasureTextCacheWordCount = maxMeasureTextCacheWordCount;
|
Clay__currentContext->maxMeasureTextCacheWordCount = maxMeasureTextCacheWordCount;
|
||||||
|
} else {
|
||||||
|
Clay__defaultMaxMeasureTextWordCacheCount = maxMeasureTextCacheWordCount; // TODO: Fix this
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // CLAY_IMPLEMENTATION
|
#endif // CLAY_IMPLEMENTATION
|
||||||
|
Loading…
Reference in New Issue
Block a user