[gnome-build-meta/abderrahim/41beta: 3/3] core/cheese.bst: add patches




commit ba90e7ac6283eee1239ba1c98d94056b775de350
Author: Abderrahim Kitouni <akitouni gnome org>
Date:   Thu Aug 19 14:28:17 2021 +0100

    core/cheese.bst: add patches
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-build-meta/-/merge_requests/1264>

 elements/core/cheese.bst |   5 ++
 files/cheese/39.patch    | 122 ++++++++++++++++++++++++++++++++
 files/cheese/41.patch    | 177 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 304 insertions(+)
---
diff --git a/elements/core/cheese.bst b/elements/core/cheese.bst
index b9b20ec77..209807006 100644
--- a/elements/core/cheese.bst
+++ b/elements/core/cheese.bst
@@ -4,6 +4,11 @@ sources:
 - kind: tar
   url: gnome_downloads:cheese/3.38/cheese-3.38.0.tar.xz
   ref: 88d2732b421b903110a2628db25c0d61e219c42bdfb5971151033fba95a8d16f
+- kind: patch
+  path: files/cheese/39.patch
+- kind: patch
+  path: files/cheese/41.patch
+
 build-depends:
 - sdk/appstream-glib.bst
 - sdk/gobject-introspection.bst
diff --git a/files/cheese/39.patch b/files/cheese/39.patch
new file mode 100644
index 000000000..ae4b7d1be
--- /dev/null
+++ b/files/cheese/39.patch
@@ -0,0 +1,122 @@
+From e7046d564a6f76c1af8f5640ac9c569e07284ec0 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess hadess net>
+Date: Fri, 18 Sep 2020 12:06:45 +0200
+Subject: [PATCH 1/2] Fix infinite loop if thumbnailer is not available
+
+The code in cheese_thumb_view_idle_append_item() in
+src/thumbview/cheese-thumb-view.c didn't pop the list of items to
+thumbnail if thumbnailing failed.
+
+ #0  0x00007f4a60e55314 in open64 () at /lib64/libc.so.6
+ #1  0x00007f4a60de6386 in _IO_file_open () at /lib64/libc.so.6
+ #2  0x00007f4a60de655a in __GI__IO_file_fopen () at /lib64/libc.so.6
+ #3  0x00007f4a60dd9aad in __fopen_internal () at /lib64/libc.so.6
+ #4  0x00007f4a6157a43f in gdk_pixbuf_new_from_file () at /lib64/libgdk_pixbuf-2.0.so.0
+ #5  0x00007f4a61e84b3a in gnome_desktop_thumbnail_factory_lookup () at /lib64/libgnome-desktop-3.so.19
+ #6  0x000055cef476046f in cheese_thumb_view_idle_append_item ()
+ #7  0x00007f4a6124f47b in g_idle_dispatch () at /lib64/libglib-2.0.so.0
+ #8  0x00007f4a612537af in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
+ #9  0x00007f4a61253b38 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
+ #10 0x00007f4a61253c03 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
+ #11 0x00007f4a6146a7ca in g_application_run () at /lib64/libgio-2.0.so.0
+ #12 0x000055cef4758547 in _vala_main ()
+ #13 0x00007f4a60d8a042 in __libc_start_main () at /lib64/libc.so.6
+ #14 0x000055cef47554be in _start ()
+
+ #0  0x00007f4a60ec562d in __strlen_avx2 () at /lib64/libc.so.6
+ #1  0x00007f4a61275de8 in g_str_has_suffix () at /lib64/libglib-2.0.so.0
+ #2  0x00007f4a618c0072 in icon_name_is_symbolic () at /lib64/libgtk-3.so.0
+ #3  0x00007f4a618c00b1 in theme_dir_get_icon_suffix () at /lib64/libgtk-3.so.0
+ #4  0x00007f4a618c32ed in theme_lookup_icon () at /lib64/libgtk-3.so.0
+ #5  0x00007f4a618c3adf in real_choose_icon () at /lib64/libgtk-3.so.0
+ #6  0x00007f4a618c4762 in gtk_icon_theme_lookup_icon_for_scale () at /lib64/libgtk-3.so.0
+ #7  0x00007f4a618c5105 in gtk_icon_theme_load_icon_for_scale () at /lib64/libgtk-3.so.0
+ #8  0x000055cef47605c9 in cheese_thumb_view_idle_append_item ()
+ #9  0x00007f4a6124f47b in g_idle_dispatch () at /lib64/libglib-2.0.so.0
+ #10 0x00007f4a612537af in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
+ #11 0x00007f4a61253b38 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
+ #12 0x00007f4a61253c03 in g_main_context_iteration () at /lib64/libglib-2.0.so.0
+ #13 0x00007f4a6146a7d8 in g_application_run () at /lib64/libgio-2.0.so.0
+ #14 0x000055cef4758547 in _vala_main ()
+ #15 0x00007f4a60d8a042 in __libc_start_main () at /lib64/libc.so.6
+ #16 0x000055cef47554be in _start ()
+
+Closes: #81
+---
+ src/thumbview/cheese-thumb-view.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/thumbview/cheese-thumb-view.c b/src/thumbview/cheese-thumb-view.c
+index 1d2d88f5..232fd4b6 100644
+--- a/src/thumbview/cheese-thumb-view.c
++++ b/src/thumbview/cheese-thumb-view.c
+@@ -92,7 +92,7 @@ GtkWidget * cheese_thumb_view_new (void);
+ static gboolean
+ cheese_thumb_view_idle_append_item (gpointer data)
+ {
+-  CheeseThumbViewIdleData *item = g_queue_peek_head (data);
++  CheeseThumbViewIdleData *item = g_queue_pop_head (data);
+   CheeseThumbView         *thumb_view;
+   CheeseThumbViewPrivate  *priv;
+ 
+@@ -119,6 +119,7 @@ cheese_thumb_view_idle_append_item (gpointer data)
+   if (!info)
+   {
+     g_warning ("Invalid filename\n");
++    g_slice_free (CheeseThumbViewIdleData, item);
+     return TRUE;
+   }
+   g_file_info_get_modification_time (info, &mtime);
+@@ -167,6 +168,7 @@ cheese_thumb_view_idle_append_item (gpointer data)
+     if (error)
+     {
+       g_warning ("%s", error->message);
++      g_slice_free (CheeseThumbViewIdleData, item);
+       return TRUE;
+     }
+   }
+@@ -183,7 +185,6 @@ cheese_thumb_view_idle_append_item (gpointer data)
+   g_object_unref (pixbuf);
+   g_object_unref (file);
+   g_slice_free (CheeseThumbViewIdleData, item);
+-  g_queue_pop_head (data);
+ 
+   return TRUE;
+ }
+-- 
+GitLab
+
+
+From d2e32b97a055814af5f620d19ba49ea937730e57 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess hadess net>
+Date: Fri, 18 Sep 2020 12:09:00 +0200
+Subject: [PATCH 2/2] Show better error when file info query fails
+
+---
+ src/thumbview/cheese-thumb-view.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/thumbview/cheese-thumb-view.c b/src/thumbview/cheese-thumb-view.c
+index 232fd4b6..f01b33df 100644
+--- a/src/thumbview/cheese-thumb-view.c
++++ b/src/thumbview/cheese-thumb-view.c
+@@ -113,12 +113,14 @@ cheese_thumb_view_idle_append_item (gpointer data)
+   char                         *mime_type;
+   char                         *uri;
+   char                         *filename;
++  GError                       *error = NULL;
+ 
+-  info = g_file_query_info (file, "standard::content-type,time::modified", 0, NULL, NULL);
++  info = g_file_query_info (file, "standard::content-type,time::modified", 0, NULL, &error);
+ 
+   if (!info)
+   {
+-    g_warning ("Invalid filename\n");
++    g_warning ("Could not query file info: %s", error->message);
++    g_error_free (error);
+     g_slice_free (CheeseThumbViewIdleData, item);
+     return TRUE;
+   }
+-- 
+GitLab
+
diff --git a/files/cheese/41.patch b/files/cheese/41.patch
new file mode 100644
index 000000000..dcbd1c1b2
--- /dev/null
+++ b/files/cheese/41.patch
@@ -0,0 +1,177 @@
+From 7cf6268e54620bbbe5e6e61800c50fb0cb4bea57 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Corentin=20No=C3=ABl?= <corentin elementary io>
+Date: Fri, 16 Oct 2020 19:56:26 +0200
+Subject: [PATCH] Change GLib.PtrArray into GLib.GenericArray
+
+This is the vala-friendly way of handling GPtrArray.
+Fix several memory leaks on the go and unnecessary reference increase.
+---
+ src/cheese-preferences.vala | 26 ++++++++++++--------------
+ src/cheese-window.vala      | 22 +++++++++++-----------
+ src/vapi/cheese-common.vapi |  2 +-
+ 3 files changed, 24 insertions(+), 26 deletions(-)
+
+diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
+index f56af7e0..80a92431 100644
+--- a/src/cheese-preferences.vala
++++ b/src/cheese-preferences.vala
+@@ -100,7 +100,7 @@ public PreferencesDialog (Cheese.Camera camera)
+    */
+   private void initialize_camera_devices ()
+   {
+-    unowned GLib.PtrArray devices = camera.get_camera_devices ();
++    GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
+     camera_model = new Gtk.ListStore (2, typeof (string), typeof (Cheese.CameraDevice));
+ 
+     source_combo.model = camera_model;
+@@ -357,13 +357,13 @@ public PreferencesDialog (Cheese.Camera camera)
+    */
+   private void on_camera_update_num_camera_devices ()
+   {
+-    unowned GLib.PtrArray devices = camera.get_camera_devices ();
+-    Cheese.CameraDevice   dev;
++    GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
++    unowned Cheese.CameraDevice   dev;
+ 
+     // Add (if) / Remove (else) a camera device.
+-    if (devices.len > camera_model.iter_n_children (null))
++    if (devices.length > camera_model.iter_n_children (null))
+     {
+-      dev = (Cheese.CameraDevice) devices.index (devices.len - 1);
++      dev = devices.get (devices.length - 1);
+       add_camera_device(dev);
+     }
+     else
+@@ -382,12 +382,11 @@ public PreferencesDialog (Cheese.Camera camera)
+       bool device_removed = false;
+       devices.foreach ((device) =>
+       {
+-        var old_device = (Cheese.CameraDevice) device;
+         Cheese.CameraDevice new_device;
+         camera_model.get (iter, 1, out new_device, -1);
+ 
+         // Found the device that was removed.
+-        if (old_device != new_device)
++        if (device != new_device)
+         {
+             remove_camera_device (iter, new_device, active_device);
+             device_removed = true;
+@@ -418,17 +417,16 @@ public PreferencesDialog (Cheese.Camera camera)
+    *
+    * @param device a Cheese.CameraDevice to add to the device combo box model
+    */
+-  private void add_camera_device (void *device)
++  private void add_camera_device (Cheese.CameraDevice device)
+   {
+     TreeIter iter;
+-    Cheese.CameraDevice dev = (Cheese.CameraDevice) device;
+ 
+     camera_model.append (out iter);
+     camera_model.set (iter,
+-                      0, dev.get_name (),
+-                      1, dev);
++                      0, device.get_name (),
++                      1, device);
+ 
+-    if (camera.get_selected_device () == dev)
++    if (camera.get_selected_device () == device)
+         source_combo.set_active_iter (iter);
+ 
+     if (camera_model.iter_n_children (null) > 1)
+@@ -445,12 +443,12 @@ public PreferencesDialog (Cheese.Camera camera)
+   private void remove_camera_device (TreeIter iter, Cheese.CameraDevice device_node,
+                              Cheese.CameraDevice active_device_node)
+   {
+-      unowned GLib.PtrArray devices = camera.get_camera_devices ();
++      GLib.GenericArray<unowned Cheese.CameraDevice> devices = camera.get_camera_devices ();
+ 
+       // Check if the camera that we want to remove, is the active one
+       if (device_node == active_device_node)
+       {
+-        if (devices.len > 0)
++        if (devices.length > 0)
+           set_new_available_camera_device (iter);
+         else
+           this.hide ();
+diff --git a/src/cheese-window.vala b/src/cheese-window.vala
+index ff069808..cc119b68 100644
+--- a/src/cheese-window.vala
++++ b/src/cheese-window.vala
+@@ -1216,9 +1216,9 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
+    */
+   public void on_switch_camera_clicked ()
+   {
+-      Cheese.CameraDevice selected;
+-      Cheese.CameraDevice next = null;
+-      GLib.PtrArray cameras;
++      unowned Cheese.CameraDevice selected;
++      unowned Cheese.CameraDevice next = null;
++      GLib.GenericArray<unowned Cheese.CameraDevice> cameras;
+       uint i;
+ 
+       if (camera == null)
+@@ -1235,9 +1235,9 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
+ 
+       cameras = camera.get_camera_devices ();
+ 
+-      for (i = 0; i < cameras.len; i++)
++      for (i = 0; i < cameras.length; i++)
+       {
+-          next = (Cheese.CameraDevice )cameras.index (i);
++          next = cameras.get (i);
+ 
+           if (next == selected)
+           {
+@@ -1245,13 +1245,13 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
+           }
+       }
+ 
+-      if (i + 1 < cameras.len)
++      if (i + 1 < cameras.length)
+       {
+-          next = (Cheese.CameraDevice )cameras.index (i + 1);
++          next = cameras.get (i + 1);
+       }
+       else
+       {
+-          next = (Cheese.CameraDevice )cameras.index (0);
++          next = cameras.get (0);
+       }
+ 
+       if (next == selected)
+@@ -1269,8 +1269,8 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
+    */
+   public void set_switch_camera_button_state ()
+   {
+-      Cheese.CameraDevice selected;
+-      GLib.PtrArray cameras;
++      unowned Cheese.CameraDevice selected;
++      GLib.GenericArray<unowned Cheese.CameraDevice> cameras;
+ 
+       if (camera == null)
+       {
+@@ -1288,7 +1288,7 @@ public class Cheese.MainWindow : Gtk.ApplicationWindow
+ 
+       cameras = camera.get_camera_devices ();
+ 
+-      if (cameras.len > 1)
++      if (cameras.length > 1)
+       {
+          switch_camera_button.set_visible (true);
+          return;
+diff --git a/src/vapi/cheese-common.vapi b/src/vapi/cheese-common.vapi
+index 6517cdfc..e4ae7ad3 100644
+--- a/src/vapi/cheese-common.vapi
++++ b/src/vapi/cheese-common.vapi
+@@ -35,7 +35,7 @@ namespace Cheese
+     [CCode (has_construct_function = false)]
+     public Camera (Clutter.Actor video_texture, string camera_device_node, int x_resolution, int 
y_resolution);
+     public bool                        get_balance_property_range (string property, double min, double max, 
double def);
+-    public unowned GLib.PtrArray       get_camera_devices ();
++    public GLib.GenericArray<unowned Cheese.CameraDevice> get_camera_devices ();
+     public unowned Cheese.VideoFormat  get_current_video_format ();
+     public int                         get_num_camera_devices ();
+     public unowned Cheese.CameraDevice get_selected_device ();
+-- 
+GitLab
+


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