add functions for app reference counting

Thu, 12 Feb 2026 15:44:46 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 12 Feb 2026 15:44:46 +0100
changeset 1070
e097bc7cfec6
parent 1069
512fad602f97
child 1071
d64c417039bc

add functions for app reference counting

ui/cocoa/toolkit.m file | annotate | diff | comparison | revisions
ui/common/object.c 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/ui/toolkit.h file | annotate | diff | comparison | revisions
ui/win32/toolkit.c file | annotate | diff | comparison | revisions
--- a/ui/cocoa/toolkit.m	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/cocoa/toolkit.m	Thu Feb 12 15:44:46 2026 +0100
@@ -120,6 +120,14 @@
     }
 }
 
+void ui_app_ref(void) {
+    // TODO
+}
+
+void ui_app_unref(void) {
+    // TODO
+}
+
 /* ------------------- Window Visibility functions ------------------- */
 
 void ui_show(UiObject *obj) {
--- a/ui/common/object.c	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/common/object.c	Thu Feb 12 15:44:46 2026 +0100
@@ -63,6 +63,7 @@
 UiObject* ui_dummy_object(void) {
     UiObject *obj = uic_object_new_toplevel();
     obj->ref = 1;
+    ui_app_ref();
     return obj;
 }
 
--- a/ui/gtk/toolkit.c	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/gtk/toolkit.c	Thu Feb 12 15:44:46 2026 +0100
@@ -135,6 +135,24 @@
     }
 }
 
+
+void ui_app_ref(void) {
+#ifdef UI_APPLICATION
+    g_application_hold(G_APPLICATION(&app));
+#else
+    // TODO
+#endif
+}
+
+void ui_app_unref(void) {
+#ifdef UI_APPLICATION
+    g_application_release(G_APPLICATION(&app));
+#else
+    // TODO
+#endif
+}
+
+
 #ifndef UI_GTK2
 void ui_app_quit() {
     g_application_quit(G_APPLICATION(app)); // TODO: fix, does not work
@@ -172,6 +190,7 @@
 #endif
     } else {
         ui_window_close_request(obj);
+        ui_app_unref();
     }
 }
 
--- a/ui/motif/toolkit.c	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/motif/toolkit.c	Thu Feb 12 15:44:46 2026 +0100
@@ -142,6 +142,14 @@
     }
 }
 
+void ui_app_ref(void) {
+    // TODO
+}
+
+void ui_app_unref(void) {
+    // TODO
+}
+
 void ui_app_quit() {
     XtAppSetExitFlag(app);
 }
--- a/ui/qt/toolkit.cpp	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/qt/toolkit.cpp	Thu Feb 12 15:44:46 2026 +0100
@@ -83,6 +83,14 @@
     }
 }
 
+void ui_app_ref(void) {
+    // TODO
+}
+
+void ui_app_unref(void) {
+    // TODO
+}
+
 void ui_show(UiObject *obj) {
     obj->widget->show();
 }
--- a/ui/ui/toolkit.h	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/ui/toolkit.h	Thu Feb 12 15:44:46 2026 +0100
@@ -738,6 +738,9 @@
 UIEXPORT void ui_object_set(UiObject *obj, const char *key, void *data);
 UIEXPORT void* ui_object_get(UiObject *obj, const char *key);
 
+UIEXPORT void ui_app_ref(void);
+UIEXPORT void ui_app_unref(void);
+
 #ifdef	__cplusplus
 }
 #endif
--- a/ui/win32/toolkit.c	Sun Feb 08 15:19:40 2026 +0100
+++ b/ui/win32/toolkit.c	Thu Feb 12 15:44:46 2026 +0100
@@ -99,6 +99,14 @@
     uic_store_app_properties();
 }
 
+void ui_app_ref(void) {
+    // TODO
+}
+
+void ui_app_unref(void) {
+    // TODO
+}
+
 void ui_show(UiObject *obj) {
     ui_set_visible(obj->widget, TRUE);
 }

mercurial