diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 40ecc6fc4..01900b8f7 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -68,7 +68,6 @@ Timeline::Timeline(QWidget *parent) : transition_tool_post_clip(-1), hand_moving(false), block_repaints(false), - last_frame(0), scroll(0) { setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); @@ -443,11 +442,6 @@ void Timeline::repaint_timeline() { if (sequence != nullptr) { set_sb_max(); - - if (last_frame != sequence->playhead) { - audio_monitor->update(); - last_frame = sequence->playhead; - } } } } diff --git a/panels/timeline.h b/panels/timeline.h index f126dc50f..a081a869c 100644 --- a/panels/timeline.h +++ b/panels/timeline.h @@ -231,7 +231,6 @@ private: QVector tool_buttons; void decheck_tool_buttons(QObject* sender); void set_tool(int tool); - long last_frame; int scroll; void set_sb_max(); @@ -249,7 +248,7 @@ private: QPushButton* zoomOutButton; QPushButton* recordButton; QPushButton* addButton; - QWidget* tool_button_widget; + QWidget* tool_button_widget; }; #endif // TIMELINE_H diff --git a/panels/viewer.cpp b/panels/viewer.cpp index c296be36e..ac90174c3 100644 --- a/panels/viewer.cpp +++ b/panels/viewer.cpp @@ -560,7 +560,7 @@ void Viewer::setup_ui() { QHBoxLayout* current_timecode_container_layout = new QHBoxLayout(current_timecode_container); current_timecode_container_layout->setSpacing(0); current_timecode_container_layout->setMargin(0); - current_timecode_slider = new LabelSlider(current_timecode_container); + current_timecode_slider = new LabelSlider(current_timecode_container); lower_control_layout->addWidget(current_timecode_container); QWidget* playback_controls = new QWidget(lower_controls); diff --git a/playback/audio.cpp b/playback/audio.cpp index bfbe73067..f007416eb 100644 --- a/playback/audio.cpp +++ b/playback/audio.cpp @@ -178,19 +178,15 @@ int AudioSenderThread::send_audio_to_output(unsigned long offset, int max) { averages.resize(channels); averages.fill(0); - for (int i=0;iaudio_monitor->set_value(averages); diff --git a/ui/audiomonitor.cpp b/ui/audiomonitor.cpp index 52003f72f..45fa8d573 100644 --- a/ui/audiomonitor.cpp +++ b/ui/audiomonitor.cpp @@ -21,13 +21,22 @@ extern "C" { AudioMonitor::AudioMonitor(QWidget *parent) : QWidget(parent) { - values.resize(2); - values.fill(1.0); + clear_timer.setInterval(500); + connect(&clear_timer, SIGNAL(timeout()), this, SLOT(clear())); } void AudioMonitor::set_value(const QVector &ivalues) { values = ivalues; update(); + + QMetaObject::invokeMethod(&clear_timer, "start"); +} + +void AudioMonitor::clear() { + clear_timer.stop(); + + values.fill(1); + update(); } void AudioMonitor::resizeEvent(QResizeEvent *e) { @@ -39,10 +48,9 @@ void AudioMonitor::resizeEvent(QResizeEvent *e) { } void AudioMonitor::paintEvent(QPaintEvent *) { - if (sequence != nullptr) { + if (sequence != nullptr && values.size() > 0) { QPainter p(this); int channel_x = AUDIO_MONITOR_GAP; -// int channel_count = av_get_channel_layout_nb_channels(sequence->audio_layout); int channel_count = values.size(); int channel_width = (width()/channel_count) - AUDIO_MONITOR_GAP; int i; @@ -53,6 +61,7 @@ void AudioMonitor::paintEvent(QPaintEvent *) { bool peak = false; r.setHeight(qRound(r.height()*(values.at(i)))); + peak = (r.height() == 0); QRect peak_rect(channel_x, 0, channel_width, AUDIO_MONITOR_PEAK_HEIGHT); if (peak) { diff --git a/ui/audiomonitor.h b/ui/audiomonitor.h index c24044f0b..f0da1dc1c 100644 --- a/ui/audiomonitor.h +++ b/ui/audiomonitor.h @@ -2,6 +2,7 @@ #define AUDIOMONITOR_H #include +#include class AudioMonitor : public QWidget { @@ -21,6 +22,10 @@ public slots: private: QLinearGradient gradient; QVector values; + QTimer clear_timer; + +private slots: + void clear(); }; #endif // AUDIOMONITOR_H