session-daemon: fix dde-session-daemon high cpu issue

Caused by an issue of network module, dbus connection
may be closed if IsDeviceEnabled() is called when
initializing.

And also adjust code order to ensure dbus.Wait()
executed before initializing modules, so that
dde-session-daemon will exited and restart nomally
if any dbus error occured.

tower: https://tower.im/projects/8f19f0bf0e754f0b82ef2c24bc230973/todos/5e26d05f489548858edc4e77c79c411d/#e339f0d9b44d4e6eb7ff6824a1b080ff
Change-Id: Iac8e533a7e65fb8d648fa9493cbaef3e88f166c7
This commit is contained in:
xufasheng 2014-12-29 16:02:48 +08:00 committed by Deepin Code Review
parent 4b562203d3
commit 1a8c1735da
3 changed files with 5 additions and 8 deletions

View File

@ -67,18 +67,19 @@ func main() {
initPlugins()
listenDaemonSettings()
loader.Start()
defer loader.Stop()
go func() {
if err := dbus.Wait(); err != nil {
logger.Errorf("Lost dbus: %v", err)
os.Exit(-1)
} else {
logger.Info("dbus connection is closed by user")
os.Exit(0)
}
}()
loader.Start()
defer loader.Stop()
ddeSessionRegister()
dbus.DealWithUnhandledMessage()
glib.StartLoop()

View File

@ -207,7 +207,7 @@ func (m *Manager) getDeviceIndex(devs []*device, path dbus.ObjectPath) int {
}
func (m *Manager) IsDeviceEnabled(devPath dbus.ObjectPath) (enabled bool, err error) {
enabled = m.switchHandler.isDeviceEnabled(devPath)
enabled = m.config.getDeviceEnabled(devPath)
return
}

View File

@ -310,10 +310,6 @@ func (sh *switchHandler) saveAndDisconnectDevice(devPath dbus.ObjectPath) (err e
return
}
func (sh *switchHandler) isDeviceEnabled(devPath dbus.ObjectPath) (enabled bool) {
return sh.config.getDeviceEnabled(devPath)
}
func (sh *switchHandler) enableDevice(devPath dbus.ObjectPath, enabled bool) (err error) {
if nmGetDeviceType(devPath) == NM_DEVICE_TYPE_WIFI {
if !nmGetWirelessHardwareEnabled() {