[ekiga/ds-gsettings3] Audio/Viceo: Let the engine handle unexisting devices.



commit 8bb93ede1077d06b8eaf54b2b4aed0b588c9906c
Author: Damien Sandras <dsandras beip be>
Date:   Sat Nov 23 17:20:55 2013 +0100

    Audio/Viceo: Let the engine handle unexisting devices.

 lib/engine/audioinput/audioinput-core.cpp          |    5 ++++-
 lib/engine/audiooutput/audiooutput-core.cpp        |    4 ++++
 lib/engine/gui/gtk-frontend/preferences-window.cpp |    8 ++------
 lib/engine/videoinput/videoinput-core.cpp          |    7 ++++++-
 4 files changed, 16 insertions(+), 8 deletions(-)
---
diff --git a/lib/engine/audioinput/audioinput-core.cpp b/lib/engine/audioinput/audioinput-core.cpp
index f26e1a0..989654c 100644
--- a/lib/engine/audioinput/audioinput-core.cpp
+++ b/lib/engine/audioinput/audioinput-core.cpp
@@ -1,4 +1,3 @@
-//
 /*
  * Ekiga -- A VoIP and Video-Conferencing application
  * Copyright (C) 2000-2009 Damien Sandras <dsandras seconix com>
@@ -194,8 +193,12 @@ AudioInputCore::set_device (const std::string& device_string)
     device.type = AUDIO_INPUT_FALLBACK_DEVICE_TYPE;
     device.source = AUDIO_INPUT_FALLBACK_DEVICE_SOURCE;
     device.name = AUDIO_INPUT_FALLBACK_DEVICE_NAME;
+    found = false;
   }
 
+  if (!found)
+    g_settings_set_string (audio_device_settings, "input-device", device.GetString ().c_str ());
+
   internal_set_device (device);
 
   desired_device  = device;
diff --git a/lib/engine/audiooutput/audiooutput-core.cpp b/lib/engine/audiooutput/audiooutput-core.cpp
index 7c0bba2..a097345 100644
--- a/lib/engine/audiooutput/audiooutput-core.cpp
+++ b/lib/engine/audiooutput/audiooutput-core.cpp
@@ -180,9 +180,13 @@ void AudioOutputCore::setup_audio_device (AudioOutputPS device_idx)
     device.type   = AUDIO_OUTPUT_FALLBACK_DEVICE_TYPE;
     device.source = AUDIO_OUTPUT_FALLBACK_DEVICE_SOURCE;
     device.name   = AUDIO_OUTPUT_FALLBACK_DEVICE_NAME;
+    found = false;
   }
 
   PTRACE(1, "AudioOutputCore\tSet " << (device_idx == primary ? "primary" : "secondary") << " audio device 
to " << device.name);
+  if (!found)
+    g_settings_set_string ((device_idx == primary)?audio_device_settings:sound_events_settings,
+                           "output-device", device.GetString ().c_str ());
   set_device (device_idx, device);
 
   if (audio_device_settings_signals[device_idx] == 0 && device_idx == primary)
diff --git a/lib/engine/gui/gtk-frontend/preferences-window.cpp 
b/lib/engine/gui/gtk-frontend/preferences-window.cpp
index 88d6f05..db1c1cd 100644
--- a/lib/engine/gui/gtk-frontend/preferences-window.cpp
+++ b/lib/engine/gui/gtk-frontend/preferences-window.cpp
@@ -1258,9 +1258,6 @@ gm_pw_string_option_menu_new (GtkWidget *grid,
 
     cpt++;
   }
-  std::cout << "FIXME: Should be handled by the engine" << std::endl << std::flush;
-  if (!found)
-    settings->set_string (key, options [0]);
 
   g_settings_bind (settings->get_g_settings (), key.c_str (),
                    option_menu, "active-id", G_SETTINGS_BIND_DEFAULT);
@@ -1465,11 +1462,10 @@ gm_pw_spin_new (GtkWidget* grid,
   adj = (GtkAdjustment *)
     gtk_adjustment_new (settings->get_int (key),
                        min, max, step,
-                       10.0, 0.0);
+                       1.0, 1.0);
+  spin_button = gtk_spin_button_new (adj, 1.0, 0);
   g_settings_bind (settings->get_g_settings (), key.c_str (),
                    adj, "value", G_SETTINGS_BIND_DEFAULT);
-
-  spin_button = gtk_spin_button_new (adj, 1.0, 0);
   if (box)
     gtk_box_pack_start (GTK_BOX (hbox), spin_button, FALSE, FALSE,
                        1 * 2);
diff --git a/lib/engine/videoinput/videoinput-core.cpp b/lib/engine/videoinput/videoinput-core.cpp
index e062f31..1f0bf5f 100644
--- a/lib/engine/videoinput/videoinput-core.cpp
+++ b/lib/engine/videoinput/videoinput-core.cpp
@@ -292,6 +292,7 @@ void VideoInputCore::get_devices (std::vector <VideoInputDevice> & devices)
 void VideoInputCore::set_device(const VideoInputDevice & _device, int channel, VideoInputFormat format)
 {
   PWaitAndSignal m(core_mutex);
+  GSettings* settings = device_settings->get_g_settings ();
   VideoInputDevice device;
 
   /* Check if device exists */
@@ -320,6 +321,7 @@ void VideoInputCore::set_device(const VideoInputDevice & _device, int channel, V
     device.type = VIDEO_INPUT_FALLBACK_DEVICE_TYPE;
     device.source = VIDEO_INPUT_FALLBACK_DEVICE_SOURCE;
     device.name = VIDEO_INPUT_FALLBACK_DEVICE_NAME;
+    found = false;
   }
 
   if (format >= VI_FORMAT_MAX) {
@@ -327,8 +329,11 @@ void VideoInputCore::set_device(const VideoInputDevice & _device, int channel, V
     format = (VideoInputFormat) 3;
   }
 
+  if (!found)
+    g_settings_set_string (settings, "input-device", device.GetString ().c_str ());
+
   internal_set_device (device, channel, format);
-  desired_device  = device;
+  desired_device  = _device;
 }
 
 void VideoInputCore::add_device (const std::string & source, const std::string & device_name, unsigned 
capabilities, HalManager* /*manager*/)


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