refactor document context

Sat, 04 Oct 2025 10:59:56 +0200

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sat, 04 Oct 2025 10:59:56 +0200
changeset 795
d466b6edfebc
parent 794
ebd7b3394501
child 796
4d04cb879daa

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();
--- 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();
     
--- 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();
 	

mercurial