diff options
author | Liang Qi <liang.qi@qt.io> | 2018-01-18 11:01:15 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-01-18 11:01:15 +0100 |
commit | d9587b44117ed3cc65bdc98615a42366c0f00b5c (patch) | |
tree | 202bd5fe96e4861ee073d73d9e05b928e26aabe4 | |
parent | d58b6b908ea130e9422b08b5b3b460b48da7d337 (diff) | |
parent | d83467be15486090ee23709dc325c2c28d34c0cd (diff) | |
download | qtmultimedia-d9587b44117ed3cc65bdc98615a42366c0f00b5c.tar.gz |
Merge remote-tracking branch 'origin/5.9.4' into 5.9
Change-Id: I2524b124197050d16409d9d3675570594c02cd42
-rw-r--r-- | dist/changes-5.9.4 | 57 | ||||
-rw-r--r-- | src/plugins/directshow/player/directshowplayerservice.cpp | 31 | ||||
-rw-r--r-- | src/plugins/directshow/player/directshowplayerservice.h | 4 |
3 files changed, 65 insertions, 27 deletions
diff --git a/dist/changes-5.9.4 b/dist/changes-5.9.4 new file mode 100644 index 000000000..7aaaedbd2 --- /dev/null +++ b/dist/changes-5.9.4 @@ -0,0 +1,57 @@ +Qt 5.9.4 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.9.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.9 series is binary compatible with the 5.8.x series. +Applications compiled for 5.8 will continue to run with 5.9. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.9.4 Changes * +**************************************************************************** + +QtMultimedia +------------ +- [QTBUG-64407] Fixed memory leak in QSoundEffect. The sample cache didn't + release all the resources that where allocated by its worker thread. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +Windows +------- + +- [QTBUG-51405] Fixed bad rendering when a video widget got overlapped by + a MDI subwindow. +- [QTBUG-64044] Fixed calculation of pixel aspect ratio due to precision loss. +- [QTBUG-52713] Fixed memory leak in the DirectShow filter graph. +- [QTBUG-61407] Fixed video rendering in QML when using ANGLE. +- [QTBUG-54242] Fixed crash in QAudioDeviceInfo::availableDevices() that could + happen if one of the device returned an empty list for its supported formats. +- [QTBUG-35916] Removed unneeded delay in the audio output, which caused an + unnecessary long wait when stopping the QSoundEffect. +- [QTBUG-53534] Fixed potential deadlock in the media player when attempting + to load a new resource while the media player was in loading state. + +iOS +--- +- [QTBUG-37955] Fixed front facing camera's orientation. + +Android +------- +- [QTBUG-52366] Fixed a crash in the camera the could happen when an + application got suspended while it still was processing a captured image. +- [QTBUG-64764] Fixed regression that would cause the video output to be shown + upside down. diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index 2218ca5ed..8ee5d67a1 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -318,15 +318,18 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream m_graphStatus = InvalidMedia; m_error = QMediaPlayer::ResourceError; } else { + // {36b73882-c2c8-11cf-8b46-00805f6cef60} + static const GUID iid_IFilterGraph2 = { + 0x36b73882, 0xc2c8, 0x11cf, {0x8b, 0x46, 0x00, 0x80, 0x5f, 0x6c, 0xef, 0x60} }; m_graphStatus = Loading; + m_graph = com_new<IFilterGraph2>(CLSID_FilterGraph, iid_IFilterGraph2); + if (stream) m_pendingTasks = SetStreamSource; else m_pendingTasks = SetUrlSource; - m_pendingTasks |= CreateGraph; - ::SetEvent(m_taskHandle); } @@ -337,17 +340,6 @@ void DirectShowPlayerService::load(const QMediaContent &media, QIODevice *stream updateStatus(); } -void DirectShowPlayerService::doCreateGraph(QMutexLocker *locker) -{ - Q_UNUSED(locker); - - // {36b73882-c2c8-11cf-8b46-00805f6cef60} - static const GUID iid_IFilterGraph2 = { - 0x36b73882, 0xc2c8, 0x11cf, {0x8b, 0x46, 0x00, 0x80, 0x5f, 0x6c, 0xef, 0x60} }; - - m_graph = com_new<IFilterGraph2>(CLSID_FilterGraphNoThread, iid_IFilterGraph2); -} - void DirectShowPlayerService::doSetUrlSource(QMutexLocker *locker) { IBaseFilter *source = 0; @@ -1694,8 +1686,6 @@ void DirectShowPlayerService::run() { QMutexLocker locker(&m_mutex); - CoInitialize(NULL); - for (;;) { while (m_pendingTasks == 0) { DWORD result = 0; @@ -1710,17 +1700,12 @@ void DirectShowPlayerService::run() } locker.relock(); - if (m_graph && result == WAIT_OBJECT_0 + 1) { + if (result == WAIT_OBJECT_0 + 1) { graphEvent(&locker); } } - if (m_pendingTasks & CreateGraph) { - m_pendingTasks ^= CreateGraph; - m_executingTask = CreateGraph; - - doCreateGraph(&locker); - } else if (m_pendingTasks & ReleaseGraph) { + if (m_pendingTasks & ReleaseGraph) { m_pendingTasks ^= ReleaseGraph; m_executingTask = ReleaseGraph; @@ -1813,8 +1798,6 @@ void DirectShowPlayerService::run() } m_executingTask = 0; } - - CoUninitialize(); } QT_END_NAMESPACE diff --git a/src/plugins/directshow/player/directshowplayerservice.h b/src/plugins/directshow/player/directshowplayerservice.h index cc7b4dd3e..01d05449e 100644 --- a/src/plugins/directshow/player/directshowplayerservice.h +++ b/src/plugins/directshow/player/directshowplayerservice.h @@ -124,7 +124,6 @@ private: void run(); - void doCreateGraph(QMutexLocker *locker); void doSetUrlSource(QMutexLocker *locker); void doSetStreamSource(QMutexLocker *locker); void doRender(QMutexLocker *locker); @@ -170,8 +169,7 @@ private: ReleaseVideoProbe = 0x40000, ReleaseFilters = ReleaseGraph | ReleaseAudioOutput | ReleaseVideoOutput | ReleaseAudioProbe - | ReleaseVideoProbe, - CreateGraph = 0x80000 + | ReleaseVideoProbe }; enum Event |