add UIIMAGE type

6 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 03 Apr 2025 21:24:43 +0200 (6 days ago)
changeset 548
198756ab2845
parent 547
631162b266d1
child 549
63d53ce4dd67

add UIIMAGE type

ui/gtk/image.c file | annotate | diff | comparison | revisions
ui/ui/image.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/image.c	Wed Apr 02 20:31:04 2025 +0200
+++ b/ui/gtk/image.c	Thu Apr 03 21:24:43 2025 +0200
@@ -125,6 +125,7 @@
             GdkPixbuf *pixbuf = value->value;
             value->value = NULL;
             ui_imageviewer_set(value, pixbuf, UI_IMAGE_OBJECT_TYPE);
+            g_object_unref(pixbuf);
         }
     }
     
@@ -299,6 +300,7 @@
     }
     
     GdkPixbuf *pixbuf = value;
+    g_object_ref(pixbuf);
     
     UiImageViewer *imgviewer = g->obj;
     g->value = pixbuf;
@@ -331,13 +333,22 @@
     
     if(obj->set) {
         obj->set(obj, pixbuf, UI_IMAGE_OBJECT_TYPE);
+        g_object_unref(pixbuf);
     } else {
         obj->value = pixbuf;
     }
-       
+          
     return 0;
 }
 
+void ui_image_ref(UIIMAGE img) {
+    g_object_ref(img);
+}
+
+void ui_image_unref(UIIMAGE img) {
+    g_object_unref(img);
+}
+
 #if GTK_MAJOR_VERSION >= 4
 
 gboolean ui_imageviewer_scroll(
--- a/ui/ui/image.h	Wed Apr 02 20:31:04 2025 +0200
+++ b/ui/ui/image.h	Thu Apr 03 21:24:43 2025 +0200
@@ -37,6 +37,13 @@
 
 #define UI_IMAGE_OBJECT_TYPE "image"
     
+#ifdef UI_GTK
+#define UIIMAGE GdkPixbuf*
+#else
+#define UIIMAGE void*
+#endif
+    
+    
 typedef struct UiImageViewerArgs {
     UiTri fill;
     UiBool hexpand;
@@ -79,6 +86,9 @@
 
 UIEXPORT int ui_image_load_file(UiGeneric *obj, const char *path);
 
+UIEXPORT void ui_image_ref(UIIMAGE img);
+UIEXPORT void ui_image_unref(UIIMAGE img);
+
 #ifdef __cplusplus
 }
 #endif

mercurial