diff options
4 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp index f12c828d8a..1abf447709 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp +++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp @@ -203,4 +203,17 @@ HDC QWindowsBackingStore::getDC() const return 0; } +#ifndef QT_NO_OPENGL + +QImage QWindowsBackingStore::toImage() const +{ + if (m_image.isNull()) { + qCWarning(lcQpaBackingStore) <<__FUNCTION__ << "Image is null."; + return QImage(); + } + return m_image.data()->image(); +} + +#endif // !QT_NO_OPENGL + QT_END_NAMESPACE diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.h b/src/plugins/platforms/windows/qwindowsbackingstore.h index b655aca835..758f6c941f 100644 --- a/src/plugins/platforms/windows/qwindowsbackingstore.h +++ b/src/plugins/platforms/windows/qwindowsbackingstore.h @@ -67,6 +67,10 @@ public: HDC getDC() const; +#ifndef QT_NO_OPENGL + QImage toImage() const Q_DECL_OVERRIDE; +#endif + private: QScopedPointer<QWindowsNativeImage> m_image; }; diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp index 3735865845..2a7a275060 100644 --- a/src/plugins/platforms/windows/qwindowsintegration.cpp +++ b/src/plugins/platforms/windows/qwindowsintegration.cpp @@ -245,6 +245,8 @@ bool QWindowsIntegration::hasCapability(QPlatformIntegration::Capability cap) co return true; case ForeignWindows: return true; + case RasterGLSurface: + return true; default: return QPlatformIntegration::hasCapability(cap); } diff --git a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp index fb1b63084f..f6d01d7ef7 100644 --- a/src/plugins/platforms/windows/qwindowsnativeinterface.cpp +++ b/src/plugins/platforms/windows/qwindowsnativeinterface.cpp @@ -69,13 +69,18 @@ void *QWindowsNativeInterface::nativeResourceForWindow(const QByteArray &resourc QWindowsWindow *bw = static_cast<QWindowsWindow *>(window->handle()); if (resource == "handle") return bw->handle(); - if (window->surfaceType() == QWindow::RasterSurface) { + switch (window->surfaceType()) { + case QWindow::RasterSurface: + case QWindow::RasterGLSurface: if (resource == "getDC") return bw->getDC(); if (resource == "releaseDC") { bw->releaseDC(); return 0; } + break; + case QWindow::OpenGLSurface: + break; } qWarning("%s: Invalid key '%s' requested.", __FUNCTION__, resource.constData()); return 0; |