From 5872a89474f632188b650d3d2d13193a3c624049 Mon Sep 17 00:00:00 2001 From: Andreas Buhr Date: Fri, 16 Oct 2020 16:27:14 +0200 Subject: name our glib event sources to ease debugging glib event sources can have a name, but it is not required. Internal to glib, it is common to give them a name, see for example https://git.io/JTZ8g . This patch gives a name to each glib event source created in qtbase. Task-number: QTBUG-84291 Change-Id: I4f04526dcec082242312e3a66da2adf37a22e626 Reviewed-by: Giuseppe D'Angelo --- src/corelib/kernel/qeventdispatcher_glib.cpp | 22 +++++++++++++--------- src/gui/platform/unix/qeventdispatcher_glib.cpp | 7 +++++-- src/plugins/platforms/xcb/qxcbeventdispatcher.cpp | 5 +++-- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp index 4efdcf4cc6..59c937362b 100644 --- a/src/corelib/kernel/qeventdispatcher_glib.cpp +++ b/src/corelib/kernel/qeventdispatcher_glib.cpp @@ -318,32 +318,36 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context) #endif // setup post event source - postEventSource = reinterpret_cast(g_source_new(&postEventSourceFuncs, - sizeof(GPostEventSource))); + GSource *source = g_source_new(&postEventSourceFuncs, sizeof(GPostEventSource)); + g_source_set_name(source, "[Qt] GPostEventSource"); + postEventSource = reinterpret_cast(source); + postEventSource->serialNumber.storeRelaxed(1); postEventSource->d = this; g_source_set_can_recurse(&postEventSource->source, true); g_source_attach(&postEventSource->source, mainContext); // setup socketNotifierSource - socketNotifierSource = - reinterpret_cast(g_source_new(&socketNotifierSourceFuncs, - sizeof(GSocketNotifierSource))); + source = g_source_new(&socketNotifierSourceFuncs, sizeof(GSocketNotifierSource)); + g_source_set_name(source, "[Qt] GSocketNotifierSource"); + socketNotifierSource = reinterpret_cast(source); (void) new (&socketNotifierSource->pollfds) QList(); g_source_set_can_recurse(&socketNotifierSource->source, true); g_source_attach(&socketNotifierSource->source, mainContext); // setup normal and idle timer sources - timerSource = reinterpret_cast(g_source_new(&timerSourceFuncs, - sizeof(GTimerSource))); + source = g_source_new(&timerSourceFuncs, sizeof(GTimerSource)); + g_source_set_name(source, "[Qt] GTimerSource"); + timerSource = reinterpret_cast(source); (void) new (&timerSource->timerList) QTimerInfoList(); timerSource->processEventsFlags = QEventLoop::AllEvents; timerSource->runWithIdlePriority = false; g_source_set_can_recurse(&timerSource->source, true); g_source_attach(&timerSource->source, mainContext); - idleTimerSource = reinterpret_cast(g_source_new(&idleTimerSourceFuncs, - sizeof(GIdleTimerSource))); + source = g_source_new(&idleTimerSourceFuncs, sizeof(GIdleTimerSource)); + g_source_set_name(source, "[Qt] GIdleTimerSource"); + idleTimerSource = reinterpret_cast(source); idleTimerSource->timerSource = timerSource; g_source_set_can_recurse(&idleTimerSource->source, true); g_source_attach(&idleTimerSource->source, mainContext); diff --git a/src/gui/platform/unix/qeventdispatcher_glib.cpp b/src/gui/platform/unix/qeventdispatcher_glib.cpp index eaa27de25c..bf9e31990e 100644 --- a/src/gui/platform/unix/qeventdispatcher_glib.cpp +++ b/src/gui/platform/unix/qeventdispatcher_glib.cpp @@ -88,8 +88,11 @@ QPAEventDispatcherGlibPrivate::QPAEventDispatcherGlibPrivate(GMainContext *conte : QEventDispatcherGlibPrivate(context) { Q_Q(QPAEventDispatcherGlib); - userEventSource = reinterpret_cast(g_source_new(&userEventSourceFuncs, - sizeof(GUserEventSource))); + + GSource *source = g_source_new(&userEventSourceFuncs, sizeof(GUserEventSource)); + g_source_set_name(source, "[Qt] GUserEventSource"); + userEventSource = reinterpret_cast(source); + userEventSource->q = q; userEventSource->d = this; g_source_set_can_recurse(&userEventSource->source, true); diff --git a/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp b/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp index 5055057db9..68259ff238 100644 --- a/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp +++ b/src/plugins/platforms/xcb/qxcbeventdispatcher.cpp @@ -104,8 +104,9 @@ QXcbGlibEventDispatcher::QXcbGlibEventDispatcher(QXcbConnection *connection, QOb m_xcbEventSourceFuncs.dispatch = xcbSourceDispatch; m_xcbEventSourceFuncs.finalize = nullptr; - m_xcbEventSource = reinterpret_cast( - g_source_new(&m_xcbEventSourceFuncs, sizeof(XcbEventSource))); + GSource *source = g_source_new(&m_xcbEventSourceFuncs, sizeof(XcbEventSource)); + g_source_set_name(source, "[Qt] XcbEventSource"); + m_xcbEventSource = reinterpret_cast(source); m_xcbEventSource->dispatcher = this; m_xcbEventSource->dispatcher_p = d_func(); -- cgit v1.2.3