summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2013-06-18 13:45:38 +0200
committerHans de Goede <hdegoede@redhat.com>2013-09-17 14:57:41 +0200
commit2a27acbbb6786e8a9b35e1c483ceb9dc5b097839 (patch)
tree268f7ada54d259a84726af61ba67d54acedcf795
parenta1805cadf3e6f7396a323c26e391cd91c28c829f (diff)
cheese: Avoid unnecessary calls to switch_camera_device()
And thus avoid stopping and restarting the stream for no reason. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
-rw-r--r--src/cheese-preferences.vala12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/cheese-preferences.vala b/src/cheese-preferences.vala
index 06929f5..723a916 100644
--- a/src/cheese-preferences.vala
+++ b/src/cheese-preferences.vala
@@ -26,6 +26,7 @@ public class Cheese.PreferencesDialog : GLib.Object
private Cheese.Camera camera;
private bool camera_is_setup;
private bool camera_is_playing;
+ private string camera_device_node;
private GLib.Settings settings;
@@ -178,7 +179,8 @@ public class Cheese.PreferencesDialog : GLib.Object
device = camera.get_selected_device ();
if (device == null)
return;
- settings.set_string ("camera", device.get_device_node ());
+ camera_device_node = device.get_device_node ();
+ settings.set_string ("camera", camera_device_node);
setup_resolutions_for_device (device);
for (bool next = camera_model.get_iter_first (out iter); next;
@@ -281,10 +283,16 @@ public class Cheese.PreferencesDialog : GLib.Object
TreeIter iter;
Cheese.CameraDevice dev;
+ string dev_node;
combo.get_active_iter (out iter);
combo.model.get (iter, 1, out dev);
- camera.set_device_by_device_node (dev.get_device_node ());
+ dev_node = dev.get_device_node ();
+
+ if (dev_node == camera_device_node)
+ return;
+
+ camera.set_device_by_device_node (dev_node);
camera.switch_camera_device ();
camera_play ();
}