cleaned up viewer refactor
This commit is contained in:
@@ -89,6 +89,7 @@ ViewerWidget::ViewerWidget(QWidget *parent) :
|
||||
connect(display_widget_, &ViewerDisplayWidget::DragEntered, this, &ViewerWidget::DragEntered);
|
||||
connect(display_widget_, &ViewerDisplayWidget::Dropped, this, &ViewerWidget::Dropped);
|
||||
connect(display_widget_, &ViewerDisplayWidget::TextureChanged, this, &ViewerWidget::TextureChanged);
|
||||
connect(display_widget_, &ViewerDisplayWidget::QueueStarved, this, &ViewerWidget::ForceRequeueFromCurrentTime);
|
||||
connect(sizer_, &ViewerSizer::RequestScale, display_widget_, &ViewerDisplayWidget::SetMatrixZoom);
|
||||
connect(sizer_, &ViewerSizer::RequestTranslate, display_widget_, &ViewerDisplayWidget::SetMatrixTranslate);
|
||||
connect(display_widget_, &ViewerDisplayWidget::HandDragMoved, sizer_, &ViewerSizer::HandDragMove);
|
||||
@@ -537,7 +538,7 @@ void ViewerWidget::UpdateTextureFromNode()
|
||||
}
|
||||
|
||||
if (IsPlaying()) {
|
||||
qDebug() << "UpdateTextureFromNode called while playing";
|
||||
qWarning() << "UpdateTextureFromNode called while playing";
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -827,6 +828,10 @@ void ViewerWidget::FinishPlayPreprocess()
|
||||
|
||||
int ViewerWidget::DeterminePlaybackQueueSize()
|
||||
{
|
||||
if (playback_speed_ == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int64_t end_ts;
|
||||
|
||||
if (playback_speed_ > 0) {
|
||||
@@ -1192,6 +1197,8 @@ void ViewerWidget::TimebaseChangedEvent(const rational &timebase)
|
||||
|
||||
void ViewerWidget::PlaybackTimerUpdate()
|
||||
{
|
||||
Q_ASSERT(playback_speed_ != 0);
|
||||
|
||||
rational current_time = Timecode::timestamp_to_time(display_widget_->timer()->GetTimestampNow(), timebase());
|
||||
|
||||
rational min_time, max_time;
|
||||
@@ -1274,12 +1281,13 @@ void ViewerWidget::PlaybackTimerUpdate()
|
||||
}
|
||||
}
|
||||
|
||||
// We still run the queue if windows are visible even if our own display widget isn't visible
|
||||
/*while (!playback_queue_.empty() && playback_queue_.front().timestamp != GetTime()) {
|
||||
PopOldestFrameFromPlaybackQueue();
|
||||
}*/
|
||||
// NOTE: There should be some calculation here to determine how many frames need to be queued
|
||||
RequestNextFrameForQueue();
|
||||
if (IsPlaying()) {
|
||||
int count = 0;
|
||||
for (int i=display_widget_->queue()->size(); i<DeterminePlaybackQueueSize(); i++) {
|
||||
RequestNextFrameForQueue();
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (ViewerDisplayWidget *dw, playback_devices_) {
|
||||
dw->queue()->PurgeBefore(current_time, playback_speed_);
|
||||
|
||||
@@ -311,24 +311,6 @@ void ViewerDisplayWidget::dropEvent(QDropEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerDisplayWidget::showEvent(QShowEvent *event)
|
||||
{
|
||||
super::showEvent(event);
|
||||
|
||||
if (isVisible()) {
|
||||
emit VisibilityChanged(true);
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerDisplayWidget::hideEvent(QHideEvent *event)
|
||||
{
|
||||
super::hideEvent(event);
|
||||
|
||||
if (!isVisible()) {
|
||||
emit VisibilityChanged(false);
|
||||
}
|
||||
}
|
||||
|
||||
void ViewerDisplayWidget::OnPaint()
|
||||
{
|
||||
// Clear background to empty
|
||||
@@ -633,7 +615,7 @@ void ViewerDisplayWidget::UpdateFromQueue()
|
||||
bool popped = false;
|
||||
|
||||
if (queue_.empty()) {
|
||||
//ForceRequeueFromCurrentTime();
|
||||
emit QueueStarved();
|
||||
} else {
|
||||
while (!queue_.empty()) {
|
||||
const ViewerPlaybackFrame& pf = queue_.front();
|
||||
@@ -664,7 +646,7 @@ void ViewerDisplayWidget::UpdateFromQueue()
|
||||
}
|
||||
|
||||
if (queue_.empty()) {
|
||||
//ForceRequeueFromCurrentTime();
|
||||
emit QueueStarved();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -196,10 +196,10 @@ signals:
|
||||
|
||||
void Dropped(QDropEvent* event);
|
||||
|
||||
void VisibilityChanged(bool visible);
|
||||
|
||||
void TextureChanged(TexturePtr texture);
|
||||
|
||||
void QueueStarved();
|
||||
|
||||
protected:
|
||||
/**
|
||||
* @brief Override the mouse press event for the DragStarted() signal and gizmos
|
||||
@@ -222,12 +222,6 @@ protected:
|
||||
|
||||
virtual void dropEvent(QDropEvent* event) override;
|
||||
|
||||
virtual void showEvent(QShowEvent* event) override;
|
||||
|
||||
virtual void hideEvent(QHideEvent* event) override;
|
||||
|
||||
//virtual void closeEvent(QCloseEvent* event) override;
|
||||
|
||||
protected slots:
|
||||
/**
|
||||
* @brief Paint function to display the texture (received in SetTexture()) on screen.
|
||||
|
||||
@@ -52,12 +52,10 @@ public:
|
||||
|
||||
void PurgeBefore(const rational &time, int playback_speed)
|
||||
{
|
||||
int popped = 0;
|
||||
while (!this->empty() && this->front().timestamp < time) {
|
||||
popped++;
|
||||
while (!this->empty()
|
||||
&& ((playback_speed > 0 && this->front().timestamp < time) || (playback_speed < 0 && this->front().timestamp > time))) {
|
||||
this->pop_front();
|
||||
}
|
||||
if (popped > 0) qDebug() << "Purged" << popped;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user