]> Pileus Git - ~andy/gtk/commitdiff
load the vtable fully.
authorJonathan Blandford <jrb@redhat.com>
Tue, 26 Oct 1999 23:26:16 +0000 (23:26 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Tue, 26 Oct 1999 23:26:16 +0000 (23:26 +0000)
1999-10-26  Jonathan Blandford  <jrb@redhat.com>

* src/gdk-pixbuf-io.c (image_handler_load): load the vtable fully.

gdk-pixbuf/gdk-pixbuf-io.c
gdk-pixbuf/gdk-pixbuf-loader.c
gtk/gdk-pixbuf-loader.c

index 7fbcbd3b3d9ee50dbeaa35cdbb97579d69d7f566..236fdaeb23fa7354cd2399bd340269734d56f8d8 100644 (file)
@@ -136,17 +136,17 @@ pixbuf_check_ppm (guchar *buffer, int size)
 #endif
 
 ModuleType file_formats [] = {
-       { "png",  pixbuf_check_png,  NULL, NULL, NULL },
-       { "jpeg", pixbuf_check_jpeg, NULL, NULL, NULL },
-       { "tiff", pixbuf_check_tiff, NULL, NULL, NULL },
-       { "gif",  pixbuf_check_gif,  NULL, NULL, NULL },
+       { "png",  pixbuf_check_png,  NULL, NULL, NULL, NULL, NULL, NULL },
+       { "jpeg", pixbuf_check_jpeg, NULL, NULL, NULL, NULL, NULL, NULL },
+       { "tiff", pixbuf_check_tiff, NULL, NULL, NULL, NULL, NULL, NULL },
+       { "gif",  pixbuf_check_gif,  NULL, NULL, NULL, NULL, NULL, NULL },
 #define XPM_FILE_FORMAT_INDEX 4
-       { "xpm",  pixbuf_check_xpm,  NULL, NULL, NULL },
+       { "xpm",  pixbuf_check_xpm,  NULL, NULL, NULL, NULL, NULL, NULL },
 #if 0
-       { "bmp",  pixbuf_check_bmp,  NULL, NULL, NULL },
-       { "ppm",  pixbuf_check_ppm,  NULL, NULL, NULL },
+       { "bmp",  pixbuf_check_bmp,  NULL, NULL, NULL, NULL, NULL, NULL },
+       { "ppm",  pixbuf_check_ppm,  NULL, NULL, NULL, NULL, NULL, NULL },
 #endif
-       { NULL, NULL, NULL, NULL }
+       { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
 };
 
 static void
@@ -155,7 +155,7 @@ image_handler_load (ModuleType *image_module)
        char *module_name;
        char *path;
        GModule *module;
-       void *load_sym;
+       gpointer load_sym;
 
         g_return_if_fail(image_module->module == NULL);
 
@@ -177,6 +177,15 @@ image_handler_load (ModuleType *image_module)
 
         if (g_module_symbol (module, "image_load_xpm_data", &load_sym))
                image_module->load_xpm_data = load_sym;
+
+        if (g_module_symbol (module, "image_begin_load", &load_sym))
+               image_module->begin_load = load_sym;
+
+        if (g_module_symbol (module, "image_stop_load", &load_sym))
+               image_module->stop_load = load_sym;
+
+        if (g_module_symbol (module, "image_load_increment", &load_sym))
+               image_module->load_increment = load_sym;
 }
 
 \f
index 057228065c5336c012d76bd11a3d529c1b93ecd0..ecb1b071f8e4b0a2b63f20b6acc5937ec6e5261b 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "gdk-pixbuf-loader.h"
 #include "gdk-pixbuf-io.h"
+#include <gtk/gtksignal.h>
 
 enum {
        AREA_UPDATED,
@@ -58,10 +59,9 @@ static guint pixbuf_loader_signals[LAST_SIGNAL] = { 0 };
 /* our marshaller */
 typedef void (*GtkSignal_NONE__INT_INT_INT_INT) (GtkObject * object,
                                                         gint arg1,
-                                                        gpointer arg2,
+                                                        gint arg2,
                                                         gint arg3,
                                                         gint arg4,
-                                                        gint arg5,
                                                         gpointer user_data);
 void
 gtk_marshal_NONE__INT_INT_INT_INT (GtkObject * object,
@@ -184,7 +184,7 @@ gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf, gpointer loader)
        g_assert (priv->pixbuf == NULL);
 
        priv->pixbuf = pixbuf;
-       gtk_signal_emit (GTK_OBJECT (loader), druid_page_signals[AREA_PREPARED]);
+       gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[AREA_PREPARED]);
 }
 
 /* Public functions */
@@ -315,7 +315,7 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader)
        g_return_if_fail (priv->closed == FALSE);
 
        /* We have less the 128 bytes in the image.  Flush it, and keep going. */
-       if (priv->module == NULL) {
+       if (priv->image_module == NULL) {
                priv->image_module = gdk_pixbuf_get_module (priv->buf, priv->buf_offset);
                if (priv->image_module &&
                    ((priv->image_module->begin_load == NULL) ||
@@ -331,7 +331,7 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader)
        }
 
        if (priv->image_module && priv->image_module->stop_load)
-               (priv->image_module->stop_load) (loader->context);
+               (priv->image_module->stop_load) (priv->context);
 
        priv->closed = TRUE;
 }
index 057228065c5336c012d76bd11a3d529c1b93ecd0..ecb1b071f8e4b0a2b63f20b6acc5937ec6e5261b 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "gdk-pixbuf-loader.h"
 #include "gdk-pixbuf-io.h"
+#include <gtk/gtksignal.h>
 
 enum {
        AREA_UPDATED,
@@ -58,10 +59,9 @@ static guint pixbuf_loader_signals[LAST_SIGNAL] = { 0 };
 /* our marshaller */
 typedef void (*GtkSignal_NONE__INT_INT_INT_INT) (GtkObject * object,
                                                         gint arg1,
-                                                        gpointer arg2,
+                                                        gint arg2,
                                                         gint arg3,
                                                         gint arg4,
-                                                        gint arg5,
                                                         gpointer user_data);
 void
 gtk_marshal_NONE__INT_INT_INT_INT (GtkObject * object,
@@ -184,7 +184,7 @@ gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf, gpointer loader)
        g_assert (priv->pixbuf == NULL);
 
        priv->pixbuf = pixbuf;
-       gtk_signal_emit (GTK_OBJECT (loader), druid_page_signals[AREA_PREPARED]);
+       gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[AREA_PREPARED]);
 }
 
 /* Public functions */
@@ -315,7 +315,7 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader)
        g_return_if_fail (priv->closed == FALSE);
 
        /* We have less the 128 bytes in the image.  Flush it, and keep going. */
-       if (priv->module == NULL) {
+       if (priv->image_module == NULL) {
                priv->image_module = gdk_pixbuf_get_module (priv->buf, priv->buf_offset);
                if (priv->image_module &&
                    ((priv->image_module->begin_load == NULL) ||
@@ -331,7 +331,7 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader)
        }
 
        if (priv->image_module && priv->image_module->stop_load)
-               (priv->image_module->stop_load) (loader->context);
+               (priv->image_module->stop_load) (priv->context);
 
        priv->closed = TRUE;
 }