moved playback functions to viewer
This commit is contained in:
+9
-82
@@ -39,7 +39,6 @@ void draw_selection_rectangle(QPainter& painter, const QRect& rect) {
|
||||
|
||||
Timeline::Timeline(QWidget *parent) :
|
||||
QDockWidget(parent),
|
||||
playing(false),
|
||||
cursor_frame(0),
|
||||
cursor_track(0),
|
||||
zoom(1.0),
|
||||
@@ -58,13 +57,14 @@ Timeline::Timeline(QWidget *parent) :
|
||||
ui(new Ui::Timeline),
|
||||
last_frame(0),
|
||||
creating(false),
|
||||
queue_audio_reset(false),
|
||||
scroll(0)
|
||||
{
|
||||
default_track_height = (QGuiApplication::primaryScreen()->logicalDotsPerInch() / 96) * TRACK_DEFAULT_HEIGHT;
|
||||
|
||||
ui->setupUi(this);
|
||||
|
||||
ui->headers->viewer = panel_sequence_viewer;
|
||||
|
||||
/* --- TEMPORARY ---
|
||||
* I feel like the rolling edit tool is unnecessary, but just
|
||||
* in case I change my mind, I'm leaving all the functionality
|
||||
@@ -95,8 +95,6 @@ Timeline::Timeline(QWidget *parent) :
|
||||
connect(ui->audioScrollbar, SIGNAL(valueChanged(int)), ui->audio_area, SLOT(setScroll(int)));
|
||||
|
||||
update_sequence();
|
||||
|
||||
connect(&playback_updater, SIGNAL(timeout()), this, SLOT(repaint_timeline()));
|
||||
}
|
||||
|
||||
Timeline::~Timeline()
|
||||
@@ -104,18 +102,6 @@ Timeline::~Timeline()
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void Timeline::go_to_start() {
|
||||
seek(0);
|
||||
}
|
||||
|
||||
void Timeline::previous_frame() {
|
||||
if (sequence->playhead > 0) seek(sequence->playhead-1);
|
||||
}
|
||||
|
||||
void Timeline::next_frame() {
|
||||
seek(sequence->playhead+1);
|
||||
}
|
||||
|
||||
void Timeline::previous_cut() {
|
||||
if (sequence->playhead > 0) {
|
||||
long p_cut = 0;
|
||||
@@ -129,7 +115,7 @@ void Timeline::previous_cut() {
|
||||
}
|
||||
}
|
||||
}
|
||||
seek(p_cut);
|
||||
panel_sequence_viewer->seek(p_cut);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,62 +134,7 @@ void Timeline::next_cut() {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (seek_enabled) seek(n_cut);
|
||||
}
|
||||
|
||||
void Timeline::reset_all_audio() {
|
||||
// reset all clip audio
|
||||
if (sequence != NULL) {
|
||||
audio_ibuffer_frame = sequence->playhead;
|
||||
audio_ibuffer_timecode = (double) audio_ibuffer_frame / sequence->frame_rate;
|
||||
|
||||
for (int i=0;i<sequence->clips.size();i++) {
|
||||
Clip* c = sequence->clips.at(i);
|
||||
if (c != NULL) {
|
||||
c->reset_audio();
|
||||
}
|
||||
}
|
||||
}
|
||||
ui->audio_monitor->reset();
|
||||
clear_audio_ibuffer();
|
||||
}
|
||||
|
||||
void Timeline::seek(long p) {
|
||||
pause();
|
||||
sequence->playhead = p;
|
||||
queue_audio_reset = true;
|
||||
repaint_timeline(false);
|
||||
}
|
||||
|
||||
void Timeline::toggle_play() {
|
||||
if (playing) {
|
||||
pause();
|
||||
} else {
|
||||
play();
|
||||
}
|
||||
}
|
||||
|
||||
void Timeline::play() {
|
||||
if (queue_audio_reset) {
|
||||
reset_all_audio();
|
||||
queue_audio_reset = false;
|
||||
}
|
||||
playhead_start = sequence->playhead;
|
||||
start_msecs = QDateTime::currentMSecsSinceEpoch();
|
||||
playback_updater.start();
|
||||
playing = true;
|
||||
panel_sequence_viewer->set_playpause_icon(false);
|
||||
audio_thread->notifyReceiver();
|
||||
}
|
||||
|
||||
void Timeline::pause() {
|
||||
playing = false;
|
||||
panel_sequence_viewer->set_playpause_icon(true);
|
||||
playback_updater.stop();
|
||||
}
|
||||
|
||||
void Timeline::go_to_end() {
|
||||
seek(sequence->getEndFrame());
|
||||
if (seek_enabled) panel_sequence_viewer->seek(n_cut);
|
||||
}
|
||||
|
||||
int Timeline::get_track_height_size(bool video) {
|
||||
@@ -277,9 +208,7 @@ void Timeline::update_sequence() {
|
||||
setWindowTitle("Timeline: <none>");
|
||||
} else {
|
||||
setWindowTitle("Timeline: " + sequence->name);
|
||||
reset_all_audio();
|
||||
repaint_timeline(false);
|
||||
playback_updater.setInterval(qFloor(1000 / sequence->frame_rate));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,11 +222,9 @@ bool Timeline::focused() {
|
||||
|
||||
void Timeline::repaint_timeline(bool changed) {
|
||||
if (changed) {
|
||||
reset_all_audio();
|
||||
panel_sequence_viewer->reset_all_audio();
|
||||
update_effect_controls();
|
||||
if (!playing) panel_sequence_viewer->viewer_widget->update();
|
||||
} else if (playing) {
|
||||
sequence->playhead = round(playhead_start + ((QDateTime::currentMSecsSinceEpoch()-start_msecs) * 0.001 * sequence->frame_rate));
|
||||
if (!panel_sequence_viewer->playing) panel_sequence_viewer->viewer_widget->update();
|
||||
}
|
||||
|
||||
ui->headers->update();
|
||||
@@ -832,7 +759,7 @@ void Timeline::paste() {
|
||||
repaint_timeline(true);
|
||||
|
||||
if (config.paste_seeks) {
|
||||
seek(paste_end);
|
||||
panel_sequence_viewer->seek(paste_end);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -890,7 +817,7 @@ void Timeline::ripple_to_in_point(bool in) {
|
||||
|
||||
repaint_timeline(true);
|
||||
|
||||
if (in) seek(in_point);
|
||||
if (in) panel_sequence_viewer->seek(in_point);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1071,7 +998,7 @@ bool Timeline::snap_to_point(long point, long* l) {
|
||||
bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bool use_workarea) {
|
||||
snapped = false;
|
||||
if (snapping) {
|
||||
if (use_playhead && !playing) {
|
||||
if (use_playhead && !panel_sequence_viewer->playing) {
|
||||
// snap to playhead
|
||||
if (snap_to_point(sequence->playhead, l)) return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user