svn path=/branches/KDE4/; revision=2389
}
void KdenliveDoc::setRenderer(Render *render) {
}
void KdenliveDoc::setRenderer(Render *render) {
m_render = render;
emit progressInfo(i18n("Loading playlist..."), 0);
qApp->processEvents();
m_render = render;
emit progressInfo(i18n("Loading playlist..."), 0);
qApp->processEvents();
m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path());
if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false);
slotGotProgressInfo(QString(), -1);
m_timelineArea->setTabToolTip(m_timelineArea->currentIndex(), doc->url().path());
if (m_timelineArea->count() > 1) m_timelineArea->setTabBarHidden(false);
slotGotProgressInfo(QString(), -1);
- m_projectMonitor->refreshMonitor(true);
+ //m_projectMonitor->refreshMonitor(true);
}
void MainWindow::recoverFiles(QList<KAutoSaveFile *> staleFiles) {
}
void MainWindow::recoverFiles(QList<KAutoSaveFile *> staleFiles) {
KdenliveSettings::setProject_display_ratio(doc->dar());
doc->updateAllProjectClips();
KdenliveSettings::setProject_display_ratio(doc->dar());
doc->updateAllProjectClips();
- if (m_commandStack->isClean()) kDebug() << "//////////// UNDO STACK IS CLEAN";
- else kDebug() << "//////////// UNDO STACK IS NOT CLEAN*******************";
//m_overView->setScene(trackView->projectScene());
//m_overView->scale(m_overView->width() / trackView->duration(), m_overView->height() / (50 * trackView->tracksNumber()));
//m_overView->setScene(trackView->projectScene());
//m_overView->scale(m_overView->width() / trackView->duration(), m_overView->height() / (50 * trackView->tracksNumber()));
if (render == NULL) return;
if (!m_isActive) m_monitorManager->activateMonitor(m_name);
if (!clip) return;
if (render == NULL) return;
if (!m_isActive) m_monitorManager->activateMonitor(m_name);
if (!clip) return;
- if (clip != m_currentClip || m_currentClip->producer() == NULL) {
+ if (clip != m_currentClip && clip->producer() != NULL) {
m_currentClip = clip;
render->setProducer(clip->producer(), position);
//m_ruler->slotNewValue(0);
m_currentClip = clip;
render->setProducer(clip->producer(), position);
//m_ruler->slotNewValue(0);
-Render::Render(const QString & rendererName, int winid, int extid, QWidget *parent): QObject(parent), m_name(rendererName), m_mltConsumer(NULL), m_mltProducer(NULL), m_mltTextProducer(NULL), m_winid(-1), m_framePosition(0), m_generateScenelist(false), m_isBlocked(true), m_blackClip(NULL), m_isSplitView(false) {
+Render::Render(const QString & rendererName, int winid, int extid, QWidget *parent): QObject(parent), m_name(rendererName), m_mltConsumer(NULL), m_mltProducer(NULL), m_mltTextProducer(NULL), m_winid(winid), m_externalwinid(extid), m_framePosition(0), m_isBlocked(true), m_blackClip(NULL), m_isSplitView(false) {
kDebug() << "////////// USING PROFILE: " << (char*)KdenliveSettings::current_profile().toUtf8().data();
refreshTimer = new QTimer(this);
connect(refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
kDebug() << "////////// USING PROFILE: " << (char*)KdenliveSettings::current_profile().toUtf8().data();
refreshTimer = new QTimer(this);
connect(refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
m_osdProfile = KStandardDirs::locate("data", "kdenlive/profiles/metadata.properties");
buildConsumer();
m_osdProfile = KStandardDirs::locate("data", "kdenlive/profiles/metadata.properties");
buildConsumer();
- m_externalwinid = extid;
- m_winid = winid;
Mlt::Producer *producer = new Mlt::Producer(*m_mltProfile , "colour", "black");
m_mltProducer = producer;
if (m_blackClip) delete m_blackClip;
Mlt::Producer *producer = new Mlt::Producer(*m_mltProfile , "colour", "black");
m_mltProducer = producer;
if (m_blackClip) delete m_blackClip;
/** Create the producer from the Westley QDomDocument */
void Render::setProducer(Mlt::Producer *producer, int position) {
if (m_winid == -1) return;
/** Create the producer from the Westley QDomDocument */
void Render::setProducer(Mlt::Producer *producer, int position) {
if (m_winid == -1) return;
- m_generateScenelist = true;
if (m_mltConsumer) {
m_mltConsumer->stop();
} else return;
if (m_mltConsumer) {
m_mltConsumer->stop();
} else return;
if (m_mltProducer) {
m_mltProducer->set_speed(0);
delete m_mltProducer;
if (m_mltProducer) {
m_mltProducer->set_speed(0);
delete m_mltProducer;
m_mltProducer->seek(position);
emit rendererPosition(position);
}
m_mltProducer->seek(position);
emit rendererPosition(position);
}
- m_generateScenelist = false;
/** Create the producer from the Westley QDomDocument */
void Render::setSceneList(QString playlist, int position) {
if (m_winid == -1) return;
/** Create the producer from the Westley QDomDocument */
void Render::setSceneList(QString playlist, int position) {
if (m_winid == -1) return;
- m_generateScenelist = true;
kWarning() << "////// RENDER, SET SCENE LIST: " << playlist;
kWarning() << "////// RENDER, SET SCENE LIST: " << playlist;
-
- /*
- if (!clip.is_valid()) {
- kWarning()<<" ++++ WARNING, UNABLE TO CREATE MLT PRODUCER";
- m_generateScenelist = false;
- return;
- }*/
-
if (m_mltConsumer) {
m_mltConsumer->stop();
//m_mltConsumer->set("refresh", 0);
if (m_mltConsumer) {
m_mltConsumer->stop();
//m_mltConsumer->set("refresh", 0);
kDebug() << "// NEW SCENE LIST DURATION SET TO: " << m_mltProducer->get_playtime();
connectPlaylist();
if (position != 0) {
kDebug() << "// NEW SCENE LIST DURATION SET TO: " << m_mltProducer->get_playtime();
connectPlaylist();
if (position != 0) {
- m_mltProducer->seek(position);
- emit rendererPosition(position);
+ //TODO: seek to correct place after opening project.
+ // Needs to be done from another place since it crashes here.
+ //m_mltProducer->seek(position);
+ //emit rendererPosition(position);
- m_generateScenelist = false;
- if (m_mltConsumer->is_stopped()) {
+ if (m_mltConsumer && m_mltConsumer->is_stopped()) {
kDebug() << "----- MONITOR: " << m_name << " WAS STOPPED";
if (m_mltConsumer->start() == -1) {
KMessageBox::error(qApp->activeWindow(), i18n("Could not create the video preview window.\nThere is something wrong with your Kdenlive install or your driver settings, please fix it."));
kDebug() << "----- MONITOR: " << m_name << " WAS STOPPED";
if (m_mltConsumer->start() == -1) {
KMessageBox::error(qApp->activeWindow(), i18n("Could not create the video preview window.\nThere is something wrong with your Kdenlive install or your driver settings, please fix it."));
kDebug() << "///////////// RENDER STOPPED: " << m_name;
m_isBlocked = true;
m_mltConsumer->set("refresh", 0);
kDebug() << "///////////// RENDER STOPPED: " << m_name;
m_isBlocked = true;
m_mltConsumer->set("refresh", 0);
+ m_mltConsumer->stop();
+ // delete m_mltConsumer;
+ // m_mltConsumer = NULL;
}
kDebug() << "///////////// RENDER STOP2-------";
m_isBlocked = true;
if (m_mltProducer) {
m_mltProducer->set_speed(0.0);
}
kDebug() << "///////////// RENDER STOP2-------";
m_isBlocked = true;
if (m_mltProducer) {
m_mltProducer->set_speed(0.0);
- m_mltProducer->set("out", m_mltProducer->get_length() - 1);
- kDebug() << m_mltProducer->get_length();
+ //m_mltProducer->set("out", m_mltProducer->get_length() - 1);
+ //kDebug() << m_mltProducer->get_length();
}
kDebug() << "///////////// RENDER STOP3-------";
}
}
kDebug() << "///////////// RENDER STOP3-------";
}
}
void Render::switchPlay() {
}
void Render::switchPlay() {
+ if (!m_mltProducer || !m_mltConsumer)
return;
if (m_mltProducer->get_speed() == 0.0) {
//m_isBlocked = false;
return;
if (m_mltProducer->get_speed() == 0.0) {
//m_isBlocked = false;
void Render::doRefresh() {
// Use a Timer so that we don't refresh too much
void Render::doRefresh() {
// Use a Timer so that we don't refresh too much
- m_mltConsumer->set("refresh", 1);
+ if (!m_isBlocked && m_mltConsumer) m_mltConsumer->set("refresh", 1);
}
void Render::refresh() {
}
void Render::refresh() {
void Render::emitFrameNumber(double position) {
void Render::emitFrameNumber(double position) {
- //if (m_generateScenelist) return;
m_framePosition = position;
emit rendererPosition((int) position);
//if (qApp->activeWindow()) QApplication::postEvent(qApp->activeWindow(), new PositionChangeEvent( GenTime((int) position, m_fps), m_monitorId));
m_framePosition = position;
emit rendererPosition((int) position);
//if (qApp->activeWindow()) QApplication::postEvent(qApp->activeWindow(), new PositionChangeEvent( GenTime((int) position, m_fps), m_monitorId));
void Render::emitConsumerStopped() {
// This is used to know when the playing stopped
void Render::emitConsumerStopped() {
// This is used to know when the playing stopped
- if (m_mltProducer && !m_generateScenelist) {
double pos = m_mltProducer->position();
emit rendererStopped((int) pos);
//if (qApp->activeWindow()) QApplication::postEvent(qApp->activeWindow(), new PositionChangeEvent(GenTime((int) pos, m_fps), m_monitorId + 100));
double pos = m_mltProducer->position();
emit rendererStopped((int) pos);
//if (qApp->activeWindow()) QApplication::postEvent(qApp->activeWindow(), new PositionChangeEvent(GenTime((int) pos, m_fps), m_monitorId + 100));
double m_framePosition;
double m_fps;
uint m_monitorId;
double m_framePosition;
double m_fps;
uint m_monitorId;
- bool m_generateScenelist;
/** true when monitor is in split view (several tracks at the same time) */
bool m_isSplitView;
/** true when monitor is in split view (several tracks at the same time) */
bool m_isSplitView;