X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmonitor.cpp;h=ab0cc3cfe1ef8f6f70641d769bc0a1ad20ad0c6c;hb=75ab956438547fe8d71102c8117ad37b561580eb;hp=0c2e057c1a3f8849e9bc63cef36a8de5e86ee34f;hpb=5f58037fe6286c608fc74bf3b08dd467b5630954;p=kdenlive diff --git a/src/monitor.cpp b/src/monitor.cpp index 0c2e057c..ab0cc3cf 100644 --- a/src/monitor.cpp +++ b/src/monitor.cpp @@ -19,8 +19,6 @@ #include "monitor.h" -#include "renderer.h" -#include "monitormanager.h" #include "smallruler.h" #include "docclipbase.h" #include "abstractclipitem.h" @@ -46,14 +44,13 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget *parent) : - QWidget(parent), + AbstractMonitor(parent), render(NULL), m_name(name), m_monitorManager(manager), m_currentClip(NULL), m_ruler(new SmallRuler(m_monitorManager)), m_overlay(NULL), - m_isActive(false), m_scale(1), m_length(0), m_dragStarted(false), @@ -185,8 +182,6 @@ Monitor::Monitor(QString name, MonitorManager *manager, QString profile, QWidget connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int))); connect(render, SIGNAL(rendererStopped(int)), this, SLOT(rendererStopped(int))); - //render->createVideoXWindow(m_ui.video_frame->winId(), -1); - if (name != "clip") { connect(render, SIGNAL(rendererPosition(int)), this, SIGNAL(renderPosition(int))); connect(render, SIGNAL(durationChanged(int)), this, SIGNAL(durationChanged(int))); @@ -230,7 +225,7 @@ QWidget *Monitor::container() return m_videoBox; } -QString Monitor::name() const +const QString Monitor::name() const { return m_name; } @@ -566,7 +561,13 @@ void Monitor::slotSetThumbFrame() void Monitor::slotExtractCurrentFrame() { - QImage frame = render->extractFrame(render->seekFramePosition()); + QImage frame; + // check if we are using a proxy + if (m_currentClip && !m_currentClip->getProperty("proxy").isEmpty() && m_currentClip->getProperty("proxy") != "-") { + // using proxy, use original clip url to get frame + frame = render->extractFrame(render->seekFramePosition(), m_currentClip->fileURL().path()); + } + else frame = render->extractFrame(render->seekFramePosition()); KFileDialog *fs = new KFileDialog(KUrl(), "image/png", this); fs->setOperationMode(KFileDialog::Saving); fs->setMode(KFile::File); @@ -584,14 +585,12 @@ void Monitor::slotExtractCurrentFrame() bool Monitor::isActive() const { - return m_isActive; + return m_monitorManager->isActive(m_name); } void Monitor::activateMonitor() { - if (!m_isActive) { - m_monitorManager->slotSwitchMonitors(m_name == "clip"); - } + m_monitorManager->activateMonitor(m_name); } void Monitor::setTimePos(const QString &pos) @@ -607,7 +606,7 @@ void Monitor::slotSeek() void Monitor::slotSeek(int pos) { - activateMonitor(); + //activateMonitor(); if (render == NULL) return; render->seekToFrame(pos); } @@ -700,7 +699,7 @@ void Monitor::slotForwardOneFrame(int diff) void Monitor::seekCursor(int pos) { - activateMonitor(); + //activateMonitor(); if (m_ruler->slotNewValue(pos)) { checkOverlay(); m_timePos->setValue(pos); @@ -731,21 +730,19 @@ void Monitor::adjustRulerSize(int length) void Monitor::stop() { - m_isActive = false; disconnect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); if (render) render->stop(); } void Monitor::start() { - m_isActive = true; if (render) render->start(); connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int))); } void Monitor::refreshMonitor(bool visible) { - if (visible && render && !m_isActive) { + if (visible && render) { activateMonitor(); render->doRefresh(); //askForRefresh(); } @@ -753,7 +750,7 @@ void Monitor::refreshMonitor(bool visible) void Monitor::refreshMonitor() { - if (m_isActive) { + if (isActive()) { render->doRefresh(); } } @@ -774,11 +771,12 @@ void Monitor::slotPlay() if (render->playSpeed() == 0) { //m_playAction->setChecked(true); m_playAction->setIcon(m_pauseIcon); + render->switchPlay(true); } else { //m_playAction->setChecked(false); m_playAction->setIcon(m_playIcon); + render->switchPlay(false); } - render->switchPlay(); } void Monitor::slotPlayZone() @@ -852,7 +850,7 @@ void Monitor::slotOpenFile(const QString &file) void Monitor::slotSaveZone() { if (render == NULL) return; - emit saveZone(render, m_ruler->zone()); + emit saveZone(render, m_ruler->zone(), m_currentClip); //render->setSceneList(doc, 0); } @@ -1022,6 +1020,11 @@ void Monitor::slotShowVolume() m_volumePopup->show(); } +AbstractRender *Monitor::abstractRender() +{ + return render; +} + MonitorRefresh::MonitorRefresh(QWidget* parent) : QWidget(parent) , m_renderer(NULL)