Export x11 screen of the QXcbConnection to the native interface
With XCB a client cannot retrieve the information on which X screen it is running. This information is only available when opening the xcb connection. As this is done by Qt no application is able to retrieve this information. By exporting the x11 screen we can provide this information again in QtX11Extras. Change-Id: I50f1d3e803dc7e3afac0e5c7f1648ccda4502e7c Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
This commit is contained in:
parent
75ffb131ed
commit
9c3b79200b
@ -80,7 +80,7 @@ static int resourceType(const QByteArray &key)
|
||||
QByteArrayLiteral("glxcontext"), QByteArrayLiteral("apptime"),
|
||||
QByteArrayLiteral("appusertime"), QByteArrayLiteral("hintstyle"),
|
||||
QByteArrayLiteral("startupid"), QByteArrayLiteral("traywindow"),
|
||||
QByteArrayLiteral("gettimestamp")
|
||||
QByteArrayLiteral("gettimestamp"), QByteArrayLiteral("x11screen")
|
||||
};
|
||||
const QByteArray *end = names + sizeof(names) / sizeof(names[0]);
|
||||
const QByteArray *result = std::find(names, end, key);
|
||||
@ -139,6 +139,9 @@ void *QXcbNativeInterface::nativeResourceForIntegration(const QByteArray &resour
|
||||
case StartupId:
|
||||
result = startupId();
|
||||
break;
|
||||
case X11Screen:
|
||||
result = x11Screen();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -252,6 +255,15 @@ void *QXcbNativeInterface::startupId()
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *QXcbNativeInterface::x11Screen()
|
||||
{
|
||||
QXcbIntegration *integration = static_cast<QXcbIntegration *>(QGuiApplicationPrivate::platformIntegration());
|
||||
QXcbConnection *defaultConnection = integration->defaultConnection();
|
||||
if (defaultConnection)
|
||||
return reinterpret_cast<void *>(defaultConnection->primaryScreen());
|
||||
return 0;
|
||||
}
|
||||
|
||||
void QXcbNativeInterface::setAppTime(QScreen* screen, xcb_timestamp_t time)
|
||||
{
|
||||
static_cast<QXcbScreen *>(screen->handle())->connection()->setTime(time);
|
||||
|
@ -70,7 +70,8 @@ public:
|
||||
ScreenHintStyle,
|
||||
StartupId,
|
||||
TrayWindow,
|
||||
GetTimestamp
|
||||
GetTimestamp,
|
||||
X11Screen
|
||||
};
|
||||
|
||||
QXcbNativeInterface();
|
||||
@ -94,6 +95,7 @@ public:
|
||||
void *appUserTime(const QXcbScreen *screen);
|
||||
void *getTimestamp(const QXcbScreen *screen);
|
||||
void *startupId();
|
||||
void *x11Screen();
|
||||
static void setAppTime(QScreen *screen, xcb_timestamp_t time);
|
||||
static void setAppUserTime(QScreen *screen, xcb_timestamp_t time);
|
||||
static void *eglContextForContext(QOpenGLContext *context);
|
||||
|
Loading…
Reference in New Issue
Block a user