diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/eom-image-private.h | 1 | ||||
-rw-r--r-- | src/eom-image.c | 71 |
2 files changed, 6 insertions, 66 deletions
diff --git a/src/eom-image-private.h b/src/eom-image-private.h index b0ba0f0..3a031b6 100644 --- a/src/eom-image-private.h +++ b/src/eom-image-private.h @@ -51,7 +51,6 @@ struct _EomImagePrivate { goffset bytes; gchar *file_type; - gboolean threadsafe_format; /* Holds EXIF raw data */ guint exif_chunk_len; diff --git a/src/eom-image.c b/src/eom-image.c index 3cd8e34..45e03c8 100644 --- a/src/eom-image.c +++ b/src/eom-image.c @@ -483,40 +483,6 @@ eom_image_emit_size_prepared (EomImage *img) g_object_ref (img), g_object_unref); } -static gboolean -check_loader_threadsafety (GdkPixbufLoader *loader, gboolean *result) -{ - GdkPixbufFormat *format; - gboolean ret_val = FALSE; - - format = gdk_pixbuf_loader_get_format (loader); - if (format) { - ret_val = TRUE; - if (result) - /* FIXME: We should not be accessing this struct internals - * directly. Keep track of bug #469209 to fix that. */ - *result = format->flags & GDK_PIXBUF_FORMAT_THREADSAFE; - } - - return ret_val; -} - -static void -eom_image_pre_size_prepared (GdkPixbufLoader *loader, - gint width, - gint height, - gpointer data) -{ - EomImage *img; - - eom_debug (DEBUG_IMAGE_LOAD); - - g_return_if_fail (EOM_IS_IMAGE (data)); - - img = EOM_IMAGE (data); - check_loader_threadsafety (loader, &img->priv->threadsafe_format); -} - static void eom_image_size_prepared (GdkPixbufLoader *loader, gint width, @@ -539,9 +505,7 @@ eom_image_size_prepared (GdkPixbufLoader *loader, g_mutex_unlock (&img->priv->status_mutex); #ifdef HAVE_EXIF - if (img->priv->threadsafe_format && (!img->priv->autorotate || img->priv->exif)) -#else - if (img->priv->threadsafe_format) + if (!img->priv->autorotate || img->priv->exif) #endif eom_image_emit_size_prepared (img); } @@ -909,8 +873,6 @@ eom_image_real_load (EomImage *img, priv->file_type = NULL; } - priv->threadsafe_format = FALSE; - eom_image_get_file_info (img, &priv->bytes, &mime_type, error); if (error && *error) { @@ -953,8 +915,6 @@ eom_image_real_load (EomImage *img, buffer = g_new0 (guchar, EOM_IMAGE_READ_BUFFER_SIZE); if (read_image_data || read_only_dimension) { - gboolean checked_threadsafety = FALSE; - #ifdef HAVE_RSVG if (priv->svg != NULL) { g_object_unref (priv->svg); @@ -977,21 +937,8 @@ eom_image_real_load (EomImage *img, *error = NULL; loader = gdk_pixbuf_loader_new (); - } else { - /* The mimetype-based loader should know the - * format here already. */ - checked_threadsafety = check_loader_threadsafety (loader, &priv->threadsafe_format); } - /* This is used to detect non-threadsafe loaders and disable - * any possible asyncronous task that could bring deadlocks - * to image loading process. */ - if (!checked_threadsafety) - g_signal_connect (loader, - "size-prepared", - G_CALLBACK (eom_image_pre_size_prepared), - img); - g_signal_connect_object (G_OBJECT (loader), "size-prepared", G_CALLBACK (eom_image_size_prepared), @@ -1049,16 +996,15 @@ eom_image_real_load (EomImage *img, if (data2read == EOM_IMAGE_DATA_EXIF) { g_set_error (error, EOM_IMAGE_ERROR, - EOM_IMAGE_ERROR_GENERIC, - _("EXIF not supported for this file format.")); + EOM_IMAGE_ERROR_GENERIC, + _("EXIF not supported for this file format.")); break; } - if (priv->threadsafe_format) - eom_image_emit_size_prepared (img); + eom_image_emit_size_prepared (img); - priv->metadata_status = EOM_IMAGE_METADATA_NOT_AVAILABLE; - } + priv->metadata_status = EOM_IMAGE_METADATA_NOT_AVAILABLE; + } first_run = FALSE; } @@ -1152,11 +1098,6 @@ eom_image_real_load (EomImage *img, } priv->file_is_changed = FALSE; - - /* If it's non-threadsafe loader, then trigger window - * showing in the end of the process. */ - if (!priv->threadsafe_format) - eom_image_emit_size_prepared (img); } else { /* Some loaders don't report errors correctly. * Error will be set below. */ |