Sat, 04 Oct 2025 10:59:56 +0200
refactor document context
| ui/common/document.c | file | annotate | diff | comparison | revisions | |
| ui/common/document.h | file | annotate | diff | comparison | revisions | |
| ui/gtk/toolkit.c | file | annotate | diff | comparison | revisions | |
| ui/motif/toolkit.c | file | annotate | diff | comparison | revisions | |
| ui/qt/toolkit.cpp | file | annotate | diff | comparison | revisions | |
| ui/winui/toolkit.cpp | file | annotate | diff | comparison | revisions |
--- 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 <cx/mempool.h> -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; }
--- 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);
--- 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();
--- 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();