diff options
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoanativeinterface.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.mm | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm index e5040080ed..7f37b971d7 100644 --- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm +++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm @@ -65,6 +65,17 @@ QCocoaNativeInterface::QCocoaNativeInterface() { } +void *QCocoaNativeInterface::nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context) +{ + if (!context) + return 0; + + if (resourceString.toLower() == "cglcontextobj") + return cglContextForContext(context); + + return 0; +} + void *QCocoaNativeInterface::nativeResourceForWindow(const QByteArray &resourceString, QWindow *window) { if (!window->handle()) { @@ -109,4 +120,17 @@ void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window) QCocoaMenuBar::updateMenuBarImmediately(); } +void *QCocoaNativeInterface::cglContextForContext(QOpenGLContext* context) +{ + if (context) { + QCocoaGLContext *cocoaGLContext = static_cast<QCocoaGLContext *>(context->handle()); + if (cocoaGLContext) { + NSOpenGLContext *nsOpenGLContext = cocoaGLContext->nsOpenGLContext(); + if (nsOpenGLContext) + return [nsOpenGLContext CGLContextObj]; + } + } + return 0; +} + QT_END_NAMESPACE |