diff --git a/src/client/videomanager.cpp b/src/client/videomanager.cpp index c85a694c028c18ea7d0225f4c65434f46a37e3da..cc92f9e1671dd59225710219a47915034ac5b144 100644 --- a/src/client/videomanager.cpp +++ b/src/client/videomanager.cpp @@ -79,6 +79,7 @@ setDefaultDevice(const std::string& name) { RING_DBG("Setting default device to %s", name.c_str()); ring::Manager::instance().getVideoManager().videoDeviceMonitor.setDefaultDevice(name); + ring::Manager::instance().saveConfig(); } std::map<std::string, std::string> diff --git a/src/media/video/video_device_monitor.cpp b/src/media/video/video_device_monitor.cpp index d5465fc9826bfed73faea8bf1aa5111763d5ce7a..ba1cff48e74f0f211a24cdc07395e754d7170eb5 100644 --- a/src/media/video/video_device_monitor.cpp +++ b/src/media/video/video_device_monitor.cpp @@ -109,9 +109,20 @@ VideoDeviceMonitor::getMRLForDefaultDevice() const void VideoDeviceMonitor::setDefaultDevice(const std::string& name) { - const auto it = findDeviceByName(name); - if (it != devices_.end()) - defaultDevice_ = it->name; + const auto itDev = findDeviceByName(name); + if (itDev != devices_.end()) { + defaultDevice_ = itDev->name; + + // place it at the begining of the prefs + auto itPref = findPreferencesByName(name); + if (itPref != preferences_.end()) { + auto settings = *itPref; + preferences_.erase(itPref); + preferences_.insert(preferences_.begin(), settings); + } else { + preferences_.insert(preferences_.begin(), itDev->getSettings()); + } + } } DeviceParams