mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-08-06 03:42:56 +00:00
Fix race condition between GApplication and GNotification
This commit is contained in:
@@ -821,6 +821,8 @@ bool ByDefault() {
|
||||
}
|
||||
|
||||
void Create(Window::Notifications::System *system) {
|
||||
static auto ServiceWatcher = CreateServiceWatcher();
|
||||
|
||||
const auto managerSetter = [=] {
|
||||
using ManagerType = Window::Notifications::ManagerType;
|
||||
if ((Core::App().settings().nativeNotifications() || Enforced())
|
||||
@@ -839,21 +841,34 @@ void Create(Window::Notifications::System *system) {
|
||||
};
|
||||
|
||||
if (Gio::Application::get_default()) {
|
||||
ServiceWatcher = nullptr;
|
||||
ServiceRegistered = false;
|
||||
CurrentServerInformation = std::nullopt;
|
||||
CurrentCapabilities = QStringList{};
|
||||
managerSetter();
|
||||
return;
|
||||
}
|
||||
|
||||
static const auto ServiceWatcher = CreateServiceWatcher();
|
||||
|
||||
const auto counter = std::make_shared<int>(2);
|
||||
const auto oneReady = [=] {
|
||||
if (!--*counter) {
|
||||
// GApplication may be created while the reply is received
|
||||
if (Gio::Application::get_default()) {
|
||||
Core::App().notifications().createManager();
|
||||
return;
|
||||
}
|
||||
managerSetter();
|
||||
}
|
||||
};
|
||||
|
||||
// snap doesn't allow access when the daemon is not running :(
|
||||
StartServiceAsync([=] {
|
||||
// GApplication may be created while the reply is received
|
||||
if (Gio::Application::get_default()) {
|
||||
Core::App().notifications().createManager();
|
||||
return;
|
||||
}
|
||||
|
||||
ServiceRegistered = GetServiceRegistered();
|
||||
|
||||
if (!ServiceRegistered) {
|
||||
|
||||
Reference in New Issue
Block a user