fixed the gsettings signal handling broken after glib2.43

- Details:8ff5668a45

Change-Id: I1c192b02062e7757665ebe006fafa38d9435efcf
This commit is contained in:
jouyouyun 2015-06-09 15:14:31 +08:00
parent f850501146
commit 0756fd966b
6 changed files with 29 additions and 13 deletions

View File

@ -48,10 +48,12 @@ func (m *Manager) listenGSettings() {
m.greeter.Set(m.settings.GetString(key))
}
})
m.settings.GetString(deepinGSKeyTheme)
m.wrapSetting.Connect("changed::picture-uri", func(s *gio.Settings, key string) {
m.Set("background", m.wrapSetting.GetString(key))
})
m.wrapSetting.GetString("picture-uri")
if m.gnomeSettings == nil {
return
@ -60,6 +62,7 @@ func (m *Manager) listenGSettings() {
m.gnomeSettings.Connect("changed::picture-uri", func(s *gio.Settings, key string) {
m.bg.Set(m.gnomeSettings.GetString(key))
})
m.gnomeSettings.GetString("picture-uri")
}
func (t *Theme) handleEvent(ev *fsnotify.FileEvent) {

View File

@ -69,4 +69,5 @@ func listenDaemonSettings() {
loader.Stop(name)
}
})
daemonSettings.GetBoolean("mounts")
}

View File

@ -120,16 +120,6 @@ func (s *Setting) init() bool {
return false
}
s.displayMode = DisplayModeType(s.core.GetEnum(DisplayModeKey))
s.hideMode = HideModeType(s.core.GetEnum(HideModeKey))
if s.hideMode == HideModeAutoHide {
s.hideMode = HideModeSmartHide
s.core.SetEnum(HideModeKey, int32(HideModeSmartHide))
}
s.clockType = ClockType(s.core.GetEnum(ClockTypeKey))
s.displayDate = s.core.GetBoolean(DisplayDateKey)
s.displayWeek = s.core.GetBoolean(DisplayWeekKey)
s.listenSettingChange(HideModeKey, func(g *gio.Settings, key string) {
s.hideModeLock.Lock()
defer s.hideModeLock.Unlock()
@ -220,6 +210,20 @@ func (s *Setting) init() bool {
s.displayWeek = s.core.GetBoolean(DisplayWeekKey)
dbus.Emit(s, "DisplayWeekChanged", s.displayWeek)
})
// at least one read operation must be called after signal connected, otherwise,
// the signal connection won't work from glib 2.43.
// NB: https://github.com/GNOME/glib/commit/8ff5668a458344da22d30491e3ce726d861b3619
s.displayMode = DisplayModeType(s.core.GetEnum(DisplayModeKey))
s.hideMode = HideModeType(s.core.GetEnum(HideModeKey))
if s.hideMode == HideModeAutoHide {
s.hideMode = HideModeSmartHide
s.core.SetEnum(HideModeKey, int32(HideModeSmartHide))
}
s.clockType = ClockType(s.core.GetEnum(ClockTypeKey))
s.displayDate = s.core.GetBoolean(DisplayDateKey)
s.displayWeek = s.core.GetBoolean(DisplayWeekKey)
return true
}

View File

@ -266,6 +266,7 @@ func (obj *Manager) listenSettings() {
obj.setPropCustomList(getCustomListInfo())
}
})
bindGSettings.GetStrv(BIND_KEY_VALID_LIST)
sysGSettings.Connect("changed", func(s *gio.Settings, key string) {
if id, ok := getAccelIdByName(key); ok {
@ -290,6 +291,7 @@ func (obj *Manager) listenSettings() {
}
}
})
sysGSettings.GetStrv("file-manager")
}
func (obj *Manager) listenAllCustomSettings() {
@ -318,4 +320,5 @@ func (obj *Manager) listenCustomSettings(id int32) {
obj.setPropCustomList(getCustomListInfo())
})
gs.GetString("name")
}

View File

@ -26,9 +26,7 @@ func NewSetting(core SettingCoreInterface) (*Setting, error) {
return nil, errors.New("get failed")
}
s := &Setting{
core: core,
categoryDisplayMode: CategoryDisplayMode(core.GetEnum(CategoryDisplayModeKey)),
sortMethod: SortMethod(core.GetEnum(SortMethodkey)),
core: core,
}
s.listenSettingChange(CategoryDisplayModeKey, func(setting *gio.Settings, key string) {
@ -52,6 +50,12 @@ func NewSetting(core SettingCoreInterface) (*Setting, error) {
}
})
// at least one read operation must be called after signal connected, otherwise,
// the signal connection won't work from glib 2.43.
// NB: https://github.com/GNOME/glib/commit/8ff5668a458344da22d30491e3ce726d861b3619
s.categoryDisplayMode = CategoryDisplayMode(core.GetEnum(CategoryDisplayModeKey))
s.sortMethod = SortMethod(core.GetEnum(SortMethodkey))
return s, nil
}

View File

@ -156,6 +156,7 @@ func (p *Power) initUpower() {
p.coreSettings.Connect("changed::percentage-critical", func(s *gio.Settings, name string) {
p.handleBatteryPercentage()
})
p.coreSettings.GetInt("percentage-action")
}
func (p *Power) updateBatteryInfo() {