summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorZeno Albisser <zeno@webkit.org>2012-11-23 10:52:22 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-23 17:04:00 +0100
commit92724e533d13f56d359122d7d83ddc2316a75ef8 (patch)
tree91a46c2e70f0c328c111668412243301ceaaaa8f /src
parent7120cf16d21923ecbae37c17c071eca2e7f891ab (diff)
Add nsOpenGLContextForContext to QCocoaNativeInterface.
This change enables receiving the native NSOpenGLContext that is used by a QOpenGLContext. This clearly is non-public api that is only meant to be used as a last resort for cases where it is really necessary to get hold of a native context object. Change-Id: Iea7c6abb458acc7aa15926052673270d25d1d9d1 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h1
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.mm15
2 files changed, 12 insertions, 4 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
index e4b52b9454..70ec497309 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
@@ -60,6 +60,7 @@ public:
void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window);
static void *cglContextForContext(QOpenGLContext *context);
+ static void *nsOpenGLContextForContext(QOpenGLContext* context);
public Q_SLOTS:
void onAppFocusWindowChanged(QWindow *window);
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
index 7f37b971d7..f0b1bd330a 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
@@ -69,7 +69,8 @@ void *QCocoaNativeInterface::nativeResourceForContext(const QByteArray &resource
{
if (!context)
return 0;
-
+ if (resourceString.toLower() == "nsopenglcontext")
+ return nsOpenGLContextForContext(context);
if (resourceString.toLower() == "cglcontextobj")
return cglContextForContext(context);
@@ -122,12 +123,18 @@ void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window)
void *QCocoaNativeInterface::cglContextForContext(QOpenGLContext* context)
{
+ NSOpenGLContext *nsOpenGLContext = static_cast<NSOpenGLContext*>(nsOpenGLContextForContext(context));
+ if (nsOpenGLContext)
+ return [nsOpenGLContext CGLContextObj];
+ return 0;
+}
+
+void *QCocoaNativeInterface::nsOpenGLContextForContext(QOpenGLContext* context)
+{
if (context) {
QCocoaGLContext *cocoaGLContext = static_cast<QCocoaGLContext *>(context->handle());
if (cocoaGLContext) {
- NSOpenGLContext *nsOpenGLContext = cocoaGLContext->nsOpenGLContext();
- if (nsOpenGLContext)
- return [nsOpenGLContext CGLContextObj];
+ return cocoaGLContext->nsOpenGLContext();
}
}
return 0;