6 days ago
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