From 5a51e6ec4f05827c1193d09210fe2776823063f6 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Mon, 28 Feb 2022 18:22:26 +0200 Subject: [PATCH] optimize QSystemTrayIconSys::locateSystemTray() method Signed-off-by: Ivailo Monev --- src/gui/util/qsystemtrayicon_x11.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/gui/util/qsystemtrayicon_x11.cpp b/src/gui/util/qsystemtrayicon_x11.cpp index b3d9152ea..ed0c00cd5 100644 --- a/src/gui/util/qsystemtrayicon_x11.cpp +++ b/src/gui/util/qsystemtrayicon_x11.cpp @@ -32,24 +32,27 @@ #include "qtimer.h" #include "qsystemtrayicon_p.h" #include "qpaintengine.h" +#include "qcorecommon_p.h" #ifndef QT_NO_SYSTEMTRAYICON + QT_BEGIN_NAMESPACE Window QSystemTrayIconSys::sysTrayWindow = XNone; QList QSystemTrayIconSys::trayIcons; QCoreApplication::EventFilter QSystemTrayIconSys::oldEventFilter = 0; Atom QSystemTrayIconSys::sysTraySelection = XNone; -XVisualInfo QSystemTrayIconSys::sysTrayVisual = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +XVisualInfo QSystemTrayIconSys::sysTrayVisual = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // Locate the system tray Window QSystemTrayIconSys::locateSystemTray() { Display *display = QX11Info::display(); if (sysTraySelection == XNone) { - int screen = QX11Info::appScreen(); - QString net_sys_tray = QString::fromLatin1("_NET_SYSTEM_TRAY_S%1").arg(screen); - sysTraySelection = XInternAtom(display, net_sys_tray.toLatin1(), False); + const int screen = QX11Info::appScreen(); + QSTACKARRAY(char, snprintfbuf, 32); + ::snprintf(snprintfbuf, sizeof(snprintfbuf), "_NET_SYSTEM_TRAY_S%i", screen); + sysTraySelection = XInternAtom(display, snprintfbuf, False); } return XGetSelectionOwner(QX11Info::display(), sysTraySelection); @@ -366,6 +369,5 @@ void QSystemTrayIconPrivate::showMessage_sys(const QString &message, const QStri } QT_END_NAMESPACE + #endif //QT_NO_SYSTEMTRAYICON - -