cleaned up viewer refactor

This commit is contained in:
itsmattkc
2022-01-02 18:43:43 -08:00
parent 4f9ac4b36d
commit a66cb853c4
4 changed files with 21 additions and 39 deletions
+15 -7
View File
@@ -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_);
+2 -20
View File
@@ -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;
}
+2 -8
View File
@@ -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.
+2 -4
View File
@@ -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;
}
};