diff options
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.h | 3 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoanativeinterface.mm | 24 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.h | 2 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 3 |
4 files changed, 29 insertions, 3 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h index 6f99dc458a..e4b52b9454 100644 --- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h +++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h @@ -56,8 +56,11 @@ class QCocoaNativeInterface : public QPlatformNativeInterface public: QCocoaNativeInterface(); + void *nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context); void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window); + static void *cglContextForContext(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 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 diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 4a146767d5..014db378e7 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -98,7 +98,7 @@ public: void setGeometry(const QRect &rect); void setCocoaGeometry(const QRect &rect); void setVisible(bool visible); - Qt::WindowFlags setWindowFlags(Qt::WindowFlags flags); + void setWindowFlags(Qt::WindowFlags flags); Qt::WindowState setWindowState(Qt::WindowState state); void setWindowTitle(const QString &title); void setWindowFilePath(const QString &filePath); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 26161b106e..f4a4936c28 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -387,7 +387,7 @@ void QCocoaWindow::setWindowShadow(Qt::WindowFlags flags) [m_nsWindow setHasShadow:(keepShadow ? YES : NO)]; } -Qt::WindowFlags QCocoaWindow::setWindowFlags(Qt::WindowFlags flags) +void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags) { if (m_nsWindow) { NSUInteger styleMask = windowStyleMask(flags); @@ -398,7 +398,6 @@ Qt::WindowFlags QCocoaWindow::setWindowFlags(Qt::WindowFlags flags) } m_windowFlags = flags; - return m_windowFlags; } Qt::WindowState QCocoaWindow::setWindowState(Qt::WindowState state) |