summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2013-06-18 11:14:16 +0200
committerHans de Goede <hdegoede@redhat.com>2013-09-17 14:37:43 +0200
commit6ddb9d4fd4ccf98028c83b924705f66753a16524 (patch)
tree7e824c85f7b1d3915616e731dc156efc713437a1
parente898276f5fd5c4748766748340fd2cde898ca2e3 (diff)
cheese-preferences: Add camera_changed () method
This centralizes camera-change handling, and adds a check for their being no camera removing a whole bunch of glib Critical messages being printed when cheese is started without a camera. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r--src/cheese-preferences.vala34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
index f04660a..44e3547 100644
--- a/src/cheese-preferences.vala
+++ b/src/cheese-preferences.vala
@@ -128,6 +128,28 @@ public class Cheese.PreferencesDialog : GLib.Object
}
/**
+ * Update resolution list and save the current camera to settings.
+ */
+ private void camera_changed ()
+ {
+ Cheese.CameraDevice device, iter_device;
+ TreeIter iter;
+
+ device = camera.get_selected_device ();
+ if (device == null)
+ return;
+ settings.set_string ("camera", device.get_device_node ());
+ setup_resolutions_for_device (device);
+
+ for (bool next = camera_model.get_iter_first (out iter); next;
+ next = camera_model.iter_next (ref iter)) {
+ camera_model.get (iter, 1, out iter_device, -1);
+ if (iter_device == device)
+ source_combo.set_active_iter (iter);
+ }
+ }
+
+ /**
* Initialize and populate the camera device combo box model.
*/
private void initialize_camera_devices ()
@@ -140,8 +162,7 @@ public class Cheese.PreferencesDialog : GLib.Object
devices.foreach(add_camera_device);
- settings.set_string ("camera", camera.get_selected_device ().get_device_node ());
- setup_resolutions_for_device (camera.get_selected_device ());
+ camera_changed ();
}
/**
@@ -227,8 +248,7 @@ public class Cheese.PreferencesDialog : GLib.Object
combo.model.get (iter, 1, out dev);
camera.set_device_by_device_node (dev.get_device_node ());
camera.switch_camera_device ();
- setup_resolutions_for_device (camera.get_selected_device ());
- settings.set_string ("camera", dev.get_device_node ());
+ camera_changed ();
}
/**
@@ -474,8 +494,7 @@ public class Cheese.PreferencesDialog : GLib.Object
}
}
- settings.set_string ("camera", camera.get_selected_device ().get_device_node ());
- setup_resolutions_for_device (camera.get_selected_device ());
+ camera_changed ();
}
/**
@@ -496,9 +515,6 @@ public class Cheese.PreferencesDialog : GLib.Object
0, dev.get_name () + " (" + dev.get_device_node () + ")",
1, dev);
- if (camera.get_selected_device ().get_device_node () == dev.get_device_node ())
- source_combo.set_active_iter (iter);
-
if (camera_model.iter_n_children (null) > 1)
source_combo.sensitive = true;
}