layout->addWidget(m_ruler);
connect(m_audioSlider, SIGNAL(valueChanged(int)), this, SLOT(slotSetVolume(int)));
- connect(m_ruler, SIGNAL(seekRenderer(int)), this, SLOT(slotSeek(int)));
connect(render, SIGNAL(durationChanged(int)), this, SLOT(adjustRulerSize(int)));
connect(render, SIGNAL(rendererStopped(int)), this, SLOT(rendererStopped(int)));
connect(render, SIGNAL(rendererPosition(int)), this, SLOT(seekCursor(int)));
m_toolbar->addWidget(spacer);
m_timePos = new TimecodeDisplay(m_monitorManager->timecode(), this);
m_toolbar->addWidget(m_timePos);
- connect(m_timePos, SIGNAL(editingFinished()), this, SLOT(slotSeek()));
+ connect(m_timePos, SIGNAL(timeCodeEditingFinished()), this, SLOT(slotSeek()));
m_toolbar->setMaximumHeight(s * 1.5);
layout->addWidget(m_toolbar);
}
bool Monitor::createOpenGlWidget(QWidget *parent, const QString profile)
{
render = new Render(id(), 0, profile, this);
+ kDebug()<<"+++++++++++++\nCREATED OPENGL WIDG\n++++++++++++++";
m_glWidget = new VideoGLWidget(parent);
if (m_glWidget == NULL) {
// Creation failed, we are in trouble...
QAction *go = m_markerMenu->addAction(position);
go->setData(pos);
}
- m_ruler->setMarkers(marks);
- } else m_ruler->setMarkers(QList <int>());
+ }
+ m_ruler->setMarkers(markers);
m_markerMenu->setEnabled(!m_markerMenu->isEmpty());
}
}
if (fast) {
int delta = m_monitorManager->timecode().fps();
if (eventDelta > 0) delta = 0 - delta;
- slotSeek(render->requestedSeekPosition - delta);
+ if (render->requestedSeekPosition != SEEK_INACTIVE)
+ slotSeek(render->requestedSeekPosition - delta);
+ else slotSeek(render->seekFramePosition() - delta);
} else {
if (eventDelta >= 0) slotForwardOneFrame();
else slotRewindOneFrame();
slotActivateMonitor();
if (speed == 0) {
double currentspeed = render->playSpeed();
- if (currentspeed >= 0) render->play(-2);
- else render->play(currentspeed * 2);
+ if (currentspeed >= 0) render->play(-1);
+ else switch((int) currentspeed) {
+ case -1:
+ render->play(-2);
+ break;
+ case -2:
+ render->play(-3);
+ break;
+ case -3:
+ render->play(-5);
+ break;
+ default:
+ render->play(-8);
+ }
} else render->play(speed);
//m_playAction->setChecked(true);
m_playAction->setIcon(m_pauseIcon);
slotActivateMonitor();
if (speed == 0) {
double currentspeed = render->playSpeed();
- if (currentspeed <= 1) render->play(2);
- else render->play(currentspeed * 2);
+ if (currentspeed <= 0) render->play(1);
+ else switch((int) currentspeed) {
+ case 1:
+ render->play(2);
+ break;
+ case 2:
+ render->play(3);
+ break;
+ case 3:
+ render->play(5);
+ break;
+ default:
+ render->play(8);
+ }
} else render->play(speed);
//m_playAction->setChecked(true);
m_playAction->setIcon(m_pauseIcon);
void Monitor::seekCursor(int pos)
{
- //slotActivateMonitor();
if (m_ruler->slotNewValue(pos)) {
checkOverlay();
m_timePos->setValue(pos);
void Monitor::start()
{
if (!isVisible() || !isActive()) return;
- if (render) render->doRefresh();// start();
+ if (render) render->startConsumer();
}
void Monitor::refreshMonitor(bool visible)
m_playAction->setIcon(m_playIcon);
render->switchPlay(false);
}
+ m_ruler->refreshRuler();
}
void Monitor::slotPlayZone()
{
if (render == NULL) return;
if (clip == NULL && m_currentClip != NULL) {
+ m_currentClip->lastSeekPosition = render->seekFramePosition();
kDebug()<<"// SETTING NULL CLIP MONITOR";
m_currentClip = NULL;
m_length = -1;
}
if (clip != m_currentClip || forceUpdate) {
+ if (m_currentClip) m_currentClip->lastSeekPosition = render->seekFramePosition();
m_currentClip = clip;
- if (m_currentClip) slotActivateMonitor();
+ if (position == -1) position = clip->lastSeekPosition;
updateMarkers(clip);
Mlt::Producer *prod = NULL;
if (clip) prod = clip->getCloneProducer();