summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
c804938)
svn path=/trunk/kdenlive/; revision=5988
}
if (prod) {
adjustProducerProperties(prod, getId() + "_", false, false);
}
if (prod) {
adjustProducerProperties(prod, getId() + "_", false, false);
+ if (!m_properties.contains("proxy_out")) {
+ // Adjust length in case...
+ prod->set("length", m_properties.value("duration").toInt());
+ prod->set("out", m_properties.value("out").toInt());
+ }
{
if (!m_activeDocument) return;
DocClipBase *clip = m_activeDocument->clipManager()->getClipById(id);
{
if (!m_activeDocument) return;
DocClipBase *clip = m_activeDocument->clipManager()->getClipById(id);
if (clip->numReferences() > 0) m_activeTimeline->projectView()->slotUpdateClip(id);
if (m_clipMonitor->activeClip() && m_clipMonitor->activeClip()->getId() == id) {
Mlt::Producer *monitorProducer = clip->getCloneProducer();
if (clip->numReferences() > 0) m_activeTimeline->projectView()->slotUpdateClip(id);
if (m_clipMonitor->activeClip() && m_clipMonitor->activeClip()->getId() == id) {
Mlt::Producer *monitorProducer = clip->getCloneProducer();
- if (clip) m_clipMonitor->updateClipProducer(monitorProducer);
- }
- if (clip) {
- clip->cleanupProducers();
+ m_clipMonitor->updateClipProducer(monitorProducer);
+ clip->cleanupProducers();
}
void MainWindow::slotConnectMonitors()
}
void MainWindow::slotConnectMonitors()
return m_monitorManager->isActive(m_name);
}
return m_monitorManager->isActive(m_name);
}
-void Monitor::activateMonitor()
+bool Monitor::activateMonitor()
- m_monitorManager->activateMonitor(m_name);
+ return m_monitorManager->activateMonitor(m_name);
}
void Monitor::setTimePos(const QString &pos)
}
void Monitor::setTimePos(const QString &pos)
void Monitor::refreshMonitor(bool visible)
{
if (visible && render) {
void Monitor::refreshMonitor(bool visible)
{
if (visible && render) {
- activateMonitor();
- render->doRefresh(); //askForRefresh();
+ if (!activateMonitor()) {
+ // the monitor was already active, simply refreshClipThumbnail
+ render->doRefresh();
+ }
{
if (render == NULL) return;
activateMonitor();
{
if (render == NULL) return;
activateMonitor();
- if (render->playSpeed() == 0) {
+ if (render->playSpeed() == 0.0) {
m_playAction->setIcon(m_pauseIcon);
render->switchPlay(true);
} else {
m_playAction->setIcon(m_pauseIcon);
render->switchPlay(true);
} else {
void slotSeek(int pos);
void stop();
void start();
void slotSeek(int pos);
void stop();
void start();
- void activateMonitor();
+ bool activateMonitor();
void slotPlay();
void slotPlayZone();
void slotLoopZone();
void slotPlay();
void slotPlayZone();
void slotLoopZone();
m_monitorsList.removeAll(monitor);
}
m_monitorsList.removeAll(monitor);
}
-void MonitorManager::activateMonitor(QString name)
+bool MonitorManager::activateMonitor(const QString &name)
{
if (m_clipMonitor == NULL || m_projectMonitor == NULL)
{
if (m_clipMonitor == NULL || m_projectMonitor == NULL)
if (m_activeMonitor && m_activeMonitor->name() == name)
if (m_activeMonitor && m_activeMonitor->name() == name)
m_activeMonitor = NULL;
for (int i = 0; i < m_monitorsList.count(); i++) {
if (m_monitorsList.at(i)->name() == name) {
m_activeMonitor = NULL;
for (int i = 0; i < m_monitorsList.count(); i++) {
if (m_monitorsList.at(i)->name() == name) {
else m_monitorsList.at(i)->stop();
}
if (m_activeMonitor) {
else m_monitorsList.at(i)->stop();
}
if (m_activeMonitor) {
+ m_activeMonitor->blockSignals(true);
m_activeMonitor->parentWidget()->raise();
m_activeMonitor->start();
m_activeMonitor->parentWidget()->raise();
m_activeMonitor->start();
+ m_activeMonitor->blockSignals(false);
}
emit checkColorScopes();
}
emit checkColorScopes();
+ return (m_activeMonitor != NULL);
}
bool MonitorManager::isActive(const QString &name) const
}
bool MonitorManager::isActive(const QString &name) const
/** @brief Activates a monitor.
* @param name name of the monitor to activate */
/** @brief Activates a monitor.
* @param name name of the monitor to activate */
- void activateMonitor(QString name = QString());
+ bool activateMonitor(const QString &name = QString());
bool isActive(const QString &name) const;
void slotPlay();
void slotPause();
bool isActive(const QString &name) const;
void slotPlay();
void slotPause();
m_mltProducer = m_blackClip->cut(0, 1);
m_mltConsumer->connect(*m_mltProducer);
m_mltProducer->set_speed(0.0);
m_mltProducer = m_blackClip->cut(0, 1);
m_mltConsumer->connect(*m_mltProducer);
m_mltProducer->set_speed(0.0);
+ m_refreshTimer.setSingleShot(true);
+ m_refreshTimer.setInterval(50);
+ connect(&m_refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
int Render::resetProfile(const QString &profileName, bool dropSceneList)
{
int Render::resetProfile(const QString &profileName, bool dropSceneList)
{
if (m_mltConsumer) {
if (m_externalConsumer == KdenliveSettings::external_display()) {
if (KdenliveSettings::external_display() && m_activeProfile == profileName) return 1;
if (m_mltConsumer) {
if (m_externalConsumer == KdenliveSettings::external_display()) {
if (KdenliveSettings::external_display() && m_activeProfile == profileName) return 1;
int Render::setProducer(Mlt::Producer *producer, int position)
{
int Render::setProducer(Mlt::Producer *producer, int position)
{
QMutexLocker locker(&m_mutex);
QString currentId;
int consumerPosition = 0;
QMutexLocker locker(&m_mutex);
QString currentId;
int consumerPosition = 0;
int Render::setSceneList(QString playlist, int position)
{
int Render::setSceneList(QString playlist, int position)
{
QMutexLocker locker(&m_mutex);
if (m_winid == -1) return -1;
int error = 0;
QMutexLocker locker(&m_mutex);
if (m_winid == -1) return -1;
int error = 0;
if (m_mltConsumer->is_stopped()) {
m_mltConsumer->start();
}
if (m_mltConsumer->is_stopped()) {
m_mltConsumer->start();
}
- m_mltConsumer->set("refresh", "1");
m_mltProducer->set_speed(1.0);
m_mltProducer->set_speed(1.0);
+ m_mltConsumer->set("refresh", "1");
} else if (!play) {
m_mltProducer->set_speed(0.0);
m_mltConsumer->set("refresh", 0);
} else if (!play) {
m_mltProducer->set_speed(0.0);
m_mltConsumer->set("refresh", 0);
void Render::doRefresh()
{
void Render::doRefresh()
{
- // Use a Timer so that we don't refresh too much
- QMutexLocker locker(&m_mutex);
+ m_refreshTimer.start();
+ /*QMutexLocker locker(&m_mutex);
- if (m_mltConsumer->is_stopped()) m_mltConsumer->start();
+ if (m_mltConsumer->is_stopped()) {
+ kDebug()<<"pppppppppppppppp\n\nSTARTING CONSUMER: "<<m_name<<m_mltConsumer->start();
+ }
+ //m_mltProducer->set_speed(1);
m_mltConsumer->set("refresh", 1);
m_mltConsumer->set("refresh", 1);
+ //m_mltProducer->set_speed(0);
+ }*/
QString m_activeProfile;
QTimer *m_osdTimer;
QString m_activeProfile;
QTimer *m_osdTimer;
QMutex m_mutex;
QMutex m_infoMutex;
QMutex m_mutex;
QMutex m_infoMutex;