Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qxcbnativeinterface.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
6#include "qxcbcursor.h"
7#include "qxcbscreen.h"
8#include "qxcbwindow.h"
9#include "qxcbintegration.h"
11
12#include <private/qguiapplication_p.h>
13#include <QtCore/QMap>
14
15#include <QtCore/QDebug>
16
17#include <QtGui/qopenglcontext.h>
18#include <QtGui/qscreen.h>
19
20#include <stdio.h>
21
22#include <algorithm>
23
25
26#if QT_CONFIG(vulkan)
27#include "qxcbvulkanwindow.h"
28#endif
29
31
32// return QXcbNativeInterface::ResourceType for the key.
33static int resourceType(const QByteArray &key)
34{
35 static const QByteArray names[] = { // match QXcbNativeInterface::ResourceType
36 QByteArrayLiteral("display"),
37 QByteArrayLiteral("connection"), QByteArrayLiteral("screen"),
38 QByteArrayLiteral("apptime"),
39 QByteArrayLiteral("appusertime"), QByteArrayLiteral("hintstyle"),
40 QByteArrayLiteral("startupid"), QByteArrayLiteral("traywindow"),
41 QByteArrayLiteral("gettimestamp"), QByteArrayLiteral("x11screen"),
42 QByteArrayLiteral("rootwindow"),
43 QByteArrayLiteral("subpixeltype"), QByteArrayLiteral("antialiasingenabled"),
44 QByteArrayLiteral("atspibus"),
45 QByteArrayLiteral("compositingenabled"),
46 QByteArrayLiteral("vksurface"),
47 QByteArrayLiteral("generatepeekerid"),
48 QByteArrayLiteral("removepeekerid"),
49 QByteArrayLiteral("peekeventqueue")
50 };
51 const QByteArray *end = names + sizeof(names) / sizeof(names[0]);
52 const QByteArray *result = std::find(names, end, key);
53 return int(result - names);
54}
55
59
61{
62 if (!s)
63 return nullptr;
64
65 return static_cast<const QXcbScreen *>(s->handle())->connection()->systemTrayTracker();
66}
67
69{
70 QByteArray lowerCaseResource = resourceString.toLower();
71 void *result = handlerNativeResourceForIntegration(lowerCaseResource);
72 if (result)
73 return result;
74
75 switch (resourceType(lowerCaseResource)) {
76 case StartupId:
77 result = startupId();
78 break;
79 case X11Screen:
80 result = x11Screen();
81 break;
82 case RootWindow:
84 break;
85 case XDisplay:
86 result = display();
87 break;
88 case AtspiBus:
89 result = atspiBus();
90 break;
91 case Connection:
93 break;
94 default:
95 break;
96 }
97
98 return result;
99}
100
102{
103 QByteArray lowerCaseResource = resourceString.toLower();
104 void *result = handlerNativeResourceForContext(lowerCaseResource, context);
105 return result;
106}
107
109{
110 if (!screen) {
111 qWarning("nativeResourceForScreen: null screen");
112 return nullptr;
113 }
114
115 QByteArray lowerCaseResource = resourceString.toLower();
116 void *result = handlerNativeResourceForScreen(lowerCaseResource, screen);
117 if (result)
118 return result;
119
120 const QXcbScreen *xcbScreen = static_cast<QXcbScreen *>(screen->handle());
121 switch (resourceType(lowerCaseResource)) {
122 case XDisplay:
123#if QT_CONFIG(xcb_xlib)
124 result = xcbScreen->connection()->xlib_display();
125#endif
126 break;
127 case AppTime:
128 result = appTime(xcbScreen);
129 break;
130 case AppUserTime:
131 result = appUserTime(xcbScreen);
132 break;
133 case ScreenHintStyle:
134 result = reinterpret_cast<void *>(xcbScreen->hintStyle() + 1);
135 break;
137 result = reinterpret_cast<void *>(xcbScreen->subpixelType() + 1);
138 break;
140 result = reinterpret_cast<void *>(xcbScreen->antialiasingEnabled() + 1);
141 break;
142 case TrayWindow:
144 result = (void *)quintptr(s->trayWindow());
145 break;
146 case GetTimestamp:
147 result = getTimestamp(xcbScreen);
148 break;
149 case RootWindow:
150 result = reinterpret_cast<void *>(xcbScreen->root());
151 break;
153 if (QXcbVirtualDesktop *vd = xcbScreen->virtualDesktop())
154 result = vd->compositingActive() ? this : nullptr;
155 break;
156 default:
157 break;
158 }
159 return result;
160}
161
163{
164 QByteArray lowerCaseResource = resourceString.toLower();
165 void *result = handlerNativeResourceForWindow(lowerCaseResource, window);
166 if (result)
167 return result;
168
169 switch (resourceType(lowerCaseResource)) {
170 case XDisplay:
172 break;
173 case Connection:
175 break;
176 case Screen:
178 break;
179#if QT_CONFIG(vulkan)
180 case VkSurface:
181 if (window->surfaceType() == QSurface::VulkanSurface && window->handle()) {
182 // return a pointer to the VkSurfaceKHR value, not the value itself
183 result = static_cast<QXcbVulkanWindow *>(window->handle())->surface();
184 }
185 break;
186#endif
187 default:
188 break;
189 }
190
191 return result;
192}
193
195{
196 const QByteArray lowerCaseResource = resourceString.toLower();
197 void *result = handlerNativeResourceForBackingStore(lowerCaseResource,backingStore);
198 return result;
199}
200
201#ifndef QT_NO_CURSOR
203{
204 if (resource == QByteArrayLiteral("xcbcursor")) {
205 if (const QScreen *primaryScreen = QGuiApplication::primaryScreen()) {
206 if (const QPlatformCursor *pCursor= primaryScreen->handle()->cursor()) {
207 xcb_cursor_t xcbCursor = static_cast<const QXcbCursor *>(pCursor)->xcbCursor(cursor);
208 return reinterpret_cast<void *>(quintptr(xcbCursor));
209 }
210 }
211 }
212 return nullptr;
213}
214#endif // !QT_NO_CURSOR
215
217{
218 const QByteArray lowerCaseResource = resource.toLower();
219 QPlatformNativeInterface::NativeResourceForIntegrationFunction func = handlerNativeResourceFunctionForIntegration(lowerCaseResource);
220 if (func)
221 return func;
222
223 if (lowerCaseResource == "setstartupid")
224 return NativeResourceForIntegrationFunction(reinterpret_cast<void *>(setStartupId));
225 if (lowerCaseResource == "generatepeekerid")
226 return NativeResourceForIntegrationFunction(reinterpret_cast<void *>(generatePeekerId));
227 if (lowerCaseResource == "removepeekerid")
228 return NativeResourceForIntegrationFunction(reinterpret_cast<void *>(removePeekerId));
229 if (lowerCaseResource == "peekeventqueue")
230 return NativeResourceForIntegrationFunction(reinterpret_cast<void *>(peekEventQueue));
231
232 return nullptr;
233}
234
236{
237 const QByteArray lowerCaseResource = resource.toLower();
238 QPlatformNativeInterface::NativeResourceForContextFunction func = handlerNativeResourceFunctionForContext(lowerCaseResource);
239 if (func)
240 return func;
241 return nullptr;
242}
243
245{
246 const QByteArray lowerCaseResource = resource.toLower();
247 NativeResourceForScreenFunction func = handlerNativeResourceFunctionForScreen(lowerCaseResource);
248 if (func)
249 return func;
250
251 if (lowerCaseResource == "setapptime")
252 return NativeResourceForScreenFunction(reinterpret_cast<void *>(setAppTime));
253 else if (lowerCaseResource == "setappusertime")
254 return NativeResourceForScreenFunction(reinterpret_cast<void *>(setAppUserTime));
255 return nullptr;
256}
257
259{
260 const QByteArray lowerCaseResource = resource.toLower();
261 NativeResourceForWindowFunction func = handlerNativeResourceFunctionForWindow(lowerCaseResource);
262 return func;
263}
264
266{
267 const QByteArray lowerCaseResource = resource.toLower();
268 NativeResourceForBackingStoreFunction func = handlerNativeResourceFunctionForBackingStore(lowerCaseResource);
269 return func;
270}
271
272QFunctionPointer QXcbNativeInterface::platformFunction(const QByteArray &function) const
273{
274 const QByteArray lowerCaseFunction = function.toLower();
275 if (QFunctionPointer func = handlerPlatformFunction(lowerCaseFunction))
276 return func;
277
278 return nullptr;
279}
280
282{
283 if (!screen)
284 return nullptr;
285
286 return reinterpret_cast<void *>(quintptr(screen->connection()->time()));
287}
288
290{
291 if (!screen)
292 return nullptr;
293
294 return reinterpret_cast<void *>(quintptr(screen->connection()->netWmUserTime()));
295}
296
298{
299 if (!screen)
300 return nullptr;
301
302 return reinterpret_cast<void *>(quintptr(screen->connection()->getTimestamp()));
303}
304
306{
308 QXcbConnection *connection = integration->connection();
309 if (connection)
310 return reinterpret_cast<void *>(const_cast<char *>(connection->startupId().constData()));
311 return nullptr;
312}
313
315{
317 QXcbConnection *connection = integration->connection();
318 if (connection)
319 return reinterpret_cast<void *>(connection->primaryScreenNumber());
320 return nullptr;
321}
322
324{
326 QXcbConnection *connection = integration->connection();
327 if (connection)
328 return reinterpret_cast<void *>(connection->rootWindow());
329 return nullptr;
330}
331
333{
334#if QT_CONFIG(xcb_xlib)
336 if (QXcbConnection *connection = integration->connection())
337 return reinterpret_cast<Display *>(connection->xlib_display());
338#endif
339 return nullptr;
340}
341
342xcb_connection_t *QXcbNativeInterface::connection() const
343{
345 return integration->connection()->xcb_connection();
346}
347
349{
351 QXcbConnection *connection = integration->connection();
352 if (connection) {
353 auto atspiBusAtom = connection->atom(QXcbAtom::AtomAT_SPI_BUS);
354 auto reply = Q_XCB_REPLY(xcb_get_property, connection->xcb_connection(),
355 false, connection->rootWindow(),
356 atspiBusAtom, XCB_ATOM_STRING, 0, 128);
357 if (!reply)
358 return nullptr;
359
360 char *data = (char *)xcb_get_property_value(reply.get());
361 int length = xcb_get_property_value_length(reply.get());
362 return new QByteArray(data, length);
363 }
364
365 return nullptr;
366}
367
369{
370 if (screen) {
371 static_cast<QXcbScreen *>(screen->handle())->connection()->setTime(time);
372 }
373}
374
376{
377 if (screen) {
378 static_cast<QXcbScreen *>(screen->handle())->connection()->setNetWmUserTime(time);
379 }
380}
381
387
389{
391 return integration->connection()->eventQueue()->removePeekerId(peekerId);
392}
393
395 QXcbEventQueue::PeekOptions option, qint32 peekerId)
396{
398 return integration->connection()->eventQueue()->peekEventQueue(peeker, peekerData, option, peekerId);
399}
400
402{
405 QXcbConnection *connection = integration->connection();
406 if (connection)
407 connection->setStartupId(startupId);
408}
409
410QXcbScreen *QXcbNativeInterface::qPlatformScreenForWindow(QWindow *window)
411{
413 if (window) {
414 QScreen *qs = window->screen();
415 screen = static_cast<QXcbScreen *>(qs ? qs->handle() : nullptr);
416 } else {
418 screen = static_cast<QXcbScreen *>(qs ? qs->handle() : nullptr);
419 }
420 return screen;
421}
422
424{
425#if QT_CONFIG(xcb_xlib)
426 QXcbScreen *screen = qPlatformScreenForWindow(window);
427 return screen ? screen->connection()->xlib_display() : nullptr;
428#else
430 return nullptr;
431#endif
432}
433
435{
436 QXcbScreen *screen = qPlatformScreenForWindow(window);
437 return screen ? screen->xcb_connection() : nullptr;
438}
439
441{
442 QXcbScreen *screen = qPlatformScreenForWindow(window);
443 return screen ? screen->screen() : nullptr;
444}
445
447{
448 m_handlers.removeAll(handler);
449 m_handlers.prepend(handler);
450}
451
453{
454 m_handlers.removeAll(handler);
455}
456
457QPlatformNativeInterface::NativeResourceForIntegrationFunction QXcbNativeInterface::handlerNativeResourceFunctionForIntegration(const QByteArray &resource) const
458{
459 for (int i = 0; i < m_handlers.size(); i++) {
460 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
462 if (result)
463 return result;
464 }
465 return nullptr;
466}
467
468QPlatformNativeInterface::NativeResourceForContextFunction QXcbNativeInterface::handlerNativeResourceFunctionForContext(const QByteArray &resource) const
469{
470 for (int i = 0; i < m_handlers.size(); i++) {
471 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
473 if (result)
474 return result;
475 }
476 return nullptr;
477}
478
479QPlatformNativeInterface::NativeResourceForScreenFunction QXcbNativeInterface::handlerNativeResourceFunctionForScreen(const QByteArray &resource) const
480{
481 for (int i = 0; i < m_handlers.size(); i++) {
482 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
484 if (result)
485 return result;
486 }
487 return nullptr;
488}
489
490QPlatformNativeInterface::NativeResourceForWindowFunction QXcbNativeInterface::handlerNativeResourceFunctionForWindow(const QByteArray &resource) const
491{
492 for (int i = 0; i < m_handlers.size(); i++) {
493 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
495 if (result)
496 return result;
497 }
498 return nullptr;
499}
500
501QPlatformNativeInterface::NativeResourceForBackingStoreFunction QXcbNativeInterface::handlerNativeResourceFunctionForBackingStore(const QByteArray &resource) const
502{
503 for (int i = 0; i < m_handlers.size(); i++) {
504 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
506 if (result)
507 return result;
508 }
509 return nullptr;
510}
511
512QFunctionPointer QXcbNativeInterface::handlerPlatformFunction(const QByteArray &function) const
513{
514 for (int i = 0; i < m_handlers.size(); i++) {
515 QXcbNativeInterfaceHandler *handler = m_handlers.at(i);
516 QFunctionPointer func = handler->platformFunction(function);
517 if (func)
518 return func;
519 }
520 return nullptr;
521}
522
523void *QXcbNativeInterface::handlerNativeResourceForIntegration(const QByteArray &resource) const
524{
525 NativeResourceForIntegrationFunction func = handlerNativeResourceFunctionForIntegration(resource);
526 if (func)
527 return func();
528 return nullptr;
529}
530
531void *QXcbNativeInterface::handlerNativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) const
532{
533 NativeResourceForContextFunction func = handlerNativeResourceFunctionForContext(resource);
534 if (func)
535 return func(context);
536 return nullptr;
537}
538
539void *QXcbNativeInterface::handlerNativeResourceForScreen(const QByteArray &resource, QScreen *screen) const
540{
541 NativeResourceForScreenFunction func = handlerNativeResourceFunctionForScreen(resource);
542 if (func)
543 return func(screen);
544 return nullptr;
545}
546
547void *QXcbNativeInterface::handlerNativeResourceForWindow(const QByteArray &resource, QWindow *window) const
548{
549 NativeResourceForWindowFunction func = handlerNativeResourceFunctionForWindow(resource);
550 if (func)
551 return func(window);
552 return nullptr;
553}
554
555void *QXcbNativeInterface::handlerNativeResourceForBackingStore(const QByteArray &resource, QBackingStore *backingStore) const
556{
557 NativeResourceForBackingStoreFunction func = handlerNativeResourceFunctionForBackingStore(resource);
558 if (func)
559 return func(backingStore);
560 return nullptr;
561}
562
564 int level, QTextStream &str)
565{
566 if (level)
567 str << QByteArray(2 * level, ' ');
568
569 xcb_connection_t *conn = connection->xcb_connection();
570 auto geomReply = Q_XCB_REPLY(xcb_get_geometry, conn, window);
571 if (!geomReply)
572 return;
573 const QRect geom(geomReply->x, geomReply->y, geomReply->width, geomReply->height);
574 if (!geom.isValid() || (geom.width() <= 3 && geom.height() <= 3))
575 return; // Skip helper/dummy windows.
576 str << "0x";
577 const int oldFieldWidth = str.fieldWidth();
578 const QChar oldPadChar =str.padChar();
579 str.setFieldWidth(8);
580 str.setPadChar(u'0');
581 str << Qt::hex << window;
582 str.setFieldWidth(oldFieldWidth);
583 str.setPadChar(oldPadChar);
584 str << Qt::dec << " \""
586 << geom.width() << 'x' << geom.height() << Qt::forcesign << geom.x() << geom.y()
587 << Qt::noforcesign << '\n';
588
589 auto reply = Q_XCB_REPLY(xcb_query_tree, conn, window);
590 if (reply) {
591 const int count = xcb_query_tree_children_length(reply.get());
592 const xcb_window_t *children = xcb_query_tree_children(reply.get());
593 for (int i = 0; i < count; ++i)
595 }
596}
597
599{
602 if (root) {
603 dumpNativeWindowsRecursion(connection, xcb_window_t(root), 0, str);
604 } else {
605 for (const QXcbScreen *screen : connection->screens()) {
606 str << "Screen: \"" << screen->name() << "\"\n";
608 str << '\n';
609 }
610 }
611 return result;
612}
613
618
620
621#include "moc_qxcbnativeinterface.cpp"
The QBackingStore class provides a drawing area for QWindow.
\inmodule QtCore
Definition qbytearray.h:57
QByteArray toLower() const &
Definition qbytearray.h:254
\inmodule QtCore
The QCursor class provides a mouse cursor with an arbitrary shape.
Definition qcursor.h:45
static QPlatformIntegration * platformIntegration()
QScreen * primaryScreen
the primary (or default) screen of the application.
qsizetype size() const noexcept
Definition qlist.h:397
const_reference at(qsizetype i) const noexcept
Definition qlist.h:446
qsizetype removeAll(const AT &t)
Definition qlist.h:592
void prepend(rvalue_ref t)
Definition qlist.h:473
\inmodule QtGui
The QPlatformCursor class provides information about pointer device events (movement,...
void *(* NativeResourceForBackingStoreFunction)(QBackingStore *backingStore)
void *(* NativeResourceForScreenFunction)(QScreen *screen)
void *(* NativeResourceForWindowFunction)(QWindow *window)
void *(* NativeResourceForContextFunction)(QOpenGLContext *context)
\inmodule QtCore\reentrant
Definition qrect.h:30
constexpr int height() const noexcept
Returns the height of the rectangle.
Definition qrect.h:239
constexpr bool isValid() const noexcept
Returns true if the rectangle is valid, otherwise returns false.
Definition qrect.h:170
constexpr int x() const noexcept
Returns the x-coordinate of the rectangle's left edge.
Definition qrect.h:185
constexpr int width() const noexcept
Returns the width of the rectangle.
Definition qrect.h:236
constexpr int y() const noexcept
Returns the y-coordinate of the rectangle's top edge.
Definition qrect.h:188
The QScreen class is used to query screen properties. \inmodule QtGui.
Definition qscreen.h:32
QString name
a user presentable string representing the screen
Definition qscreen.h:36
QPlatformScreen * handle() const
Get the platform screen handle.
Definition qscreen.cpp:83
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
@ VulkanSurface
Definition qsurface.h:35
\inmodule QtCore
\inmodule QtGui
Definition qwindow.h:63
@ AtomAT_SPI_BUS
Definition qxcbatom.h:206
xcb_connection_t * xcb_connection() const
QXcbEventQueue * eventQueue() const
bool(*)(xcb_generic_event_t *event, void *peekerData) PeekerCallback
bool removePeekerId(qint32 peekerId)
qint32 generatePeekerId()
bool peekEventQueue(PeekerCallback peeker, void *peekerData=nullptr, PeekOptions option=PeekDefault, qint32 peekerId=-1)
static QXcbIntegration * instance()
QXcbConnection * connection() const
virtual QPlatformNativeInterface::NativeResourceForBackingStoreFunction nativeResourceFunctionForBackingStore(const QByteArray &resource) const
virtual QPlatformNativeInterface::NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource) const
virtual QFunctionPointer platformFunction(const QByteArray &function) const
virtual QPlatformNativeInterface::NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource) const
virtual QPlatformNativeInterface::NativeResourceForScreenFunction nativeResourceFunctionForScreen(const QByteArray &resource) const
virtual QPlatformNativeInterface::NativeResourceForWindowFunction nativeResourceFunctionForWindow(const QByteArray &resource) const
xcb_connection_t * connection() const override
NativeResourceForScreenFunction nativeResourceFunctionForScreen(const QByteArray &resource) override
void removeHandler(QXcbNativeInterfaceHandler *handler)
NativeResourceForBackingStoreFunction nativeResourceFunctionForBackingStore(const QByteArray &resource) override
void addHandler(QXcbNativeInterfaceHandler *handler)
void * connectionForWindow(QWindow *window)
NativeResourceForIntegrationFunction nativeResourceFunctionForIntegration(const QByteArray &resource) override
static bool peekEventQueue(QXcbEventQueue::PeekerCallback peeker, void *peekerData=nullptr, QXcbEventQueue::PeekOptions option=QXcbEventQueue::PeekDefault, qint32 peekerId=-1)
void * displayForWindow(QWindow *window)
static void setAppUserTime(QScreen *screen, xcb_timestamp_t time)
void * nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *backingStore) override
void * appUserTime(const QXcbScreen *screen)
void * appTime(const QXcbScreen *screen)
static void setAppTime(QScreen *screen, xcb_timestamp_t time)
void * screenForWindow(QWindow *window)
Q_INVOKABLE QString dumpConnectionNativeWindows(const QXcbConnection *connection, WId root) const
void * nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context) override
void * getTimestamp(const QXcbScreen *screen)
void * nativeResourceForCursor(const QByteArray &resource, const QCursor &cursor) override
Display * display() const override
Q_INVOKABLE QString dumpNativeWindows(WId root=0) const
void * nativeResourceForScreen(const QByteArray &resource, QScreen *screen) override
void * nativeResourceForWindow(const QByteArray &resourceString, QWindow *window) override
static bool removePeekerId(qint32 peekerId)
static void setStartupId(const char *)
static qint32 generatePeekerId()
void * nativeResourceForIntegration(const QByteArray &resource) override
NativeResourceForWindowFunction nativeResourceFunctionForWindow(const QByteArray &resource) override
NativeResourceForContextFunction nativeResourceFunctionForContext(const QByteArray &resource) override
QFunctionPointer platformFunction(const QByteArray &function) const override
QXcbConnection * connection() const
Definition qxcbobject.h:17
QFontEngine::SubpixelAntialiasingType subpixelType() const
Definition qxcbscreen.h:186
xcb_window_t root() const
Definition qxcbscreen.h:153
int antialiasingEnabled() const
Definition qxcbscreen.h:187
QXcbVirtualDesktop * virtualDesktop() const
Definition qxcbscreen.h:144
QFontEngine::HintStyle hintStyle() const
Definition qxcbscreen.h:185
static QString windowTitle(const QXcbConnection *conn, xcb_window_t window)
#define this
Definition dialogs.cpp:9
QString str
[2]
QCursor cursor
Combined button and popup list for selecting options.
QTextStream & hex(QTextStream &stream)
Calls QTextStream::setIntegerBase(16) on stream and returns stream.
QTextStream & noforcesign(QTextStream &stream)
Calls QTextStream::setNumberFlags(QTextStream::numberFlags() & ~QTextStream::ForceSign) on stream and...
QTextStream & dec(QTextStream &stream)
Calls QTextStream::setIntegerBase(10) on stream and returns stream.
QTextStream & forcesign(QTextStream &stream)
Calls QTextStream::setNumberFlags(QTextStream::numberFlags() | QTextStream::ForceSign) on stream and ...
static void * context
#define QByteArrayLiteral(str)
Definition qbytearray.h:52
DBusConnection * connection
typedef QByteArray(EGLAPIENTRYP PFNQGSGETDISPLAYSPROC)()
static int resourceType(const QByteArray &key)
#define qWarning
Definition qlogging.h:166
GLenum GLuint GLint level
GLuint64 key
GLuint GLuint end
GLenum GLuint GLenum GLsizei length
GLenum GLenum GLsizei count
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLdouble s
[6]
Definition qopenglext.h:235
GLenum func
Definition qopenglext.h:663
GLuint GLuint * names
GLuint64EXT * result
[6]
GLuint GLenum option
QScreen * screen
[1]
Definition main.cpp:29
#define Q_UNUSED(x)
struct _XDisplay Display
size_t quintptr
Definition qtypes.h:167
int qint32
Definition qtypes.h:49
#define Q_XCB_REPLY(call,...)
static QXcbSystemTrayTracker * systemTrayTracker(const QScreen *s)
static QT_BEGIN_NAMESPACE int resourceType(const QByteArray &key)
static void dumpNativeWindowsRecursion(const QXcbConnection *connection, xcb_window_t window, int level, QTextStream &str)
aWidget window() -> setWindowTitle("New Window Title")
[2]
QNetworkReply * reply