Skip to content

Commit 611e19d

Browse files
committed
fix: fix some modules loaded failed
dde-session-daemon part2 load after org.deepin.dde.SessionManager1 running Log: pms: BUG-323803
1 parent 0233a35 commit 611e19d

1 file changed

Lines changed: 40 additions & 13 deletions

File tree

bin/dde-session-daemon/daemon.go

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@
55
package main
66

77
import (
8-
"errors"
98
"fmt"
109
"os"
1110
"strings"
11+
"sync"
1212

1313
"github.com/godbus/dbus/v5"
14-
"github.com/linuxdeepin/dde-api/session"
1514
"github.com/linuxdeepin/dde-daemon/calltrace"
1615
"github.com/linuxdeepin/dde-daemon/loader"
16+
dbusmgr "github.com/linuxdeepin/go-dbus-factory/system/org.freedesktop.dbus"
1717
"github.com/linuxdeepin/go-gir/glib-2.0"
1818
"github.com/linuxdeepin/go-lib/dbusutil"
1919
"github.com/linuxdeepin/go-lib/gsettings"
@@ -252,14 +252,44 @@ func (s *SessionDaemon) getAllDefaultDisabledModules() []string {
252252

253253
func (s *SessionDaemon) execDefaultAction() {
254254
var err error
255-
if hasDDECookie {
256-
// start part1
257-
err = loader.EnableModules(s.part1EnabledModules, s.part1DisabledModules, 0)
258-
session.Register()
259-
260-
} else {
261-
err = loader.EnableModules(s.getAllDefaultEnabledModules(),
262-
s.getAllDefaultDisabledModules(), getEnableFlag(s.flags))
255+
err = loader.EnableModules(s.part1EnabledModules, s.part1DisabledModules, 0)
256+
if err != nil {
257+
logger.Warning("Failed to enable part1 modules:", err)
258+
os.Exit(3)
259+
}
260+
var once sync.Once
261+
262+
sessionBus, _ := dbus.SessionBus()
263+
dbusDaemon := dbusmgr.NewDBus(sessionBus)
264+
sessionSigLoop := dbusutil.NewSignalLoop(sessionBus, 10)
265+
sessionSigLoop.Start()
266+
dbusDaemon.InitSignalExt(sessionSigLoop, true)
267+
var handler dbusutil.SignalHandlerId
268+
handler, err = dbusDaemon.ConnectNameOwnerChanged(func(name, oldOwner, newOwner string) {
269+
if name == "org.deepin.dde.SessionManager1" {
270+
if len(newOwner) != 0 {
271+
logger.Info("org.deepin.dde.SessionManager1 is starting")
272+
once.Do(func() {
273+
s.StartPart2()
274+
dbusDaemon.RemoveHandler(handler)
275+
})
276+
}
277+
}
278+
})
279+
if err != nil {
280+
logger.Warning(err)
281+
}
282+
283+
ok, err := dbusDaemon.NameHasOwner(0, "org.deepin.dde.SessionManager1")
284+
if err != nil {
285+
logger.Warning("Failed to check org.deepin.dde.SessionManager1 owner:", err)
286+
os.Exit(3)
287+
}
288+
if ok {
289+
once.Do(func() {
290+
s.StartPart2()
291+
dbusDaemon.RemoveHandler(handler)
292+
})
263293
}
264294

265295
if err != nil {
@@ -306,9 +336,6 @@ func (s *SessionDaemon) CallTrace(times, seconds uint32) *dbus.Error {
306336
}
307337

308338
func (s *SessionDaemon) StartPart2() *dbus.Error {
309-
if !hasDDECookie {
310-
return dbusutil.ToError(errors.New("env DDE_SESSION_PROCESS_COOKIE_ID is empty"))
311-
}
312339
// start part2
313340
err := loader.EnableModules(s.part2EnabledModules, s.part2DisabledModules, 0)
314341
return dbusutil.ToError(err)

0 commit comments

Comments
 (0)