# HG changeset patch # User Olaf Wintermann # Date 1759568396 -7200 # Node ID d466b6edfebc7f5ad1d19a8831f96422ae6228a3 # Parent ebd7b33945013db6a3a3a16dc16e694fa152e6e2 refactor document context diff -r ebd7b3394501 -r d466b6edfebc ui/common/document.c --- a/ui/common/document.c Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/common/document.c Sat Oct 04 10:59:56 2025 +0200 @@ -36,22 +36,16 @@ #include -static CxMap *documents; -void uic_docmgr_init() { - if (!documents) { - documents = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 32); - } -} void* ui_document_new(size_t size) { CxMempool *mp = cxMempoolCreateSimple(256); const CxAllocator *a = mp->allocator; UiContext *ctx = uic_context(NULL, mp); - void *document = cxCalloc(a, size, 1); - cxMapPut(documents, cx_hash_key(&document, sizeof(void*)), ctx); - return document; + UiDoc *document = cxCalloc(a, sizeof(UiDoc) + size, 1); + document->ctx = ctx; + return &document->doc; } void ui_document_destroy(void *doc) { @@ -74,7 +68,9 @@ UiContext* ui_document_context(void *doc) { if(doc) { - return cxMapGet(documents, cx_hash_key(&doc, sizeof(void*))); + char *docPtr = doc; + UiDoc *document = (UiDoc*)(docPtr - sizeof(void*)); + return document->ctx; } else { return NULL; } diff -r ebd7b3394501 -r d466b6edfebc ui/common/document.h --- a/ui/common/document.h Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/common/document.h Sat Oct 04 10:59:56 2025 +0200 @@ -36,7 +36,11 @@ extern "C" { #endif -void uic_docmgr_init(); +typedef struct UiDoc { + UiContext *ctx; + char doc[]; +} UiDoc; + void uic_document_addvar(void *doc, char *name, int type, size_t vs); diff -r ebd7b3394501 -r d466b6edfebc ui/gtk/toolkit.c --- a/ui/gtk/toolkit.c Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/gtk/toolkit.c Sat Oct 04 10:59:56 2025 +0200 @@ -79,7 +79,6 @@ #endif ui_css_init(); - uic_docmgr_init(); uic_menu_init(); uic_toolbar_init(); ui_image_init(); diff -r ebd7b3394501 -r d466b6edfebc ui/motif/toolkit.c --- a/ui/motif/toolkit.c Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/motif/toolkit.c Sat Oct 04 10:59:56 2025 +0200 @@ -100,7 +100,6 @@ display = XtOpenDisplay(app, NULL, appname, appname, NULL, 0, &argc, argv); - uic_docmgr_init(); uic_menu_init(); uic_toolbar_init(); uic_load_app_properties(); diff -r ebd7b3394501 -r d466b6edfebc ui/qt/toolkit.cpp --- a/ui/qt/toolkit.cpp Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/qt/toolkit.cpp Sat Oct 04 10:59:56 2025 +0200 @@ -62,7 +62,6 @@ app_argv = argv; application = new QApplication(app_argc, app_argv); - uic_docmgr_init(); uic_menu_init(); uic_toolbar_init(); diff -r ebd7b3394501 -r d466b6edfebc ui/winui/toolkit.cpp --- a/ui/winui/toolkit.cpp Fri Oct 03 11:44:08 2025 +0200 +++ b/ui/winui/toolkit.cpp Sat Oct 04 10:59:56 2025 +0200 @@ -165,7 +165,6 @@ //ui_appsdk_bootstrap(); uic_init_global_context(); - uic_docmgr_init(); uic_menu_init(); uic_toolbar_init();