diff options
author | Federico Mena Quintero <federico@helixcode.com> | 2000-04-13 01:18:41 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2000-04-13 01:18:41 +0000 |
commit | 37ac7d593e19e23d52b0018b067e5e0ccb518cb8 (patch) | |
tree | 2235afe6af4792d70ce35bd8ca1778f3e0da13f3 /gdk-pixbuf/gdk-pixbuf.h | |
parent | a106984b7fecda47a9ee79cb466f2ea8a72d5740 (diff) | |
download | gtk+-37ac7d593e19e23d52b0018b067e5e0ccb518cb8.tar.gz |
Your eyes are bloodshot.GDK_PIXBUF_0_7_0
Your eyes are bloodshot.
Your mouth starts to foam.
Your hands are shaking.
You know your need your fix.
NEED MORE ABSTRACTION!
2000-04-12 Federico Mena Quintero <federico@helixcode.com>
This comes from an excellent idea by Tim Janik (timj@gtk.org) to
hook to the last unref operation.
* gdk-pixbuf/gdk-pixbuf.c (gdk_pixbuf_set_last_unref_handler): New
function to set the last unref handler for a pixbuf.
(gdk_pixbuf_finalize): New function to actually finalize a pixbuf.
It calls the pixbuf's destroy notification function and frees the
GdkPixbuf structure itself.
(gdk_pixbuf_unref): Use the last unref function of the pixbuf if
available.
* gdk-pixbuf/gdk-pixbuf-private.h (struct _GdkPixbuf): New fields
for the last unref handler and its user data.
* gdk-pixbuf/gdk-pixbuf-data.c (gdk_pixbuf_new_from_data): Use
g_new0() to allocate the pixbuf.
* gdk-pixbuf/gdk-pixbuf-loader.c (gdk_pixbuf_loader_class_init):
Fixed the call to gtk_signal_new() for the "frame_done" signal; it
was not specifying the `frame' argument.
* gdk-pixbuf/gdk-pixbuf-animation.c
(gdk_pixbuf_animation_get_width): Fixed docstring.
(gdk_pixbuf_animation_get_height): Likewise.
(gdk_pixbuf_animation_get_num_frames): Likewise.
(gdk_pixbuf_animation_get_frames): Likewise.
* doc/gdk-pixbuf-sections.txt: Updated with the new functions and
types.
* doc/tmpl/gdk-pixbuf.sgml: Added the description for GdkColorspace.
* doc/tmpl/scaling.sgml: Added the description for GdkInterpType.
* doc/tmpl/refcounting.sgml: Updated with the information about
the last unref handler.
* doc/tmpl/*.sgml: Markup tweaks.
* gdk-pixbuf/Makefile.am (libgnomecanvaspixbuf_la_LDFLAGS): Sigh,
update the libtool version number for libgnomecanvaspixbuf as
well.
(libpixbufloader_*_la_LDFLAGS): The loaders need to be versioned
as well, or the old ones won't work with the new stuff. Also,
renamed the modules as follows.
* gdk-pixbuf/gdk-pixbuf-io.c (gdk_pixbuf_load_module): Now the
modules are called "libpixbufloader-<format>.so" instead of
"libpixbuf-<format>.so". They needed renaming so that the new
loaders won't overwrite the old ones; even with the versioning
stuff, the new .so symlink to the .so.1.0.0 would overwrite the
old real .so file.
Diffstat (limited to 'gdk-pixbuf/gdk-pixbuf.h')
-rw-r--r-- | gdk-pixbuf/gdk-pixbuf.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gdk-pixbuf/gdk-pixbuf.h b/gdk-pixbuf/gdk-pixbuf.h index 5b82e086bc..70eebcf657 100644 --- a/gdk-pixbuf/gdk-pixbuf.h +++ b/gdk-pixbuf/gdk-pixbuf.h @@ -46,14 +46,24 @@ typedef struct _GdkPixbuf GdkPixbuf; typedef struct _GdkPixbufFrame GdkPixbufFrame; typedef struct _GdkPixbufAnimation GdkPixbufAnimation; +/* Handler that must free the pixel array */ typedef void (* GdkPixbufDestroyNotify) (guchar *pixels, gpointer data); +/* Handler for the last unref operation */ +typedef void (* GdkPixbufLastUnref) (GdkPixbuf *pixbuf, gpointer data); + /* Reference counting */ -GdkPixbuf *gdk_pixbuf_ref (GdkPixbuf *pixbuf); -void gdk_pixbuf_unref (GdkPixbuf *pixbuf); +GdkPixbuf *gdk_pixbuf_ref (GdkPixbuf *pixbuf); +void gdk_pixbuf_unref (GdkPixbuf *pixbuf); + +void gdk_pixbuf_set_last_unref_handler (GdkPixbuf *pixbuf, + GdkPixbufLastUnref last_unref_fn, + gpointer last_unref_fn_data); + +void gdk_pixbuf_finalize (GdkPixbuf *pixbuf); /* GdkPixbuf accessors */ |