summaryrefslogtreecommitdiffstats
path: root/src/multimediawidgets
diff options
context:
space:
mode:
authorVal Doroshchuk <valentyn.doroshchuk@qt.io>2018-01-22 16:03:41 +0100
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2018-03-22 11:00:39 +0000
commit4c7a376f4b4c43bc6626fe59815264f19573e288 (patch)
treebb8892d8ed80f935315fca8a851f876678613f5a /src/multimediawidgets
parent1d95eee694553feb30f415a1b3eee94caad53fb0 (diff)
DirectShow: Fix blank QVideoWidget when it is paused
If playback is paused latest video frame is shown. If after that the window is deactivated (unfocused or hidden) the picture is cleared. And just empty area is shown. Provided following fixes: 1. Prevented clearing the painted video picture when the window is unfocused. 2. Repainted latest video frame again when the window gets back from hidden state to shown. Task-number: QTBUG-65780 Change-Id: I62b3c6e25133a7d08a5060a5ab9f6b35d927fbd4 Reviewed-by: Christian Stromme <christian.stromme@qt.io>
Diffstat (limited to 'src/multimediawidgets')
-rw-r--r--src/multimediawidgets/qvideowidget.cpp34
-rw-r--r--src/multimediawidgets/qvideowidget.h4
-rw-r--r--src/multimediawidgets/qvideowidget_p.h4
3 files changed, 5 insertions, 37 deletions
diff --git a/src/multimediawidgets/qvideowidget.cpp b/src/multimediawidgets/qvideowidget.cpp
index a0161c17f..e9977c5a8 100644
--- a/src/multimediawidgets/qvideowidget.cpp
+++ b/src/multimediawidgets/qvideowidget.cpp
@@ -323,6 +323,9 @@ QWindowVideoWidgetBackend::QWindowVideoWidgetBackend(
connect(control, SIGNAL(nativeSizeChanged()), m_widget, SLOT(_q_dimensionsChanged()));
control->setWinId(widget->winId());
+#if defined(Q_OS_WIN)
+ m_widget->setUpdatesEnabled(false);
+#endif
}
QWindowVideoWidgetBackend::~QWindowVideoWidgetBackend()
@@ -392,16 +395,13 @@ void QWindowVideoWidgetBackend::showEvent()
m_windowControl->setWinId(m_widget->winId());
updateDisplayRect();
-#if defined(Q_WS_WIN)
- m_widget->setUpdatesEnabled(false);
+#if defined(Q_OS_WIN)
+ m_windowControl->repaint();
#endif
}
void QWindowVideoWidgetBackend::hideEvent(QHideEvent *)
{
-#if defined(Q_WS_WIN)
- m_widget->setUpdatesEnabled(true);
-#endif
}
void QWindowVideoWidgetBackend::moveEvent(QMoveEvent *)
@@ -427,16 +427,6 @@ void QWindowVideoWidgetBackend::paintEvent(QPaintEvent *event)
event->accept();
}
-#if defined(Q_WS_WIN)
-bool QWindowVideoWidgetBackend::winEvent(MSG *message, long *)
-{
- if (message->message == WM_PAINT)
- m_windowControl->repaint();
-
- return false;
-}
-#endif
-
void QVideoWidgetPrivate::setCurrentControl(QVideoWidgetControlInterface *control)
{
if (currentControl != control) {
@@ -1011,20 +1001,6 @@ void QVideoWidget::paintEvent(QPaintEvent *event)
}
}
-
-#if defined(Q_WS_WIN)
-/*!
- \internal
-*/
-bool QVideoWidget::winEvent(MSG *message, long *result)
-{
- return d_func()->windowBackend && d_func()->windowBackend->winEvent(message, result)
- ? true
- : QWidget::winEvent(message, result);
-}
-#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 00b160821..b1e2da46b 100644
--- a/src/multimediawidgets/qvideowidget.h
+++ b/src/multimediawidgets/qvideowidget.h
@@ -107,10 +107,6 @@ protected:
bool setMediaObject(QMediaObject *object) override;
-#if defined(Q_WS_WIN)
- bool winEvent(MSG *message, long *result);
-#endif
-
QVideoWidget(QVideoWidgetPrivate &dd, QWidget *parent);
QVideoWidgetPrivate *d_ptr;
diff --git a/src/multimediawidgets/qvideowidget_p.h b/src/multimediawidgets/qvideowidget_p.h
index 48b08e093..ef417b222 100644
--- a/src/multimediawidgets/qvideowidget_p.h
+++ b/src/multimediawidgets/qvideowidget_p.h
@@ -206,10 +206,6 @@ public:
void moveEvent(QMoveEvent *event) override;
void paintEvent(QPaintEvent *event) override;
-#if defined(Q_WS_WIN)
- bool winEvent(MSG *message, long *result);
-#endif
-
private:
void updateDisplayRect();