diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h index e4b52b94543..70ec4973094 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 7f37b971d7b..f0b1bd330a7 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); @@ -121,13 +122,19 @@ void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window) } void *QCocoaNativeInterface::cglContextForContext(QOpenGLContext* context) +{ + NSOpenGLContext *nsOpenGLContext = static_cast(nsOpenGLContextForContext(context)); + if (nsOpenGLContext) + return [nsOpenGLContext CGLContextObj]; + return 0; +} + +void *QCocoaNativeInterface::nsOpenGLContextForContext(QOpenGLContext* context) { if (context) { QCocoaGLContext *cocoaGLContext = static_cast(context->handle()); if (cocoaGLContext) { - NSOpenGLContext *nsOpenGLContext = cocoaGLContext->nsOpenGLContext(); - if (nsOpenGLContext) - return [nsOpenGLContext CGLContextObj]; + return cocoaGLContext->nsOpenGLContext(); } } return 0;