[Differential] [Commented On] D4799: Delay notifications until desktop session has loaded
Martin Klapetek
noreply at phabricator.kde.org
Sun Feb 26 00:01:40 UTC 2017
mck182 added a comment.
Thanks for the patch! I wanted to do exactly this a long
time ago. However this solution brings a burden to all
apps using KNotification in form of a blocking dbus call
which is further only relevant when used in Plasma.
That's a no-no I'm afraid, we'd have to find a better solution.
I was thinking that maybe KSplash should have the notifications
dbus interface instead and handle it somehow on its own,
either just collecting the notifications and then reemitting them
once it's done splashing, or just displaying them directly, I dunno.
INLINE COMMENTS
> knotificationmanager.cpp:140
>
> + d->blockNotifications = sessionBus.interface()->isServiceRegistered("org.kde.KSplash");
> + if (d->blockNotifications) {
The problem with this is that `isServiceRegistered` is
a blocking call. Blocking dbus calls are generally a nogo
because it can happen that it will get stuck in dbus
timeout, which is 25 secs by default. And that's bad.
Especially because this would be blocking the hosting
app.
Generally any dbus blocking calls are bad.
> knotificationmanager.cpp:143
> + qCDebug(LOG_KNOTIFICATIONS) << "Splash is in progress, delaying notifications";
> + QDBusServiceWatcher* watcher = new QDBusServiceWatcher(this);
> + watcher->setConnection(sessionBus);
The coding style of frameworks is ` *watcher`
> knotificationmanager.cpp:147
> + watcher->setWatchMode(QDBusServiceWatcher::WatchForUnregistration);
> + connect(watcher, SIGNAL(serviceUnregistered(const QString&)), this, SLOT(renotify(const QString&)));
> + }
We use the new signals/slots style in frameworks
> knotificationmanager.cpp:268
>
> +void KNotificationManager::renotify(const QString& serv)
> +{
`renotify` is not entirely ideal name; something like
`processQueue` would be much more fitting.
Also, coding style is ` &serv`
> knotificationmanager.cpp:275
> +
> + Q_FOREACH (KNotification* n, d->notifications.values()) {
> + notify(n);
Coding style is ` *n`
> knotificationmanager_p.h:71
> void reparseConfiguration(const QString &app);
> + void renotify(const QString&);
>
Coding style is `&` with the var name, also always
put the variable name in the header and use Q_UNUSED
in the implementation.
REPOSITORY
R289 KNotifications
REVISION DETAIL
https://phabricator.kde.org/D4799
EMAIL PREFERENCES
https://phabricator.kde.org/settings/panel/emailpreferences/
To: vpilo
Cc: mck182, #frameworks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20170226/8a3304b4/attachment.html>
More information about the Kde-frameworks-devel
mailing list