diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/multimediawidgets/qvideowidget.cpp | 18 | ||||
-rw-r--r-- | src/multimediawidgets/qvideowidget.h | 3 | ||||
-rw-r--r-- | src/plugins/common/evr/evrvideowindowcontrol.cpp | 3 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/multimediawidgets/qvideowidget.cpp b/src/multimediawidgets/qvideowidget.cpp index e9977c5a8..ab552b90d 100644 --- a/src/multimediawidgets/qvideowidget.cpp +++ b/src/multimediawidgets/qvideowidget.cpp @@ -324,6 +324,7 @@ QWindowVideoWidgetBackend::QWindowVideoWidgetBackend( control->setWinId(widget->winId()); #if defined(Q_OS_WIN) + // Disable updates to avoid flickering while resizing/moving. m_widget->setUpdatesEnabled(false); #endif } @@ -1001,6 +1002,23 @@ void QVideoWidget::paintEvent(QPaintEvent *event) } } +#if defined(Q_OS_WIN) +bool QVideoWidget::nativeEvent(const QByteArray &eventType, void *message, long *result) +{ + Q_D(QVideoWidget); + Q_UNUSED(eventType); + Q_UNUSED(result); + + MSG *mes = reinterpret_cast<MSG *>(message); + if (mes->message == WM_PAINT || mes->message == WM_ERASEBKGND) { + if (d->windowBackend) + d->windowBackend->showEvent(); + } + + return false; +} +#endif + #include "moc_qvideowidget.cpp" #include "moc_qvideowidget_p.cpp" QT_END_NAMESPACE diff --git a/src/multimediawidgets/qvideowidget.h b/src/multimediawidgets/qvideowidget.h index b1e2da46b..2a08b6fbd 100644 --- a/src/multimediawidgets/qvideowidget.h +++ b/src/multimediawidgets/qvideowidget.h @@ -81,6 +81,9 @@ public: int saturation() const; QSize sizeHint() const override; +#if defined(Q_OS_WIN) + bool nativeEvent(const QByteArray &eventType, void *message, long *result) override; +#endif public Q_SLOTS: void setFullScreen(bool fullScreen); diff --git a/src/plugins/common/evr/evrvideowindowcontrol.cpp b/src/plugins/common/evr/evrvideowindowcontrol.cpp index ce837c553..95f63c2e7 100644 --- a/src/plugins/common/evr/evrvideowindowcontrol.cpp +++ b/src/plugins/common/evr/evrvideowindowcontrol.cpp @@ -158,6 +158,9 @@ void EvrVideoWindowControl::setDisplayRect(const QRect &rect) } else { m_displayControl->SetVideoPosition(NULL, &displayRect); } + + // To refresh content immediately. + repaint(); } } |