static gint update_timeout(gpointer data) { ProgressFileStatus *status = data; gboolean done; done = TRUE; if (!feof(status->imagefile)) { gint nbytes; nbytes = fread(status->buf, 1, status->readlen, status->imagefile); done = !gdk_pixbuf_loader_write (GDK_PIXBUF_LOADER (status->loader), status->buf, nbytes); } if (done) { gtk_widget_queue_draw(*status->rgbwin); gdk_pixbuf_loader_close (GDK_PIXBUF_LOADER (status->loader)); gtk_object_destroy (GTK_OBJECT(status->loader)); fclose (status->imagefile); g_free (status->buf); } return !done; }
static gint update_timeout (gpointer data) { ProgressFileStatus *status = data; gboolean done; GError *error; done = FALSE; error = NULL; if (!feof (status->imagefile)) { gint nbytes; nbytes = fread (status->buf, 1, status->readlen, status->imagefile); if (!gdk_pixbuf_loader_write (GDK_PIXBUF_LOADER (status->loader), status->buf, nbytes, &error)) { g_warning ("Error writing to loader: %s", error->message); g_error_free (error); done = TRUE; } } else done = TRUE; if (done) { /* ignoring errors, we should not do that. */ gdk_pixbuf_loader_close (GDK_PIXBUF_LOADER (status->loader), NULL); gtk_widget_queue_draw (*status->rgbwin); g_object_unref (status->loader); fclose (status->imagefile); g_free (status->buf); } return !done; }
static size_t cover_thumbnailer_load_pixbuf_write (gpointer data, size_t size, size_t nmemb, gpointer user_data) { GdkPixbufLoader *loader = GDK_PIXBUF_LOADER (user_data); size_t len = size * nmemb; GError *err = NULL; g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), 0); /* write to the loader */ if (!gdk_pixbuf_loader_write (loader, data, len, &err)) { g_critical ("Failed to write to pixbuf loader: %s", err->message); g_error_free (err); } return len; }