summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp16
-rw-r--r--src/plugins/directshow/player/directshowmediatype.cpp2
-rw-r--r--src/plugins/qnx/common/windowgrabber.cpp4
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;
}