diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-08 10:23:21 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-08 10:23:21 +0200 |
commit | d32aff3e0453475c1a22d5e8c7a106df18c0ad10 (patch) | |
tree | e547f0d8b6174e227add827a9143f5f7ef1d2fe3 /src/plugins | |
parent | b26003419f054722c16cfc9bc3b4366261543bff (diff) | |
parent | c8eed01f1ffe5ad03a82d0bb7c49b71d5cec09b3 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: I7de78c63b5f81620474c69e5c651202c553a70d7
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/directshow/camera/dscamerasession.cpp | 16 | ||||
-rw-r--r-- | src/plugins/directshow/player/directshowmediatype.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qnx/common/windowgrabber.cpp | 4 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index a266e2226..9e1be9606 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -1098,9 +1098,19 @@ void DSCameraSession::disconnectGraph() pPin = NULL; } - m_filterGraph->RemoveFilter(m_nullRendererFilter); - m_filterGraph->RemoveFilter(m_previewFilter); - m_filterGraph->RemoveFilter(m_sourceFilter); + // To avoid increasing the memory usage every time the graph is re-connected it's + // important that all filters are released; also the ones added by the "Intelligent Connect". + IEnumFilters *enumFilters = NULL; + hr = m_filterGraph->EnumFilters(&enumFilters); + if (SUCCEEDED(hr)) { + IBaseFilter *filter = NULL; + while (enumFilters->Next(1, &filter, NULL) == S_OK) { + m_filterGraph->RemoveFilter(filter); + enumFilters->Reset(); + filter->Release(); + } + enumFilters->Release(); + } } static bool qt_frameRateRangeGreaterThan(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2) diff --git a/src/plugins/directshow/player/directshowmediatype.cpp b/src/plugins/directshow/player/directshowmediatype.cpp index 984979c6e..cbe1753ae 100644 --- a/src/plugins/directshow/player/directshowmediatype.cpp +++ b/src/plugins/directshow/player/directshowmediatype.cpp @@ -198,11 +198,9 @@ QVideoSurfaceFormat::Direction DirectShowMediaType::scanLineDirection(QVideoFram case QVideoFrame::Format_BGR24: case QVideoFrame::Format_RGB565: case QVideoFrame::Format_RGB555: -#ifndef Q_OS_WINCE return bmiHeader.biHeight < 0 ? QVideoSurfaceFormat::TopToBottom : QVideoSurfaceFormat::BottomToTop; -#endif default: return QVideoSurfaceFormat::TopToBottom; } diff --git a/src/plugins/qnx/common/windowgrabber.cpp b/src/plugins/qnx/common/windowgrabber.cpp index 5f42096fb..ce5b45298 100644 --- a/src/plugins/qnx/common/windowgrabber.cpp +++ b/src/plugins/qnx/common/windowgrabber.cpp @@ -46,6 +46,7 @@ #include <qpa/qplatformnativeinterface.h> #include <QOpenGLContext> +#include <QOpenGLFunctions> #ifdef Q_OS_BLACKBERRY #include <bps/event.h> @@ -349,6 +350,9 @@ void WindowGrabber::checkForEglImageExtension() m_eglImageSupported = m_context->hasExtension(QByteArrayLiteral("GL_OES_EGL_image")) && eglExtensions.contains(QByteArrayLiteral("EGL_KHR_image")); + if (strstr(reinterpret_cast<const char*>(glGetString(GL_VENDOR)), "VMware")) + m_eglImageSupported = false; + m_eglImageCheck = true; } |