#include "jpeg_frame_view.h"
+#include "post_to_main_thread.h"
+
#include <QGraphicsPixmapItem>
#include <QPixmap>
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
}
-void JPEGFrameView::update()
+void JPEGFrameView::update_frame()
{
- item.setPixmap(QPixmap(QString::fromStdString(filename_for_frame(stream_idx, pts))));
- fitInView(&item, Qt::KeepAspectRatio);
+ dirty = true;
+ post_to_main_thread([this]{
+ hide();
+ show();
+ });
}
void JPEGFrameView::resizeEvent(QResizeEvent *event)
{
fitInView(&item, Qt::KeepAspectRatio);
}
+
+void JPEGFrameView::paintEvent(QPaintEvent *event)
+{
+ if (dirty) {
+ dirty = false;
+ item.setPixmap(QPixmap(QString::fromStdString(filename_for_frame(stream_idx, pts))));
+ fitInView(&item, Qt::KeepAspectRatio);
+ }
+ QGraphicsView::paintEvent(event);
+}
{
this->stream_idx = stream_idx;
this->pts = pts;
- update();
+ update_frame();
}
protected:
void resizeEvent(QResizeEvent *event) override;
+ void paintEvent(QPaintEvent *event) override;
private:
- void update();
+ void update_frame();
QGraphicsPixmapItem item;
QGraphicsScene scene;
unsigned stream_idx;
int64_t pts;
+ bool dirty = false;
};
#endif // !defined(_JPEG_FRAME_VIEW_H)