if (imd->func_update) imd->func_update(imd, imd->data_update);
}
+static void image_zoom_cb(PixbufRenderer *pr, gdouble zoom, gpointer data)
+{
+ ImageWindow *imd = data;
+
+ image_update_util(imd);
+}
+
static void image_complete_util(ImageWindow *imd, gint preload)
{
if (imd->il && image_get_pixbuf(imd) != image_loader_get_pixbuf(imd->il)) return;
if (imd->func_complete) imd->func_complete(imd, preload, imd->data_complete);
}
+static void image_render_complete_cb(PixbufRenderer *pr, gpointer data)
+{
+ ImageWindow *imd = data;
+
+ image_complete_util(imd, FALSE);
+}
+
static void image_new_util(ImageWindow *imd)
{
if (imd->func_new) imd->func_new(imd, imd->data_new);
if (imd->il) return FALSE;
imd->completed = FALSE;
+ g_object_set(G_OBJECT(imd->pr), "complete", FALSE, NULL);
if (image_post_buffer_get(imd))
{
g_signal_connect(G_OBJECT(imd->pr), "destroy",
G_CALLBACK(image_destroy_cb), imd);
+ g_signal_connect(G_OBJECT(imd->pr), "zoom",
+ G_CALLBACK(image_zoom_cb), imd);
+ g_signal_connect(G_OBJECT(imd->pr), "render_complete",
+ G_CALLBACK(image_render_complete_cb), imd);
+
return imd;
}