summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/xcb/qxcbnativeinterface.cpp')
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
index 6241898462..da60cfd2bd 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
@@ -42,6 +42,7 @@
#include "qxcbnativeinterface.h"
#include "qxcbscreen.h"
+#include "qxcbintegration.h"
#include <private/qguiapplication_p.h>
#include <QtCore/QMap>
@@ -77,6 +78,8 @@ public:
insert("glxcontext",QXcbNativeInterface::GLXContext);
insert("apptime",QXcbNativeInterface::AppTime);
insert("appusertime",QXcbNativeInterface::AppUserTime);
+ insert("hintstyle", QXcbNativeInterface::ScreenHintStyle);
+ insert("startupid", QXcbNativeInterface::StartupId);
}
};
@@ -98,6 +101,25 @@ void QXcbNativeInterface::beep() // For QApplication::beep()
#endif
}
+void *QXcbNativeInterface::nativeResourceForIntegration(const QByteArray &resourceString)
+{
+ QByteArray lowerCaseResource = resourceString.toLower();
+ if (!qXcbResourceMap()->contains(lowerCaseResource))
+ return 0;
+
+ ResourceType resource = qXcbResourceMap()->value(lowerCaseResource);
+ void *result = 0;
+ switch (resource) {
+ case StartupId:
+ result = startupId();
+ break;
+ default:
+ break;
+ }
+
+ return result;
+}
+
void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context)
{
QByteArray lowerCaseResource = resourceString.toLower();
@@ -139,6 +161,8 @@ void *QXcbNativeInterface::nativeResourceForScreen(const QByteArray &resource, Q
case AppUserTime:
result = appUserTime(xcbScreen);
break;
+ case ScreenHintStyle:
+ result = reinterpret_cast<void *>(xcbScreen->hintStyle() + 1);
default:
break;
}
@@ -193,6 +217,15 @@ void *QXcbNativeInterface::appUserTime(const QXcbScreen *screen)
return reinterpret_cast<void *>(quintptr(screen->connection()->netWmUserTime()));
}
+void *QXcbNativeInterface::startupId()
+{
+ QXcbIntegration* integration = static_cast<QXcbIntegration *>(QGuiApplicationPrivate::platformIntegration());
+ QXcbConnection *defaultConnection = integration->defaultConnection();
+ if (defaultConnection)
+ return reinterpret_cast<void *>(const_cast<char *>(defaultConnection->startupId().constData()));
+ return 0;
+}
+
void QXcbNativeInterface::setAppTime(QScreen* screen, xcb_timestamp_t time)
{
static_cast<QXcbScreen *>(screen->handle())->connection()->setTime(time);