void * QXlibNativeInterface::nativeResourceForWidget(const QByteArray &resourceString, QWidget *widget) { QByteArray lowerCaseResource = resourceString.toLower(); ResourceType resource = qXlibResourceMap()->value(lowerCaseResource); void *result = 0; switch(resource) { case Display: result = displayForWidget(widget); break; case EglDisplay: result = eglDisplayForWidget(widget); break; case Connection: result = connectionForWidget(widget); break; case Screen: result = reinterpret_cast<void *>(qPlatformScreenForWidget(widget)->xScreenNumber()); break; case GraphicsDevice: result = graphicsDeviceForWidget(widget); break; case EglContext: result = eglContextForWidget(widget); break; default: result = 0; } return result; }
void *QXcbNativeInterface::eglDisplayForWidget(QWidget *widget) { #if defined(XCB_USE_DRI2) || defined(XCB_USE_EGL) QXcbScreen *screen = qPlatformScreenForWidget(widget); return screen->connection()->egl_display(); #else Q_UNUSED(widget) return 0; #endif }
void *QXcbNativeInterface::displayForWidget(QWidget *widget) { #if defined(XCB_USE_XLIB) QXcbScreen *screen = qPlatformScreenForWidget(widget); return screen->connection()->xlib_display(); #else Q_UNUSED(widget); return 0; #endif }
void *QXcbNativeInterface::graphicsDeviceForWidget(QWidget *widget) { #if defined(XCB_USE_DRI2) QXcbScreen *screen = qPlatformScreenForWidget(widget); QByteArray deviceName = screen->connection()->dri2DeviceName(); return deviceName.data(); #else Q_UNUSED(widget); return 0; #endif }
void *QWaylandNativeInterface::nativeResourceForWidget(const QByteArray &resourceString, QWidget *widget) { QByteArray lowerCaseResource = resourceString.toLower(); if (lowerCaseResource == "display") return qPlatformScreenForWidget(widget)->display()->wl_display(); if (lowerCaseResource == "surface") { return ((QWaylandWindow *) widget->platformWindow())->wl_surface(); } return NULL; }
void * QXlibNativeInterface::displayForWidget(QWidget *widget) { return qPlatformScreenForWidget(widget)->display()->nativeDisplay(); }
void *QXcbNativeInterface::screenForWidget(QWidget *widget) { QXcbScreen *screen = qPlatformScreenForWidget(widget); return screen->screen(); }
void *QXcbNativeInterface::connectionForWidget(QWidget *widget) { QXcbScreen *screen = qPlatformScreenForWidget(widget); return screen->xcb_connection(); }