]> git.sesse.net Git - kdenlive/blobdiff - src/recmonitor.cpp
Fix audio thumbs not displayed on project opening and abortion if audio thumbs creation
[kdenlive] / src / recmonitor.cpp
index 5671ccf4e5afa6edda6eade360d6e4bc471fb887..f94bd83be485f39f431f08e607c7e16786589ae2 100644 (file)
@@ -31,6 +31,7 @@
 #include <KIO/NetAccess>
 #include <KFileItem>
 #include <KMessageBox>
+#include <KApplication>
 
 #if KDE_IS_VERSION(4,2,0)
 #include <KDiskFreeSpaceInfo>
@@ -142,7 +143,9 @@ RecMonitor::RecMonitor(QString name, QWidget *parent) :
 
 RecMonitor::~RecMonitor()
 {
+#if KDE_IS_VERSION(4,2,0)
     m_spaceTimer.stop();
+#endif
     delete m_captureProcess;
     delete m_displayProcess;
 }
@@ -252,6 +255,7 @@ QPixmap RecMonitor::mergeSideBySide(const QPixmap& pix, const QString txt)
     res.fill(Qt::transparent);
     p.begin(&res);
     p.drawPixmap(0, 0, pix);
+    p.setPen(kapp->palette().text().color());
     p.drawText(QRect(pixWidth + 8, 0, strWidth, strHeight), 0, txt);
     p.end();
     return res;
@@ -277,7 +281,7 @@ void RecMonitor::slotDisconnect()
         m_didCapture = false;
         slotStartCapture(false);
         m_discAction->setIcon(KIcon("network-disconnect"));
-        m_discAction->setText(i18n("Disonnect"));
+        m_discAction->setText(i18n("Disconnect"));
         m_recAction->setEnabled(true);
         m_stopAction->setEnabled(true);
         m_playAction->setEnabled(true);
@@ -311,10 +315,6 @@ void RecMonitor::slotStopCapture()
         m_isPlaying = false;
         break;
     case VIDEO4LINUX:
-        m_captureProcess->write("q\n", 3);
-        QTimer::singleShot(1000, m_captureProcess, SLOT(kill()));
-
-        break;
     case SCREENGRAB:
         m_captureProcess->write("q\n", 3);
         QTimer::singleShot(1000, m_captureProcess, SLOT(kill()));
@@ -443,7 +443,9 @@ void RecMonitor::slotRecord()
         m_isCapturing = true;
         m_didCapture = true;
         m_captureProcess->write("c\n", 3);
+#if KDE_IS_VERSION(4,2,0)
         m_spaceTimer.start();
+#endif
         return;
     }
     if (m_captureProcess->state() == QProcess::NotRunning) {
@@ -480,7 +482,7 @@ void RecMonitor::slotRecord()
                 break;
             default:
                 // Region capture
-                m_captureArgs << "-width" << QString::number(KdenliveSettings::rmd_width()) << "-height" << QString::number(KdenliveSettings::rmd_height());
+                m_captureArgs << "--width" << QString::number(KdenliveSettings::rmd_width()) << "--height" << QString::number(KdenliveSettings::rmd_height());
                 if (!KdenliveSettings::rmd_follow_mouse()) {
                     m_captureArgs << "-x" << QString::number(KdenliveSettings::rmd_offsetx()) << "-y" << QString::number(KdenliveSettings::rmd_offsety());
                 } else {
@@ -489,25 +491,32 @@ void RecMonitor::slotRecord()
                 }
                 break;
             }
+            if (KdenliveSettings::rmd_hide_mouse()) m_captureArgs << "--no-cursor";
             m_isCapturing = true;
             if (KdenliveSettings::rmd_capture_audio()) {
-                m_captureArgs << "-freq" << KdenliveSettings::rmd_freq();
-                m_captureArgs << "-channels" << QString::number(KdenliveSettings::rmd_audio_channels());
+                m_captureArgs << "--freq" << KdenliveSettings::rmd_freq();
+                m_captureArgs << "--channels" << QString::number(KdenliveSettings::rmd_audio_channels());
                 if (KdenliveSettings::rmd_use_jack()) {
-                    m_captureArgs << "-use-jack" << KdenliveSettings::rmd_jackports();
+                    m_captureArgs << "--use-jack";
+                    QStringList ports = KdenliveSettings::rmd_jackports().split(" ", QString::SkipEmptyParts);
+                    for (int i = 0; i < ports.count(); ++i) {
+                        m_captureArgs << ports.at(i);
+                    }
                     if (KdenliveSettings::rmd_jack_buffer() > 0.0)
-                        m_captureArgs << "-ring-buffer-size" << QString::number(KdenliveSettings::rmd_jack_buffer());
+                        m_captureArgs << "--ring-buffer-size" << QString::number(KdenliveSettings::rmd_jack_buffer());
                 } else {
                     if (!KdenliveSettings::rmd_alsadevicename().isEmpty())
-                        m_captureArgs << "-device" << KdenliveSettings::rmd_alsadevicename();
+                        m_captureArgs << "--device" << KdenliveSettings::rmd_alsadevicename();
                     if (KdenliveSettings::rmd_alsa_buffer() > 0)
-                        m_captureArgs << "-buffer-size" << QString::number(KdenliveSettings::rmd_alsa_buffer());
+                        m_captureArgs << "--buffer-size" << QString::number(KdenliveSettings::rmd_alsa_buffer());
                 }
             } else m_captureArgs << "--no-sound";
 
             if (KdenliveSettings::rmd_fullshots()) m_captureArgs << "--full-shots";
-            m_captureArgs << "-workdir" << KdenliveSettings::currenttmpfolder();
-            m_captureArgs << "-fps" << QString::number(KdenliveSettings::rmd_fps()) << "-o" << m_captureFile.path();
+            m_captureArgs << "--v_bitrate" << QString::number(KdenliveSettings::rmd_bitrate());
+            m_captureArgs << "--v_quality" << QString::number(KdenliveSettings::rmd_quality());
+            m_captureArgs << "--workdir" << KdenliveSettings::currenttmpfolder();
+            m_captureArgs << "--fps" << QString::number(KdenliveSettings::rmd_fps()) << "-o" << m_captureFile.path();
             m_captureProcess->start(KdenliveSettings::rmd_path(), m_captureArgs);
             kDebug() << "// RecordMyDesktop params: " << m_captureArgs;
             break;
@@ -581,13 +590,20 @@ void RecMonitor::slotProcessStatus(QProcess::ProcessState status)
         if (m_captureProcess && m_captureProcess->exitStatus() == QProcess::CrashExit) {
             video_frame->setText(i18n("Capture crashed, please check your parameters"));
         } else {
-            if (device_selector->currentIndex() != SCREENGRAB) video_frame->setText(i18n("Not connected"));
-            else video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
+            if (device_selector->currentIndex() != SCREENGRAB) {
+                video_frame->setText(i18n("Not connected"));
+            } else {
+                if (m_captureProcess->exitCode() != 0) {
+                    video_frame->setText(i18n("Capture crashed, please check your parameters\nRecordMyDesktop exit code: %1", QString::number(m_captureProcess->exitCode())));
+                } else {
+                    video_frame->setPixmap(mergeSideBySide(KIcon("video-display").pixmap(QSize(50, 50)), i18n("Press record button\nto start screen capture\nFiles will be saved in:\n%1", KdenliveSettings::capturefolder())));
+                }
+            }
         }
         m_isCapturing = false;
-        m_spaceTimer.stop();
 
 #if KDE_IS_VERSION(4,2,0)
+        m_spaceTimer.stop();
         // update free space info
         slotUpdateFreeSpace();
 #endif
@@ -702,4 +718,5 @@ void RecMonitor::slotReadDvgrabInfo()
     m_dvinfo.updateGeometry();
 }
 
-#include "recmonitor.moc"
\ No newline at end of file
+#include "recmonitor.moc"
+