@@ -93,20 +93,20 @@ int main(int argc, char *argv[])
9393 org::freedesktop::systemd1::Manager systemdDBus (" org.freedesktop.systemd1" , " /org/freedesktop/systemd1" , QDBusConnection::sessionBus ());
9494 startSystemdUnit (systemdDBus, dmService, " replace" );
9595
96- QDBusServiceWatcher *watcher = new QDBusServiceWatcher (" org.deepin.dde.Session1" , QDBusConnection::sessionBus (), QDBusServiceWatcher::WatchForUnregistration);
96+ QDBusServiceWatcher *watcher = new QDBusServiceWatcher (" org.deepin.dde.Session1" , QDBusConnection::sessionBus (), QDBusServiceWatcher::WatchForUnregistration, &app );
9797 watcher->connect (watcher, &QDBusServiceWatcher::serviceUnregistered, [&] {
9898 qInfo () << " dde session exit" ;
9999 startSystemdUnit (systemdDBus, " dde-session-exit-task.service" , " replace" );
100100 qApp->quit ();
101101 });
102- pid_t curPid = getpid ();
103- QThreadPool::globalInstance ()->start ([curPid]() {
102+
103+ pid_t curPid = getpid ();
104+ Fifo *fifo = new Fifo (&app);
105+ QThreadPool::globalInstance ()->start ([curPid, fifo]() {
104106 qInfo ()<<" leader pipe thread id: " << QThread::currentThreadId () << " , pid: " << curPid;
105- Fifo *fifo = new Fifo;
106107 fifo->OpenWrite ();
107108 fifo->Write (QString::number (curPid));
108109 });
109-
110110 // We started the unit, open <dbus> and sleep forever.
111111 return app.exec ();
112112 }
@@ -116,7 +116,7 @@ int main(int argc, char *argv[])
116116 // QProcess no block "/usr/bin/deepin-keyring-whitebox", "--opt-client=waitfifonotify"),BUG-255907
117117 QProcess::startDetached (" /usr/bin/deepin-keyring-whitebox" , QStringList () << " --opt-client=waitfifonotify" );
118118
119- auto * session = new Session;
119+ auto * session = new Session (&app) ;
120120 new Session1Adaptor (session);
121121 QDBusConnection::sessionBus ().registerService (" org.deepin.dde.Session1" );
122122 QDBusConnection::sessionBus ().registerObject (" /org/deepin/dde/Session1" , " org.deepin.dde.Session1" , session);
@@ -126,7 +126,7 @@ int main(int argc, char *argv[])
126126 QDBusConnection::sessionBus ().registerService (" org.deepin.dde.SessionManager1" );
127127 QDBusConnection::sessionBus ().registerObject (" /org/deepin/dde/SessionManager1" , " org.deepin.dde.SessionManager1" , SessionManager::instance ());
128128
129- auto *wmSwitcher = new WMSwitcher ();
129+ auto *wmSwitcher = new WMSwitcher (&app );
130130 new WMSwitcher1Adaptor (wmSwitcher);
131131 QDBusConnection::sessionBus ().registerService (" org.deepin.dde.WMSwitcher1" );
132132 QDBusConnection::sessionBus ().registerObject (" /org/deepin/dde/WMSwitcher1" , wmSwitcher);
@@ -151,7 +151,7 @@ int main(int argc, char *argv[])
151151
152152 QThreadPool::globalInstance ()->start ([&session]() {
153153 qInfo ()<< " systemd service pipe thread id: " << QThread::currentThreadId ();
154- Fifo *fifo = new Fifo;
154+ Fifo *fifo = new Fifo () ;
155155 fifo->OpenRead ();
156156 qInfo () << " pipe open read finish" ;
157157 QString CurSessionPid;
@@ -166,6 +166,7 @@ int main(int argc, char *argv[])
166166 session->setSessionPath ();
167167 }
168168 }
169+ fifo->deleteLater ();
169170 qInfo () << " pipe read finish, app exit." ;
170171 qApp->quit ();
171172 });
0 commit comments