]> git.sesse.net Git - kdenlive/commitdiff
Apply external monitor setting without restarting
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 14 Nov 2010 23:22:59 +0000 (23:22 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Sun, 14 Nov 2010 23:22:59 +0000 (23:22 +0000)
svn path=/trunk/kdenlive/; revision=5098

src/kdenlivesettingsdialog.cpp
src/renderer.cpp
src/renderer.h

index 86624d5503697592f6d87df490834853838be133..3581e45e4c0ee8bc7f35b1cc4f27d4546083ee32 100644 (file)
@@ -505,6 +505,11 @@ void KdenliveSettingsDialog::updateSettings()
         KdenliveSettings::setRmd_freq(value);
     }
 
+    if (m_configSdl.kcfg_external_display->isChecked() != KdenliveSettings::external_display()) {
+        KdenliveSettings::setExternal_display(m_configSdl.kcfg_external_display->isChecked());
+        resetProfile = true;
+    }
+
     value = m_configSdl.kcfg_audio_driver->itemData(m_configSdl.kcfg_audio_driver->currentIndex()).toString();
     if (value != KdenliveSettings::audiodrivername()) {
         KdenliveSettings::setAudiodrivername(value);
index d48e8c94c037f661c9a3b108a8df30e609d2da8a..8df9905624aa896ff67aba3fc0298aa7bec454ad 100644 (file)
@@ -100,6 +100,7 @@ Render::Render(const QString & rendererName, int winid, QString profile, QWidget
     m_mltProducer(NULL),
     m_mltProfile(NULL),
     m_framePosition(0),
+    m_externalConsumer(false),
     m_isZoneMode(false),
     m_isLoopMode(false),
     m_isSplitView(false),
@@ -196,16 +197,15 @@ void Render::buildConsumer(const QString profileName)
             m_mltConsumer = new Mlt::Consumer(*m_mltProfile, tmp);
             delete[] tmp;
             if (m_mltConsumer) {
+                m_externalConsumer = true;
                 m_mltConsumer->listen("consumer-frame-show", this, (mlt_listener) consumer_frame_show);
                 m_mltConsumer->set("terminate_on_pause", 0);
-                m_mltConsumer->set("audio_buffer", 1024);
-                m_mltConsumer->set("frequency", 48000);
                 mlt_log_set_callback(kdenlive_callback);
             }
             if (m_mltConsumer && m_mltConsumer->is_valid()) return;
         } else KMessageBox::informationList(qApp->activeWindow(), i18n("Your project's profile %1 is not compatible with the blackmagic output card. Please see supported profiles below. Switching to normal video display.", m_mltProfile->description()), BMInterface::supportedModes(KdenliveSettings::blackmagic_output_device()));
     }
-
+    m_externalConsumer = false;
     QString videoDriver = KdenliveSettings::videodrivername();
     if (!videoDriver.isEmpty()) {
         if (videoDriver == "x11_noaccel") {
@@ -270,15 +270,17 @@ Mlt::Producer *Render::invalidProducer(const QString &id)
 int Render::resetProfile(const QString profileName)
 {
     if (m_mltConsumer) {
-        if (KdenliveSettings::external_display() && m_activeProfile == profileName) return 1;
-        QString videoDriver = KdenliveSettings::videodrivername();
-        QString currentDriver = m_mltConsumer->get("video_driver");
-        if (getenv("SDL_VIDEO_YUV_HWACCEL") != NULL && currentDriver == "x11") currentDriver = "x11_noaccel";
-        QString background = KdenliveSettings::window_background().name();
-        QString currentBackground = m_mltConsumer->get("window_background");
-        if (m_activeProfile == profileName && currentDriver == videoDriver && background == currentBackground) {
-            kDebug() << "reset to same profile, nothing to do";
-            return 1;
+        if (m_externalConsumer == KdenliveSettings::external_display()) {
+            if (KdenliveSettings::external_display() && m_activeProfile == profileName) return 1;
+            QString videoDriver = KdenliveSettings::videodrivername();
+            QString currentDriver = m_mltConsumer->get("video_driver");
+            if (getenv("SDL_VIDEO_YUV_HWACCEL") != NULL && currentDriver == "x11") currentDriver = "x11_noaccel";
+            QString background = KdenliveSettings::window_background().name();
+            QString currentBackground = m_mltConsumer->get("window_background");
+            if (m_activeProfile == profileName && currentDriver == videoDriver && background == currentBackground) {
+                kDebug() << "reset to same profile, nothing to do";
+                return 1;
+            }
         }
 
         if (m_isSplitView) slotSplitView(false);
index 3fca05c8946d0c8f7662a35c3b7a3660c5de2c16..a7e2ff4fb7afb342f0c1110f1552ef481a7dd916 100644 (file)
@@ -271,6 +271,7 @@ private:
     Mlt::Profile *m_mltProfile;
     double m_framePosition;
     double m_fps;
+    bool m_externalConsumer;
 
     /** @brief True if we are playing a zone.
      *