summaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
authorGareth Stockwell <ext-gareth.stockwell@nokia.com>2010-03-29 13:55:24 (GMT)
committerGareth Stockwell <ext-gareth.stockwell@nokia.com>2010-03-29 15:52:12 (GMT)
commit0c5524e73848b95276f13c384d2c711188936deb (patch)
treea77b125f23f5acfaeca73a383d2f96df746c405b /src/3rdparty
parent32a182c25104e6e49fc965a168957acff52a2b53 (diff)
downloadQt-0c5524e73848b95276f13c384d2c711188936deb.zip
Qt-0c5524e73848b95276f13c384d2c711188936deb.tar.gz
Qt-0c5524e73848b95276f13c384d2c711188936deb.tar.bz2
Fixed crash in Phonon MMF backend during application shutdown
During application shutdown, DsaVideoPlayer::handleVideoWindowChanged is called. At this point, the application's main window has been closed and therefore QApplication::activeWindow() returns 0. This leads to a crash. This patch ensures that a null return value from QApplication::activeWindow(), and the resulting zero value of DsaVideoPlayer::m_window, are handled gracefully. Reviewed-by: Frans Englich
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/phonon/mmf/videoplayer_dsa.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
index 21cdb16..732d2d9 100644
--- a/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
+++ b/src/3rdparty/phonon/mmf/videoplayer_dsa.cpp
@@ -162,7 +162,10 @@ void MMF::DsaVideoPlayer::prepareCompleted()
void MMF::DsaVideoPlayer::handleVideoWindowChanged()
{
if (!m_window) {
- m_window = QApplication::activeWindow()->effectiveWinId()->DrawableWindow();
+ if (QWidget *window = QApplication::activeWindow())
+ m_window = window->effectiveWinId()->DrawableWindow();
+ else
+ m_window = 0;
m_videoScreenRect = TRect();
}
@@ -213,6 +216,9 @@ void MMF::DsaVideoPlayer::handleParametersChanged(VideoParameters parameters)
TRACE_CONTEXT(DsaVideoPlayer::handleParametersChanged, EVideoInternal);
TRACE_ENTRY_0();
+ if (!m_window)
+ return;
+
#ifndef QT_NO_DEBUG
getDsaRegion(m_wsSession, *m_window);
#endif