[gtk/wip/otte/reftests: 10/14] picture: Don't cause warnings on load failures



commit c8e3c8c191875a8c541a5c4f6df8bf3878f43bae
Author: Benjamin Otte <otte redhat com>
Date:   Fri Mar 29 05:36:12 2019 +0100

    picture: Don't cause warnings on load failures
    
    When a file set via gtk_picture_set_file() can't be loaded, just
    silently don't load it.
    
    Reftest picture-load-invalid-file added for that case.

 gtk/gtkpicture.c                                    |  3 ++-
 testsuite/reftests/meson.build                      |  2 ++
 testsuite/reftests/picture-load-invalid-file.ref.ui | 11 +++++++++++
 testsuite/reftests/picture-load-invalid-file.ui     | 12 ++++++++++++
 4 files changed, 27 insertions(+), 1 deletion(-)
---
diff --git a/gtk/gtkpicture.c b/gtk/gtkpicture.c
index 3dc7c9b91b..b6ecd2f696 100644
--- a/gtk/gtkpicture.c
+++ b/gtk/gtkpicture.c
@@ -604,6 +604,7 @@ load_scalable_with_loader (GFile *file,
 out2:
   g_bytes_unref (bytes);
 out1:
+  gdk_pixbuf_loader_close (loader, NULL);
   g_object_unref (loader);
 
   return result;
@@ -637,7 +638,7 @@ gtk_picture_set_file (GtkPicture *self,
 
   paintable = load_scalable_with_loader (file, gtk_widget_get_scale_factor (GTK_WIDGET (self)));
   gtk_picture_set_paintable (self, paintable);
-  g_object_unref (paintable);
+  g_clear_object (&paintable);
 
   g_object_thaw_notify (G_OBJECT (self));
 }
diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build
index 3a1f9ac688..597939d6c0 100644
--- a/testsuite/reftests/meson.build
+++ b/testsuite/reftests/meson.build
@@ -328,6 +328,8 @@ testdata = [
   'paned-undersized.css',
   'paned-undersized.ref.ui',
   'paned-undersized.ui',
+  'picture-load-invalid-file.ui',
+  'picture-load-invalid-file.ref.ui',
   'pseudoclass-on-box.css',
   'pseudoclass-on-box.ref.ui',
   'pseudoclass-on-box.ui',
diff --git a/testsuite/reftests/picture-load-invalid-file.ref.ui 
b/testsuite/reftests/picture-load-invalid-file.ref.ui
new file mode 100644
index 0000000000..3500931a6b
--- /dev/null
+++ b/testsuite/reftests/picture-load-invalid-file.ref.ui
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkWindow" id="window1">
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkPicture">
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/picture-load-invalid-file.ui b/testsuite/reftests/picture-load-invalid-file.ui
new file mode 100644
index 0000000000..8ca26cfacf
--- /dev/null
+++ b/testsuite/reftests/picture-load-invalid-file.ui
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkWindow" id="window1">
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkPicture">
+        <property name="file">does://not.com/exist.png</property>
+      </object>
+    </child>
+  </object>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]