diff options
-rw-r--r-- | community/cheese/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch | 177 | ||||
-rw-r--r-- | community/cheese/APKBUILD | 8 |
2 files changed, 182 insertions, 3 deletions
diff --git a/community/cheese/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch b/community/cheese/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch new file mode 100644 index 00000000000..dcbd1c1b2c5 --- /dev/null +++ b/community/cheese/7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.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 + diff --git a/community/cheese/APKBUILD b/community/cheese/APKBUILD index 1a4a21a70a9..25ff165108c 100644 --- a/community/cheese/APKBUILD +++ b/community/cheese/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Rasmus Thomsen <oss@cogitri.dev> pkgname=cheese pkgver=3.38.0 -pkgrel=0 +pkgrel=1 pkgdesc="Take photos and videos with your webcam" url="https://wiki.gnome.org/Apps/Cheese" arch="all !mips64" # blocked by gst-plugins-bad @@ -32,7 +32,8 @@ makedepends=" checkdepends="xvfb-run" options="!check" # wonky tests subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs" -source="https://download.gnome.org/sources/cheese/${pkgver%.*}/cheese-$pkgver.tar.xz" +source="https://download.gnome.org/sources/cheese/${pkgver%.*}/cheese-$pkgver.tar.xz + 7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch" build() { abuild-meson . output @@ -43,4 +44,5 @@ package() { DESTDIR="$pkgdir" meson install --no-rebuild -C output } -sha512sums="210b50fc79a7b3a72c94163fe0dd76f7f29f576c1085c671c2c6c3b7f59ee362aec288f885a590ebfd9530534b6a6bad569c6df57874b9fcecf7e9f1ba9531ae cheese-3.38.0.tar.xz" +sha512sums="210b50fc79a7b3a72c94163fe0dd76f7f29f576c1085c671c2c6c3b7f59ee362aec288f885a590ebfd9530534b6a6bad569c6df57874b9fcecf7e9f1ba9531ae cheese-3.38.0.tar.xz +de93e2664331a792205c29cf893317719b182bece4185452e705cc349d48dbe46d7320a337e16d923dee4da693c07ba0542b4bc4367162212c7df549313849c2 7cf6268e54620bbbe5e6e61800c50fb0cb4bea57.patch" |