]> Pileus Git - ~andy/gtk/blobdiff - gdk-pixbuf/gdk-pixbuf-io.c
Speed up printer listing in the print dialog
[~andy/gtk] / gdk-pixbuf / gdk-pixbuf-io.c
index 641e7475130797c0245101f10d130874b8c383a0..646b0f1eaa89305f9f11198a36adf7583a7d4a2a 100644 (file)
@@ -277,6 +277,13 @@ correct_prefix (gchar **path)
   if (strncmp (*path, GTK_PREFIX "/", strlen (GTK_PREFIX "/")) == 0 ||
       strncmp (*path, GTK_PREFIX "\\", strlen (GTK_PREFIX "\\")) == 0)
     {
+         gchar *tem = NULL;
+      if (strlen(*path) > 5 && strncmp (*path - 5, ".libs", 5) == 0)
+        {
+          /* We are being run from inside the build tree, and shouldn't mess about. */
+          return;
+       }
+
       /* This is an entry put there by gdk-pixbuf-query-loaders on the
        * packager's system. On Windows a prebuilt GTK+ package can be
        * installed in a random location. The gdk-pixbuf.loaders file
@@ -284,7 +291,7 @@ correct_prefix (gchar **path)
        * builder's machine. Replace the build-time prefix with the
        * installation prefix on this machine.
        */
-      gchar *tem = *path;
+      tem = *path;
       *path = g_strconcat (get_toplevel (), tem + strlen (GTK_PREFIX), NULL);
       g_free (tem);
     }
@@ -793,8 +800,11 @@ _gdk_pixbuf_get_module (guchar *buffer, guint size,
        gchar **mimes;
        gchar *type;
        gint j;
+       gboolean uncertain;
 
-       mime_type = g_content_type_guess (NULL, buffer, size, NULL);
+       mime_type = g_content_type_guess (NULL, buffer, size, &uncertain);
+       if (uncertain)
+               mime_type = g_content_type_guess (filename, buffer, size, NULL);
 
        for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
                GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
@@ -2406,13 +2416,10 @@ gdk_pixbuf_save_to_stream (GdkPixbuf      *pixbuf,
        data.stream = stream;
        data.cancellable = cancellable;
 
-       if (!gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream, 
-                                          &data, type, 
-                                          keys, values, 
-                                          error)) {
-               error = NULL; /* Ignore further errors */
-               res = FALSE;
-       }
+       res = gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream, 
+                                           &data, type, 
+                                           keys, values, 
+                                           error);
 
        g_strfreev (keys);
        g_strfreev (values);
@@ -2452,14 +2459,14 @@ gchar *
 gdk_pixbuf_format_get_description (GdkPixbufFormat *format)
 {
        gchar *domain;
-       gchar *description;
+       const gchar *description;
        g_return_val_if_fail (format != NULL, NULL);
 
        if (format->domain != NULL) 
                domain = format->domain;
        else 
                domain = GETTEXT_PACKAGE;
-       description = dgettext (domain, format->description);
+       description = g_dgettext (domain, format->description);
 
        return g_strdup (description);
 }