|
 |
ecdf9b |
From 490d8d832b588d7194d6be38d7152b97ea3fe572 Mon Sep 17 00:00:00 2001
|
|
 |
ecdf9b |
From: Hans de Goede <hdegoede@redhat.com>
|
|
 |
ecdf9b |
Date: Wed, 19 Jun 2013 17:29:28 +0200
|
|
 |
ecdf9b |
Subject: [PATCH 49/50] cheese-preferences: Cleanly handle going from 1 -> 0
|
|
 |
ecdf9b |
devices
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
Cleanly handle going from 1 -> 0 devices and going from 1 -> 0 -> 1 devices.
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
Also use camera_model.iter_n_children consistently to get the number of
|
|
 |
ecdf9b |
available devices, rather then mixing and matching it with num_camera_devices
|
|
 |
ecdf9b |
and devices.len.
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
 |
ecdf9b |
---
|
|
 |
ecdf9b |
src/cheese-preferences.vala | 28 +++++++++++++++++-----------
|
|
 |
ecdf9b |
1 file changed, 17 insertions(+), 11 deletions(-)
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
|
|
 |
ecdf9b |
index a1316f9..df2ded2 100644
|
|
 |
ecdf9b |
--- a/src/cheese-preferences.vala
|
|
 |
ecdf9b |
+++ b/src/cheese-preferences.vala
|
|
 |
ecdf9b |
@@ -263,13 +263,13 @@ public class Cheese.PreferencesDialog : GLib.Object
|
|
 |
ecdf9b |
[CCode (instance_pos = -1)]
|
|
 |
ecdf9b |
public void on_source_change (Gtk.ComboBox combo)
|
|
 |
ecdf9b |
{
|
|
 |
ecdf9b |
- // TODO: Handle going from 1 to 0 devices, cleanly!
|
|
 |
ecdf9b |
- return_if_fail (camera.num_camera_devices > 0);
|
|
 |
ecdf9b |
-
|
|
 |
ecdf9b |
TreeIter iter;
|
|
 |
ecdf9b |
Cheese.CameraDevice dev;
|
|
 |
ecdf9b |
string dev_node;
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
+ if (combo.get_active () == -1)
|
|
 |
ecdf9b |
+ return;
|
|
 |
ecdf9b |
+
|
|
 |
ecdf9b |
combo.get_active_iter (out iter);
|
|
 |
ecdf9b |
combo.model.get (iter, 1, out dev);
|
|
 |
ecdf9b |
dev_node = dev.get_device_node ();
|
|
 |
ecdf9b |
@@ -532,6 +532,7 @@ public class Cheese.PreferencesDialog : GLib.Object
|
|
 |
ecdf9b |
{
|
|
 |
ecdf9b |
TreeIter iter;
|
|
 |
ecdf9b |
Cheese.CameraDevice dev = (Cheese.CameraDevice) device;
|
|
 |
ecdf9b |
+ bool was_empty = camera_model.iter_n_children (null) == 0;
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
camera_model.append (out iter);
|
|
 |
ecdf9b |
camera_model.set (iter,
|
|
 |
ecdf9b |
@@ -543,6 +544,8 @@ public class Cheese.PreferencesDialog : GLib.Object
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
if (camera_needs_setup)
|
|
 |
ecdf9b |
setup_camera ();
|
|
 |
ecdf9b |
+ else if (was_empty)
|
|
 |
ecdf9b |
+ source_combo.set_active_iter (iter);
|
|
 |
ecdf9b |
}
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
/**
|
|
 |
ecdf9b |
@@ -554,16 +557,19 @@ public class Cheese.PreferencesDialog : GLib.Object
|
|
 |
ecdf9b |
private void remove_camera_device (TreeIter iter,
|
|
 |
ecdf9b |
Cheese.CameraDevice device)
|
|
 |
ecdf9b |
{
|
|
 |
ecdf9b |
- unowned GLib.PtrArray devices = camera.get_camera_devices ();
|
|
 |
ecdf9b |
-
|
|
 |
ecdf9b |
- // Check if the camera that we want to remove, is the active one
|
|
 |
ecdf9b |
- if (device.device_node == camera_device_node)
|
|
 |
ecdf9b |
+ if (camera.num_camera_devices == 0) /* Last camera gone? */
|
|
 |
ecdf9b |
{
|
|
 |
ecdf9b |
- if (devices.len > 0)
|
|
 |
ecdf9b |
- set_new_available_camera_device (iter);
|
|
 |
ecdf9b |
- else
|
|
 |
ecdf9b |
- this.dialog.hide();
|
|
 |
ecdf9b |
+ ListStore resolution_model = new ListStore (2, typeof (string),
|
|
 |
ecdf9b |
+ typeof (Cheese.VideoFormat));
|
|
 |
ecdf9b |
+ photo_resolution_combo.model = resolution_model;
|
|
 |
ecdf9b |
+ video_resolution_combo.model = resolution_model;
|
|
 |
ecdf9b |
+ camera_error(_("No device found"));
|
|
 |
ecdf9b |
}
|
|
 |
ecdf9b |
+ else if (device.device_node == camera_device_node)
|
|
 |
ecdf9b |
+ {
|
|
 |
ecdf9b |
+ set_new_available_camera_device (iter);
|
|
 |
ecdf9b |
+ }
|
|
 |
ecdf9b |
+
|
|
 |
ecdf9b |
camera_model.remove (iter);
|
|
 |
ecdf9b |
|
|
 |
ecdf9b |
if (camera_model.iter_n_children (null) <= 1)
|
|
 |
ecdf9b |
--
|
|
 |
ecdf9b |
1.8.2.1
|
|
 |
ecdf9b |
|