Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package deepin-daemon for openSUSE:Factory 
checked in at 2021-06-02 22:11:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/deepin-daemon (Old)
 and      /work/SRC/openSUSE:Factory/.deepin-daemon.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "deepin-daemon"

Wed Jun  2 22:11:10 2021 rev:2 rq:894969 version:5.13.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/deepin-daemon/deepin-daemon.changes      
2021-04-26 16:40:08.074125837 +0200
+++ /work/SRC/openSUSE:Factory/.deepin-daemon.new.1898/deepin-daemon.changes    
2021-06-02 22:11:25.192123176 +0200
@@ -1,0 +2,21 @@
+Sat May 22 11:53:04 UTC 2021 - Hillwood Yang <[email protected]>
+
+- Keep golang version on 1.15 on Tumbleweed, the project does not support 
+  golang 1.16+  
+
+-------------------------------------------------------------------
+Sat May  1 13:46:23 UTC 2021 - Hillwood Yang <[email protected]>
+
+- Update version to 5.13.10
+  * Disble bluetooth by default
+  * Disble calender service
+  * Fix save password on WIFI setting
+  * Update call power button on dde-lock
+  * Fix bluetooth connecting status
+
+-------------------------------------------------------------------
+Sun Apr 25 13:59:32 UTC 2021 - Hillwood Yang <[email protected]>
+
+- Fix build on Leap 15.3 
+
+-------------------------------------------------------------------

Old:
----
  dde-daemon-5.13.6.tar.gz

New:
----
  dde-daemon-5.13.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ deepin-daemon.spec ++++++
--- /var/tmp/diff_new_pack.VkkXg5/_old  2021-06-02 22:11:26.248123089 +0200
+++ /var/tmp/diff_new_pack.VkkXg5/_new  2021-06-02 22:11:26.248123089 +0200
@@ -19,7 +19,7 @@
 %define   import_path pkg.deepin.io/dde/daemon
 
 Name:           deepin-daemon
-Version:        5.13.6
+Version:        5.13.10
 Release:        0
 Summary:        Daemon handling the DDE session settings
 License:        GPL-3.0+
@@ -40,7 +40,9 @@
 Patch2:         disable-gobuild-in-makefile.patch
 Patch3:         xvfb-run.patch
 Group:          System/GUI/Other
-# BuildRequires:  golang(API) = 1.11
+%if 0%{?suse_version} > 1500
+BuildRequires:  golang(API) = 1.15
+%endif
 BuildRequires:  golang-packaging
 BuildRequires:  deepin-gettext-tools
 BuildRequires:  fontpackages-devel
@@ -70,7 +72,7 @@
 BuildRequires:  pkgconfig(xkbfile)
 BuildRequires:  golang-github-linuxdeepin-go-dbus-factory
 BuildRequires:  golang-github-linuxdeepin-dde-api
-%if 0%{?suse_version} <= 1500
+%if 0%{?sle_version} == 150200
 BuildRequires:  golang-github-stretchr-testify
 %endif
 %if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200
@@ -163,7 +165,7 @@
 
 %prep
 %autosetup -p1 -a2 -n %{_name}-%{version}
-%if 0%{?suse_version} <= 1500
+%if 0%{?sle_version} == 150200
 rm -rf vendor/github.com/stretchr/testify/
 %endif
 mkdir -p $HOME/rpmbuild/BUILD/go/src/
@@ -192,10 +194,10 @@
 %goinstall
 %gosrc
 %make_install
+%gofilelist
 pushd %{buildroot}%{_prefix}/lib/deepin-daemon
     ln -s ../../bin/* .
 popd
-%gofilelist
 
 install -Dm644 %{SOURCE1} 
%{buildroot}%{_prefix}/lib/sysusers.d/deepin-daemon.conf
 install -Dm755 %{SOURCE3} %{buildroot}%{_bindir}/%{name}-dbus-installer

++++++ dde-daemon-5.13.6.tar.gz -> dde-daemon-5.13.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bin/dde-session-daemon/daemon.go 
new/dde-daemon-5.13.10/bin/dde-session-daemon/daemon.go
--- old/dde-daemon-5.13.6/bin/dde-session-daemon/daemon.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/bin/dde-session-daemon/daemon.go     2021-03-23 
04:25:51.000000000 +0100
@@ -141,7 +141,7 @@
                "bluetooth",
                "screenedge",
                "mime",
-               "calendar",
+               //"calendar",
                "miracast", // need network
                "systeminfo",
                "lastore",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bin/dde-session-daemon/module.go 
new/dde-daemon-5.13.10/bin/dde-session-daemon/module.go
--- old/dde-daemon-5.13.6/bin/dde-session-daemon/module.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/bin/dde-session-daemon/module.go     2021-03-23 
04:25:51.000000000 +0100
@@ -57,7 +57,7 @@
        _ "pkg.deepin.io/dde/daemon/bluetooth"
        _ "pkg.deepin.io/dde/daemon/screenedge"
 
-       _ "pkg.deepin.io/dde/daemon/calendar"
+       //_ "pkg.deepin.io/dde/daemon/calendar"
        _ "pkg.deepin.io/dde/daemon/mime"
 
        // depends: network
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bluetooth/bluetooth.go 
new/dde-daemon-5.13.10/bluetooth/bluetooth.go
--- old/dde-daemon-5.13.6/bluetooth/bluetooth.go        2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/bluetooth/bluetooth.go       2021-03-23 
04:25:51.000000000 +0100
@@ -331,7 +331,7 @@
 
        b.agent.init()
        b.loadObjects()
-
+       b.connectCorePowered()
        b.obexAgent.init()
 
        b.config.clearSpareConfig(b)
@@ -1031,3 +1031,22 @@
                logger.Warning("failed to emit TransferFailed:", err)
        }
 }
+
+// ??????bluez???adapter???????????????,??????????????????????????????
+func (b *Bluetooth) connectCorePowered() {
+       for _, adapter := range b.adapters {
+               err := adapter.core.Powered().ConnectChanged(func(hasValue 
bool, value bool) {
+                       if !hasValue {
+                               return
+                       }
+                       adapterConfig, ok := b.config.Adapters[adapter.address]
+                       if ok {
+                               adapterConfig.Powered = value
+                               b.config.save()
+                       }
+               })
+               if err != nil {
+                       logger.Warning(err)
+               }
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bluetooth/config.go 
new/dde-daemon-5.13.10/bluetooth/config.go
--- old/dde-daemon-5.13.6/bluetooth/config.go   2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/bluetooth/config.go  2021-03-23 04:25:51.000000000 
+0100
@@ -83,7 +83,7 @@
 }
 
 func newAdapterConfig() (ac *adapterConfig) {
-       ac = &adapterConfig{Powered: true}
+       ac = &adapterConfig{Powered: false}
        return
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bluetooth/config_test.go 
new/dde-daemon-5.13.10/bluetooth/config_test.go
--- old/dde-daemon-5.13.6/bluetooth/config_test.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/bluetooth/config_test.go     2021-03-23 
04:25:51.000000000 +0100
@@ -20,7 +20,7 @@
 func Test_config(t *testing.T) {
        configAdapters := map[string]*adapterConfig{
                "00:1A:7D:DA:71:13": {
-                       Powered: true,
+                       Powered: false,
                },
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/bluetooth/device.go 
new/dde-daemon-5.13.10/bluetooth/device.go
--- old/dde-daemon-5.13.6/bluetooth/device.go   2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/bluetooth/device.go  2021-03-23 04:25:51.000000000 
+0100
@@ -394,7 +394,8 @@
                        return
                }
                d.Paired = value
-               logger.Debugf("%s Paired: %v", d, value)
+               d.updateState()   // 
Paired??????????????????????????????????????????State???ConnectState
+               logger.Debugf("%s Paired: %v State: %v", d, value, d.State)
 
                if d.Paired && d.connected && d.State == deviceStateConnected {
                        d.ConnectState = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/calendar/module.go 
new/dde-daemon-5.13.10/calendar/module.go
--- old/dde-daemon-5.13.6/calendar/module.go    2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/calendar/module.go   2021-03-23 04:25:51.000000000 
+0100
@@ -18,7 +18,7 @@
 var dbFile = filepath.Join(basedir.GetUserConfigDir(), 
"deepin/dde-daemon/calendar/scheduler.db")
 
 func init() {
-       loader.Register(newModule())
+       //loader.Register(newModule())
 }
 
 type Module struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/docs/session-power.md 
new/dde-daemon-5.13.10/docs/session-power.md
--- old/dde-daemon-5.13.6/docs/session-power.md 2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/docs/session-power.md        2021-03-23 
04:25:51.000000000 +0100
@@ -14,7 +14,7 @@
 ????????????????????????????????????
 ????????? 
 ```
-dde-shutdown
+dde-lock -t
 ```
 
 ### LidClosedAction
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/gesture/manager.go 
new/dde-daemon-5.13.10/gesture/manager.go
--- old/dde-daemon-5.13.6/gesture/manager.go    2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/gesture/manager.go   2021-03-23 04:25:51.000000000 
+0100
@@ -22,6 +22,8 @@
        "pkg.deepin.io/lib/dbusutil/proxy"
        "pkg.deepin.io/lib/gsettings"
        dutils "pkg.deepin.io/lib/utils"
+       clipboard 
"github.com/linuxdeepin/go-dbus-factory/com.deepin.dde.clipboard"
+       notification 
"github.com/linuxdeepin/go-dbus-factory/com.deepin.dde.notification"
 )
 
 //go:generate dbusutil-gen em -type Manager
@@ -49,6 +51,8 @@
        enabled        bool
        Infos          gestureInfos
        sessionmanager *sessionmanager.SessionManager
+       clipboard      *clipboard.Clipboard
+       notification   *notification.Notification
 }
 
 func newManager() (*Manager, error) {
@@ -116,6 +120,8 @@
                display:        display.NewDisplay(sessionConn),
                sysDaemon:      daemon.NewDaemon(systemConn),
                sessionmanager: sessionmanager.NewSessionManager(sessionConn),
+               clipboard:      clipboard.NewClipboard(sessionConn),
+               notification:   notification.NewNotification(sessionConn),
        }
 
        m.gesture = gesture.NewGesture(systemConn)
@@ -207,6 +213,24 @@
                logger.Error("connect handleTouchEdgeEvent failed:", err)
        }
 
+       _, err = m.gesture.ConnectTouchMovementEvent(func(direction string, 
fingers int32, startScaleX float64, startScaleY float64, endScaleX float64, 
endScaleY float64) {
+               should, err := m.shouldHandleEvent()
+               if err != nil {
+                       logger.Error("shouldHandleEvent failed:", err)
+                       return
+               }
+               if !should {
+                       return
+               }
+
+               err = m.handleTouchMovementEvent(direction, fingers, 
startScaleX, startScaleY, endScaleX, endScaleY)
+               if err != nil {
+                       logger.Error("handleTouchMovementEvent failed:", err)
+               }
+       })
+       if err != nil {
+               logger.Error("connect handleTouchMovementEvent failed:", err)
+       }
        m.listenGSettingsChanged()
 }
 
@@ -333,31 +357,36 @@
 }
 
 func (m *Manager) handleTouchEdgeEvent(edge string, scaleX float64, scaleY 
float64) error {
-       var cmd = ""
        screenWight, err := m.display.ScreenWidth().Get(0)
        if err != nil {
                logger.Error("get display.ScreenWidth failed:", err)
                return err
        }
 
-       if edge == "left" {
+       switch edge {
+       case "left":
                if scaleX*float64(screenWight) > 100 {
-                       cmd = "xdotool key ctrl+alt+v"
+                       return m.clipboard.Show(0)
                }
-       }
-
-       if edge == "right" {
+       case "right":
                if (1-scaleX)*float64(screenWight) > 100 {
-                       cmd = "dbus-send --type=method_call 
--dest=com.deepin.dde.osd /org/freedesktop/Notifications 
com.deepin.dde.Notification.Toggle"
+                       return m.notification.Show(0)
                }
        }
 
-       if len(cmd) != 0 {
-               out, err := exec.Command("/bin/sh", "-c", cmd).CombinedOutput()
-               if err != nil {
-                       return fmt.Errorf("%s", string(out))
+       return nil
+}
+
+func (m *Manager) handleTouchMovementEvent(direction string, fingers int32, 
startScaleX float64, startScaleY float64, endScaleX float64, endScaleY float64) 
error{
+       if fingers == 1 {
+               switch direction {
+               case "left":
+                       return m.clipboard.Hide(0)
+               case "right":
+                       return m.notification.Hide(0)
                }
        }
+
        return nil
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/keybinding/audio_controller.go 
new/dde-daemon-5.13.10/keybinding/audio_controller.go
--- old/dde-daemon-5.13.6/keybinding/audio_controller.go        2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/keybinding/audio_controller.go       2021-03-23 
04:25:51.000000000 +0100
@@ -24,6 +24,7 @@
        "github.com/linuxdeepin/go-dbus-factory/com.deepin.daemon.audio"
        
"github.com/linuxdeepin/go-dbus-factory/com.deepin.daemon.helper.backlight"
        . "pkg.deepin.io/dde/daemon/keybinding/shortcuts"
+       "pkg.deepin.io/gir/gio-2.0"
 )
 
 const (
@@ -31,10 +32,24 @@
        volumeMax = 1.5
 )
 
+const (
+       gsKeyOsdAdjustVolState = "osd-adjust-volume-enabled"
+)
+
+type OsdVolumeState int32
+
+// Osd??????????????????
+const (
+       VolumeAdjustEnable OsdVolumeState = iota
+       VolumeAdjustForbidden
+       VolumeAdjustHidden
+)
+
 type AudioController struct {
        conn                   *dbus.Conn
        audioDaemon            *audio.Audio
        huaweiMicLedWorkaround *huaweiMicLedWorkaround
+       gsKeyboard             *gio.Settings
 }
 
 func NewAudioController(sessionConn *dbus.Conn,
@@ -44,6 +59,7 @@
                audioDaemon: audio.NewAudio(sessionConn),
        }
        c.initHuaweiMicLedWorkaround(backlightHelper)
+       c.gsKeyboard = gio.NewSettings(gsSchemaKeyboard)
        return c
 }
 
@@ -78,25 +94,40 @@
 }
 
 func (c *AudioController) toggleSinkMute() error {
-       sink, err := c.getDefaultSink()
-       if err != nil {
-               return err
-       }
+       var osd string
+       var state = OsdVolumeState(c.gsKeyboard.GetEnum(gsKeyOsdAdjustVolState))
 
-       mute, err := sink.Mute().Get(0)
-       if err != nil {
-               return err
-       }
+       // 
???OsdAdjustVolumeState?????????VolumeAdjustEnable?????????????????????????????????
+       if VolumeAdjustEnable == state {
+               sink, err := c.getDefaultSink()
+               if err != nil {
+                       return err
+               }
 
-       err = sink.SetMute(0, !mute)
-       if err != nil {
-               return err
+               mute, err := sink.Mute().Get(0)
+               if err != nil {
+                       return err
+               }
+
+               err = sink.SetMute(0, !mute)
+               if err != nil {
+                       return err
+               }
+               osd = "AudioMute"
+       } else if VolumeAdjustForbidden == state {
+               osd = "AudioMuteAsh"
+       } else {
+               return nil
        }
-       showOSD("AudioMute")
+
+       showOSD(osd)
        return nil
 }
 
 func (c *AudioController) toggleSourceMute() error {
+       var osd string
+       var state = OsdVolumeState(c.gsKeyboard.GetEnum(gsKeyOsdAdjustVolState))
+
        source, err := c.getDefaultSource()
        if err != nil {
                return err
@@ -107,69 +138,96 @@
                return err
        }
        mute = !mute
-       err = source.SetMute(0, mute)
-       if err != nil {
-               return err
-       }
 
-       var osd string
-       if mute {
-               osd = "AudioMicMuteOn"
+       // 
???OsdAdjustVolumeState?????????VolumeAdjustEnable?????????????????????????????????
+       if VolumeAdjustEnable == state {
+               err = source.SetMute(0, mute)
+               if err != nil {
+                       return err
+               }
+
+               if mute {
+                       osd = "AudioMicMuteOn"
+               } else {
+                       osd = "AudioMicMuteOff"
+               }
+       } else if VolumeAdjustForbidden == state {
+               if mute {
+                       osd = "AudioMicMuteOnAsh"
+               } else {
+                       osd = "AudioMicMuteOffAsh"
+               }
        } else {
-               osd = "AudioMicMuteOff"
+               return nil
        }
+
        showOSD(osd)
        return nil
 }
 
 func (c *AudioController) changeSinkVolume(raised bool) error {
-       sink, err := c.getDefaultSink()
-       if err != nil {
-               return err
-       }
+       var osd string
+       var state = OsdVolumeState(c.gsKeyboard.GetEnum(gsKeyOsdAdjustVolState))
 
-       osd := "AudioUp"
-       v, err := sink.Volume().Get(0)
-       if err != nil {
-               return err
-       }
+       // 
???OsdAdjustVolumeState?????????VolumeAdjustEnable??????????????????????????????????????????
+       if VolumeAdjustEnable == state {
+               sink, err := c.getDefaultSink()
+               if err != nil {
+                       return err
+               }
 
-       var step = 0.05
-       if !raised {
-               step = -step
-               osd = "AudioDown"
-       }
+               osd = "AudioUp"
+               v, err := sink.Volume().Get(0)
+               if err != nil {
+                       return err
+               }
 
-       maxVolume, err := c.audioDaemon.MaxUIVolume().Get(0)
-       if err != nil {
-               logger.Warning(err)
-               maxVolume = volumeMax
-       }
+               var step = 0.05
+               if !raised {
+                       step = -step
+                       osd = "AudioDown"
+               }
 
-       v += step
-       if v < volumeMin {
-               v = volumeMin
-       } else if v > maxVolume {
-               v = maxVolume
-       }
+               maxVolume, err := c.audioDaemon.MaxUIVolume().Get(0)
+               if err != nil {
+                       logger.Warning(err)
+                       maxVolume = volumeMax
+               }
 
-       logger.Debug("[changeSinkVolume] will set volume to:", v)
-       mute, err := sink.Mute().Get(0)
-       if err != nil {
-               return err
-       }
+               v += step
+               if v < volumeMin {
+                       v = volumeMin
+               } else if v > maxVolume {
+                       v = maxVolume
+               }
 
-       if mute {
-               err = sink.SetMute(0, false)
+               logger.Debug("[changeSinkVolume] will set volume to:", v)
+               mute, err := sink.Mute().Get(0)
                if err != nil {
-                       logger.Warning(err)
+                       return err
                }
-       }
 
-       err = sink.SetVolume(0, v, true)
-       if err != nil {
-               return err
+               if mute {
+                       err = sink.SetMute(0, false)
+                       if err != nil {
+                               logger.Warning(err)
+                       }
+               }
+
+               err = sink.SetVolume(0, v, true)
+               if err != nil {
+                       return err
+               }
+       } else if VolumeAdjustForbidden == state {
+               if raised {
+                       osd = "AudioUpAsh"
+               } else {
+                       osd = "AudioDownAsh"
+               }
+       } else {
+               return nil
        }
+
        showOSD(osd)
        return nil
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/keybinding/display_controller.go 
new/dde-daemon-5.13.10/keybinding/display_controller.go
--- old/dde-daemon-5.13.6/keybinding/display_controller.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/keybinding/display_controller.go     2021-03-23 
04:25:51.000000000 +0100
@@ -27,16 +27,32 @@
        "pkg.deepin.io/gir/gio-2.0"
 )
 
+const (
+       gsKeyOsdAdjustBrightnessState = "osd-adjust-brightness-enabled"
+)
+
+type OsdBrightnessState int32
+
+// Osd??????????????????
+const (
+       BrightnessAdjustEnable OsdBrightnessState = iota
+       BrightnessAdjustForbidden
+       BrightnessAdjustHidden
+)
+
 type DisplayController struct {
        display         *display.Display
        backlightHelper *backlight.Backlight
+       gsKeyboard      *gio.Settings
 }
 
 func NewDisplayController(backlightHelper *backlight.Backlight, sessionConn 
*dbus.Conn) *DisplayController {
-       return &DisplayController{
+       c := &DisplayController{
                backlightHelper: backlightHelper,
                display:         display.NewDisplay(sessionConn),
        }
+       c.gsKeyboard = gio.NewSettings(gsSchemaKeyboard)
+       return c
 }
 
 func (*DisplayController) Name() string {
@@ -70,17 +86,29 @@
        if !raised {
                osd = "BrightnessDown"
        }
+       var state = 
OsdBrightnessState(c.gsKeyboard.GetEnum(gsKeyOsdAdjustBrightnessState))
 
-       gs := gio.NewSettings("com.deepin.dde.power")
-       autoAdjustBrightnessEnabled := 
gs.GetBoolean(gsKeyAmbientLightAdjustBrightness)
-       if autoAdjustBrightnessEnabled {
-               gs.SetBoolean(gsKeyAmbientLightAdjustBrightness, false)
-       }
-       gs.Unref()
+       // 
?????????OsdAdjustBrightnessState?????????BrightnessAdjustEnable??????????????????????????????????????????
+       if BrightnessAdjustEnable == state {
+               gs := gio.NewSettings("com.deepin.dde.power")
+               autoAdjustBrightnessEnabled := 
gs.GetBoolean(gsKeyAmbientLightAdjustBrightness)
+               if autoAdjustBrightnessEnabled {
+                       gs.SetBoolean(gsKeyAmbientLightAdjustBrightness, false)
+               }
+               gs.Unref()
 
-       err := c.display.ChangeBrightness(dbus.FlagNoAutoStart, raised)
-       if err != nil {
-               return err
+               err := c.display.ChangeBrightness(dbus.FlagNoAutoStart, raised)
+               if err != nil {
+                       return err
+               }
+       } else if BrightnessAdjustForbidden == state {
+               if raised {
+                       osd = "BrightnessUpAsh"
+               } else {
+                       osd = "BrightnessDownAsh"
+               }
+       } else {
+               return nil
        }
 
        showOSD(osd)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/keybinding/special_keycode.go 
new/dde-daemon-5.13.10/keybinding/special_keycode.go
--- old/dde-daemon-5.13.6/keybinding/special_keycode.go 2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/keybinding/special_keycode.go        2021-03-23 
04:25:51.000000000 +0100
@@ -119,7 +119,6 @@
        }
 
        screenBlackLock := m.gsPower.GetBoolean("screen-black-lock")
-       sleepLock := m.gsPower.GetBoolean("sleep-lock") // NOTE : 
?????????????????????????????????
 
        if onBattery {
                powerPressAction = 
m.gsPower.GetEnum("battery-press-power-button")
@@ -130,19 +129,16 @@
        case powerActionShutdown:
                m.systemShutdown()
        case powerActionSuspend:
-               if sleepLock {
-                       systemLock()
-               }
-               m.systemSuspend()
+               m.systemSuspendByFront()
        case powerActionHibernate:
-               m.systemHibernate()
+               m.systemHibernateByFront()
        case powerActionTurnOffScreen:
                if screenBlackLock {
                        systemLock()
                }
                m.systemTurnOffScreen()
        case powerActionShowUI:
-               cmd := "dde-shutdown -s"
+               cmd := "dde-lock -t"
                go func() {
                        locked, err := m.sessionManager.Locked().Get(0)
                        if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/network/manager.go 
new/dde-daemon-5.13.10/network/manager.go
--- old/dde-daemon-5.13.6/network/manager.go    2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/network/manager.go   2021-03-23 04:25:51.000000000 
+0100
@@ -100,10 +100,6 @@
        stateHandler       *stateHandler
        proxyChainsManager *proxychains.Manager
 
-       hasSaveSecret bool          //determine whether to save the password to 
the keyring
-       items         []settingItem // save password information temporarily
-       saveToKeyring bool          // do not save password to keyring by 
default
-
        sessionSigLoop *dbusutil.SignalLoop
        syncConfig     *dsync.Config
 
@@ -177,7 +173,7 @@
                logger.Warning(err)
                return
        }
-       m.saveToKeyring = true
+
        // TODO(jouyouyun): improve in future
        // Sometimes the 'org.freedesktop.secrets' is not exists, this would 
block the 'init' function, so move to goroutinue
        go func() {
@@ -442,7 +438,7 @@
                return
        }
        logger.Debugf("portal addr is %v", portal)
-       err = exec.Command(`xdg-open`, portal).Start()
+       err = exec.Command(`xdg-open`, portal).Run()
        if err != nil {
                logger.Warningf("xdg open windows failed, err: %v", err)
                return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/network/manager_connection.go 
new/dde-daemon-5.13.10/network/manager_connection.go
--- old/dde-daemon-5.13.6/network/manager_connection.go 2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/network/manager_connection.go        2021-03-23 
04:25:51.000000000 +0100
@@ -454,8 +454,6 @@
                }
        }
 
-       m.hasSaveSecret = true
-       m.saveToKeyring = true
        _, err = nmActivateConnection(cpath, devPath)
        return
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/network/secret_agent.go 
new/dde-daemon-5.13.10/network/secret_agent.go
--- old/dde-daemon-5.13.6/network/secret_agent.go       2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/network/secret_agent.go      2021-03-23 
04:25:51.000000000 +0100
@@ -559,7 +559,7 @@
                                        isMustAsk(connectionData, settingName, 
secretKey) {
                                        askItems = append(askItems, secretKey)
                                }
-                       } else if secretFlags == secretFlagAgentOwned && 
sa.m.saveToKeyring {
+                       } else if secretFlags == secretFlagAgentOwned {
                                if requestNew {
                                        // check if 
NMSecretAgentGetSecretsFlags contains 
NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW
                                        // if is, means the password we set 
last time is incorrect, new password is needed
@@ -576,11 +576,6 @@
                                                askItems = append(askItems, 
secretKey)
                                        }
                                }
-                       } else if !sa.m.saveToKeyring {
-                               err = sa.deleteAll(connUUID)
-                               if err != nil {
-                                       return nil, err
-                               }
                        }
                }
                if allowInteraction && len(askItems) > 0 {
@@ -590,13 +585,12 @@
                                logger.Warning("askPasswords error:", err)
                                return nil, errSecretAgentUserCanceled
                        } else {
+                               var items []settingItem
                                for key, value := range resultAsk {
                                        setting[key] = dbus.MakeVariant(value)
                                        secretFlags, _ := 
getConnectionDataUint32(connectionData, settingName,
                                                getSecretFlagsKeyName(key))
                                        if secretFlags == secretFlagAgentOwned {
-                                               sa.m.hasSaveSecret = false
-                                               var items []settingItem
                                                valueStr, ok := 
setting[key].Value().(string)
                                                if ok {
                                                        label := 
fmt.Sprintf("Network secret for %s/%s/%s", connId, settingName, key)
@@ -607,24 +601,15 @@
                                                                label:       
label,
                                                        })
                                                }
-                                               sa.m.items = items
                                        }
                                }
-                       }
-               }
-               // when requestNew is true or dont save secretKey here
-               if !sa.m.saveToKeyring || requestNew {
-                       for _, item := range sa.m.items {
-                               secretFlags, _ := 
getConnectionDataUint32(connectionData, item.settingName,
-                                       getSecretFlagsKeyName(item.settingKey))
-                               if secretFlags == secretFlagAgentOwned {
-                                       sa.m.hasSaveSecret = false
-                                       sa.m.saveToKeyring = true
-                                       setting[item.settingKey] = 
dbus.MakeVariant(item.value)
-                                       return
+
+                               for _, item := range items {
+                                       sa.set(item.label, connUUID, 
item.settingName, item.settingKey, item.value)
                                }
                        }
                }
+
                resultSaved, err := sa.getAll(connUUID, settingName)
                if err != nil {
                        return nil, err
@@ -945,7 +930,6 @@
                for key, value := range setting {
                        if strv.Strv(secretKeys).Contains(key) {
                                // key is secret key
-
                                secretFlags, _ := 
getConnectionDataUint32(connectionData,
                                        settingName, getSecretFlagsKeyName(key))
                                if secretFlags != secretFlagAgentOwned {
@@ -968,16 +952,11 @@
        for _, item := range arr {
                label := item.label
                if label == "" {
-                       item.label = fmt.Sprintf("Network secret for %s/%s/%s", 
connId,
+                       label = fmt.Sprintf("Network secret for %s/%s/%s", 
connId,
                                item.settingName, item.settingKey)
                }
-               secretFlags, _ := getConnectionDataUint32(connectionData, 
item.settingName,
-                       getSecretFlagsKeyName(item.settingKey))
-               if secretFlags == secretFlagAgentOwned {
-                       sa.m.saveToKeyring = false
-                       sa.m.items = arr
-                       continue
-               }
+
+               sa.set(label, connUUID, item.settingName, item.settingKey, 
item.value)
                err := sa.set(item.label, connUUID, item.settingName, 
item.settingKey, item.value)
                if err != nil {
                        logger.Debug("failed to save Secret to keyring")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/network/state_handler.go 
new/dde-daemon-5.13.10/network/state_handler.go
--- old/dde-daemon-5.13.6/network/state_handler.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/network/state_handler.go     2021-03-23 
04:25:51.000000000 +0100
@@ -273,12 +273,6 @@
                                if sessionActived {
                                        notify(icon, "", fmt.Sprintf(Tr("%q 
connected"), msg))
                                }
-                               if !sh.m.hasSaveSecret {
-                                       if data, err := 
nmGetDeviceActiveConnectionData(path); err == nil {
-                                               
sh.savePasswordByConnectionStatus(data)
-                                       }
-                                       sh.m.hasSaveSecret = true
-                               }
                        }
                case nm.NM_DEVICE_STATE_FAILED, 
nm.NM_DEVICE_STATE_DISCONNECTED, nm.NM_DEVICE_STATE_NEED_AUTH,
                        nm.NM_DEVICE_STATE_UNMANAGED, 
nm.NM_DEVICE_STATE_UNAVAILABLE:
@@ -366,7 +360,6 @@
                                        if oldState == 
nm.NM_DEVICE_STATE_CONFIG && newState == nm.NM_DEVICE_STATE_NEED_AUTH {
                                                msg = 
fmt.Sprintf(Tr("Connection failed, unable to connect %q, wrong password"), 
dsi.aconnId)
                                        }
-                                       sh.m.hasSaveSecret = true
                                case 
CUSTOM_NM_DEVICE_STATE_REASON_CABLE_UNPLUGGED: //disconnected due to cable 
unplugged
                                        // if device is ethernet,notify 
disconnected message
 
@@ -404,23 +397,4 @@
                nmDestroyDevice(dev.nmDev)
                delete(sh.devices, path)
        }
-}
-
-//Because the password is saved to keyring by
-//default, the storage operation needs to be
-//performed according to the status judgment, and
-//only when the password is correct.
-func (sh *stateHandler) savePasswordByConnectionStatus(data connectionData) {
-       connUUID, ok := getConnectionDataString(data, "connection", "uuid")
-       if !ok {
-               logger.Debug("Failed to save password because can not find 
connUUID")
-               return
-       }
-       for _, item := range sh.m.items {
-               err := sh.m.secretAgent.set(item.label, connUUID, 
item.settingName, item.settingKey, item.value)
-               if err != nil {
-                       logger.Debug("failed to save secret when status 
connected")
-                       return
-               }
-       }
-}
+}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/network/utils.go 
new/dde-daemon-5.13.10/network/utils.go
--- old/dde-daemon-5.13.6/network/utils.go      2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/network/utils.go     2021-03-23 04:25:51.000000000 
+0100
@@ -154,7 +154,7 @@
        go func() {
                err = cmd.Wait()
                if err != nil {
-                       logger.Debug("failed to wait cmd:", err)
+                       logger.Warning("failed to wait cmd:", err)
                        return
                }
        }()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/rpm/dde-daemon.spec 
new/dde-daemon-5.13.10/rpm/dde-daemon.spec
--- old/dde-daemon-5.13.6/rpm/dde-daemon.spec   2021-02-25 04:35:15.000000000 
+0100
+++ new/dde-daemon-5.13.10/rpm/dde-daemon.spec  2021-03-23 04:25:51.000000000 
+0100
@@ -1,93 +1,59 @@
 %global _smp_mflags -j1
 
-%if 0%{?fedora} == 0
 %global debug_package   %{nil}
 %global _unpackaged_files_terminate_build 0
 %global _missing_build_ids_terminate_build 0
 %define __debug_install_post   \
    %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} 
"%{_builddir}/%{?buildsubdir}"\
 %{nil}
-%endif
 
 %global sname deepin-daemon
-%global repo dde-daemon
 %global release_name server-industry
 
-%if 0%{?fedora}
-Name:           %{sname}
-%else
-Name:           %{repo}
-%endif
-Version:        5.12.0.25
-Release:        1%{?fedora:%dist}
+Name:           dde-daemon
+Version:        5.13.9
+Release:        1
 Summary:        Daemon handling the DDE session settings
 License:        GPLv3
-%if 0%{?fedora}
-URL:            https://github.com/linuxdeepin/dde-daemon
-Source0:        %{url}/archive/%{version}/%{repo}-%{version}.tar.gz
-# upstream default mono font set to 'Noto Mono', which is not yet available in
-# Fedora. We change to 'Noto Sans Mono'
-Source1:        fontconfig.json
-Source2:        %{sname}.sysusers
-%else
 URL:            
http://shuttle.corp.deepin.com/cache/tasks/18802/unstable-amd64/
-Source0:        %{repo}-%{version}.orig.tar.xz
-%endif
+Source0:        %{name}-%{version}.orig.tar.xz
 
 BuildRequires:  python3
-%if 0%{?fedora}
-ExclusiveArch:  %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 
%{arm}}
-BuildRequires:  golang(pkg.deepin.io/dde/api/dxinput) >= 3.1.26
-BuildRequires:  golang(github.com/linuxdeepin/go-dbus-factory/org.bluez)
-BuildRequires:  golang(github.com/linuxdeepin/go-x11-client)
-BuildRequires:  golang(github.com/BurntSushi/xgb)
-BuildRequires:  golang(github.com/BurntSushi/xgbutil)
-BuildRequires:  golang(github.com/axgle/mahonia)
-BuildRequires:  golang(github.com/msteinert/pam)
-BuildRequires:  golang(github.com/nfnt/resize)
-BuildRequires:  golang(github.com/cryptix/wav)
-BuildRequires:  golang(gopkg.in/yaml.v2)
-BuildRequires:  golang(github.com/gosexy/gettext)
-BuildRequires:  golang(github.com/jinzhu/gorm)
-BuildRequires:  golang(github.com/jinzhu/gorm/dialects/sqlite)
-BuildRequires:  golang(github.com/kelvins/sunrisesunset)
-BuildRequires:  golang(github.com/rickb777/date)
-BuildRequires:  golang(github.com/teambition/rrule-go)
-BuildRequires:  golang(github.com/davecgh/go-spew/spew)
-%else
 BuildRequires:  gocode
-BuildRequires:  resize-devel
-BuildRequires:  gorm-devel
-BuildRequires:  inflection-devel
-%endif
 BuildRequires:  compiler(go-compiler)
 BuildRequires:  deepin-gettext-tools
 BuildRequires:  fontpackages-devel
 BuildRequires:  librsvg2-tools
 BuildRequires:  pam-devel >= 1.3.1
+BuildRequires:  pam >= 1.3.1
 BuildRequires:  glib2-devel
 BuildRequires:  gtk3-devel
 BuildRequires:  systemd-devel
+BuildRequires:  resize-devel
+BuildRequires:  gorm-devel
+BuildRequires:  inflection-devel
 BuildRequires:  alsa-lib-devel
+BuildRequires:  alsa-lib
 BuildRequires:  pulseaudio-libs-devel
 BuildRequires:  gdk-pixbuf2-xlib-devel
+BuildRequires:  gdk-pixbuf2-xlib
 BuildRequires:  libnl3-devel
+BuildRequires:  libnl3
 BuildRequires:  libgudev-devel
+BuildRequires:  libgudev
 BuildRequires:  libinput-devel
+BuildRequires:  libinput
 BuildRequires:  librsvg2-devel
+BuildRequires:  librsvg2
 BuildRequires:  libXcursor-devel
+BuildRequires:  ddcutil-devel
 BuildRequires:  pkgconfig(sqlite3)
 
-Requires:       bluez-libs%{?_isa}
+Requires:       bluez-libs
 Requires:       deepin-desktop-base
 Requires:       deepin-desktop-schemas
-%if 0%{?fedora}
-Requires:       deepin-session-ui
-Requires:       deepin-polkit-agent
-%else
 Requires:       dde-session-ui
 Requires:       dde-polkit-agent
-%endif
 Requires:       rfkill
 Requires:       gvfs
 Requires:       iw
@@ -97,21 +63,16 @@
 Recommends:     mobile-broadband-provider-info
 Recommends:     google-noto-mono-fonts
 Recommends:     google-noto-sans-fonts
-%if 0%{?fedora}
-Recommends:     google-noto-sans-mono-fonts
-%endif
 
 %description
 Daemon handling the DDE session settings
 
 %prep
-%autosetup -p1 -n %{repo}-%{version}
+%autosetup
 patch langselector/locale.go < rpm/locale.go.patch
 
 # Fix library exec path
 sed -i '/deepin/s|lib|libexec|' Makefile
-sed -i '/systemd/s|lib|usr/lib|' Makefile
-sed -i 's:/lib/udev/rules.d:%{_udevrulesdir}:' Makefile
 sed -i 
'/${DESTDIR}\/usr\/lib\/deepin-daemon\/service-trigger/s|${DESTDIR}/usr/lib/deepin-daemon/service-trigger|${DESTDIR}/usr/libexec/deepin-daemon/service-trigger|g'
 Makefile
 sed -i 
'/${DESTDIR}${PREFIX}\/lib\/deepin-daemon/s|${DESTDIR}${PREFIX}/lib/deepin-daemon|${DESTDIR}${PREFIX}/usr/libexec/deepin-daemon|g'
 Makefile
 sed -i 's|lib/NetworkManager|libexec|' network/utils_test.go
@@ -153,25 +114,14 @@
 
 %build
 BUILDID="0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n')"
-%if 0%{?fedora}
-export GOPATH="$(pwd)/build:%{gopath}"
-%else
 export GOPATH=/usr/share/gocode
-%endif
 %make_build GO_BUILD_FLAGS=-trimpath GOBUILD="go build -compiler gc -ldflags 
\"-B $BUILDID\""
+#make GOPATH=/usr/share/gocode
 
 %install
 BUILDID="0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \n')"
-%if 0%{?fedora}
-export GOPATH="$(pwd)/build:%{gopath}"
-%else
 export GOPATH=/usr/share/gocode
-%endif
-%make_install GOBUILD="go build -compiler gc -ldflags \"-B $BUILDID\""
-
-%if 0%{?fedora}
-install -Dm644 %{SOURCE2} %{buildroot}/usr/lib/sysusers.d/%{name}.conf
-%endif
+%make_install PAM_MODULE_DIR=%{_libdir}/security GOBUILD="go build -compiler 
gc -ldflags \"-B $BUILDID\""
 
 # fix systemd/logind config
 install -d %{buildroot}/usr/lib/systemd/logind.conf.d/
@@ -181,13 +131,7 @@
 HandleSuspendKey=ignore
 EOF
 
-%if 0%{?fedora}
-# install default settings
-install -Dm644 %{SOURCE1} \
-    %{buildroot}%{_datadir}/deepin-default-settings/fontconfig.json
-%endif
-
-%find_lang %{repo}
+%find_lang %{name}
 
 %post
 if [ $1 -ge 1 ]; then
@@ -208,50 +152,35 @@
   rm -f /var/log/deepin.log 
 fi
 
-%files -f %{repo}.lang
+%files -f %{name}.lang
 %doc README.md
 %license LICENSE
+%{_sysconfdir}/default/grub.d/10_deepin.cfg
+%{_sysconfdir}/grub.d/35_deepin_gfxmode
 %{_sysconfdir}/pam.d/deepin-auth-keyboard
-%{_sysconfdir}/NetworkManager/conf.d/deepin.dde.daemon.conf
-%{_sysconfdir}/modules-load.d/i2c_dev.conf
 %{_libexecdir}/%{sname}/
 %{_prefix}/lib/systemd/logind.conf.d/10-%{sname}.conf
 %{_datadir}/dbus-1/services/*.service
 %{_datadir}/dbus-1/system-services/*.service
 %{_datadir}/dbus-1/system.d/*.conf
 %{_datadir}/icons/hicolor/*/status/*
-%{_datadir}/%{repo}/
+%{_datadir}/%{name}/
 %{_datadir}/dde/
 %{_datadir}/polkit-1/actions/*.policy
 %{_var}/cache/appearance/
 %{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Accounts.pkla
+%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla
 %{_sysconfdir}/acpi/actions/deepin_lid.sh
 %{_sysconfdir}/acpi/events/deepin_lid
-# This directory is not provided by any other package.
-%dir %{_sysconfdir}/pulse/daemon.conf.d
 %{_sysconfdir}/pulse/daemon.conf.d/10-deepin.conf
-%{_udevrulesdir}/80-deepin-fprintd.rules
-%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Fprintd.pkla
-%{_unitdir}/dbus-com.deepin.dde.lockservice.service
-%{_unitdir}/deepin-accounts-daemon.service
-%{_unitdir}/hwclock_stop.service
-%if 0%{?fedora}
-%{_sysusersdir}/%{name}.conf
-%{_datadir}/deepin-default-settings/
-%exclude %{_sysconfdir}/default/grub.d/10_deepin.cfg
-%exclude %{_sysconfdir}/grub.d/35_deepin_gfxmode
-%exclude %{_libexecdir}/%{name}/grub2
-%exclude %{_datadir}/dbus-1/system-services/com.deepin.daemon.Grub2.service
-%exclude %{_datadir}/dbus-1/system.d/com.deepin.daemon.Grub2.conf
-%exclude %{_datadir}/polkit-1/actions/com.deepin.daemon.Grub2.policy
-%exclude 
%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla
-%else
-%{_sysconfdir}/default/grub.d/10_deepin.cfg
-%{_sysconfdir}/grub.d/35_deepin_gfxmode
-%{_var}/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Grub2.pkla
-%endif
+/lib/udev/rules.d/80-deepin-fprintd.rules
+%{_datadir}/pam-configs/deepin-auth
+/var/lib/polkit-1/localauthority/10-vendor.d/com.deepin.daemon.Fprintd.pkla
+%{_libdir}/security/pam_deepin_auth.so
+/lib/systemd/system/dbus-com.deepin.dde.lockservice.service
+/lib/systemd/system/deepin-accounts-daemon.service
 
 %changelog
-* Thu May 28 2020 uoser <[email protected]> - 5.9.4-2
-- Project init.
+* Wed Mar 12 2021 uoser <[email protected]> - 5.13.9-1
+- Update to 5.13.9
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/session/power/power_save_plan.go 
new/dde-daemon-5.13.10/session/power/power_save_plan.go
--- old/dde-daemon-5.13.6/session/power/power_save_plan.go      2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/session/power/power_save_plan.go     2021-03-23 
04:25:51.000000000 +0100
@@ -33,6 +33,7 @@
        "pkg.deepin.io/lib/dbusutil/gsprop"
 
        x "github.com/linuxdeepin/go-x11-client"
+       xscreensaver "github.com/linuxdeepin/go-x11-client/ext/screensaver"
        "github.com/linuxdeepin/go-x11-client/util/wm/ewmh"
        "pkg.deepin.io/lib/gsettings"
        "pkg.deepin.io/lib/procfs"
@@ -613,6 +614,28 @@
 
        logger.Info("HandleIdleOn")
 
+       idleTime := psp.metaTasks.min()
+       xConn, err := x.NewConn()
+       if err == nil {
+               xDefaultScreen := xConn.GetDefaultScreen()
+               if xDefaultScreen != nil {
+                       xInfo, err := xscreensaver.QueryInfo(xConn, 
x.Drawable(xDefaultScreen.Root)).Reply(xConn)
+                       if err == nil {
+                               idleTime = int32(xInfo.MsSinceUserInput / 1000)
+                       } else {
+                               logger.Warning(err)
+                       }
+               } else {
+                       logger.Warning("cannot get X11 default screen")
+               }
+               xConn.Close()
+       } else {
+               logger.Warning(err)
+       }
+
+       logger.Debugf("idle time: %d ms", idleTime)
+       psp.metaTasks.setRealDelay(idleTime)
+
        for _, t := range psp.metaTasks {
                logger.Debugf("do %s after %v", t.name, t.realDelay)
                task := newDelayedTask(t.name, t.realDelay, t.fn)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/system/gesture/gesture.go 
new/dde-daemon-5.13.10/system/gesture/gesture.go
--- old/dde-daemon-5.13.6/system/gesture/gesture.go     2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/system/gesture/gesture.go    2021-03-23 
04:25:51.000000000 +0100
@@ -169,6 +169,13 @@
                        scaleX, scaleY float64
                }
 
+               TouchMovementEvent struct {
+                       direction string
+                       fingers   int32
+                       startScaleX, startScaleY float64
+                       endScaleX, endScaleY float64
+               }
+
                TouchSinglePressTimeout struct {
                        time           int32
                        scaleX, scaleY float64
@@ -287,12 +294,18 @@
 }
 
 //export handleTouchScreenEvent
-func handleTouchScreenEvent(ty, direction, fingers C.int, scaleX, scaleY 
C.double) {
-       if int(ty) == int(C.get_edge_type()) {
-               err := _m.service.Emit(_m, "TouchEdgeEvent", 
TouchDirection(direction).String(), float64(scaleX), float64(scaleY))
+func handleTouchScreenEvent(ty, direction, fingers C.int, startScaleX, 
startScaleY, endScaleX, endScaleY C.double) {
+       switch int(ty) {
+       case int(C.get_edge_type()):
+               err := _m.service.Emit(_m, "TouchEdgeEvent", 
TouchDirection(direction).String(), float64(endScaleX), float64(endScaleY))
                if err != nil {
                        logger.Error("handleTouchScreenEvent failed:", err)
                }
+       case int(C.get_movement_type()):
+               err := _m.service.Emit(_m, "TouchMovementEvent", 
TouchDirection(direction).String(), fingers, float64(startScaleX), 
float64(startScaleY), float64(endScaleX), float64(endScaleY))
+               if err != nil {
+                       logger.Error("handleTouchMovementEvent failed:", err)
+               }
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/system/gesture/touchscreen_core.c 
new/dde-daemon-5.13.10/system/gesture/touchscreen_core.c
--- old/dde-daemon-5.13.6/system/gesture/touchscreen_core.c     2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/system/gesture/touchscreen_core.c    2021-03-23 
04:25:51.000000000 +0100
@@ -55,40 +55,12 @@
 };
 #endif
 
-int direction_to_int(enum Direction d) {
-    switch (d) {
-        case DIR_NONE:
-            return 510;
-        case DIR_TOP:
-            return 511;
-        case DIR_RIGHT:
-            return 512;
-        case DIR_BOT:
-            return 513;
-        case DIR_LEFT:
-            return 514;
-        default:
-            return -1;
-    }
+int get_edge_type() {
+    return (int)GT_EDGE;
 }
 
-int gesture_to_int(enum GestureType g) {
-    switch (g) {
-        case GT_NONE:
-            return 550;
-        case GT_TAP:
-            return 551;
-        case GT_MOVEMENT:
-            return 552;
-        case GT_EDGE:
-            return 553;
-        default:
-            return -1;
-    }
-}
-
-int get_edge_type() {
-    return gesture_to_int(GT_EDGE);
+int get_movement_type() {
+    return (int)GT_MOVEMENT;
 }
 
 //set move stop time when it's edge event
@@ -102,6 +74,12 @@
        edge_move_stop_time = duration;
 }
 
+// udpate touchscreen first touch point info
+void update_first_point_relative_coordinate(double x, double y) {
+    start_point_scale.x = x / screen.width;
+    start_point_scale.y = y / screen.height;
+}
+
 //update touchscreen last touch point info
 void  update_last_point_relative_coordinate(double x, double y) {
     last_point.x = x;
@@ -337,6 +315,7 @@
        m[slot].t_end = m[slot].t_start;
        m[slot].down = true;
 
+    update_first_point_relative_coordinate(m[slot].start.x, m[slot].start.y);
     update_last_point_relative_coordinate(m[slot].end.x, m[slot].end.y);
 
     if (cur_touch_finger_num(m) == 1)
@@ -476,9 +455,14 @@
                g.type = GT_TAP;
        } else if (g.num > 1) {
                g.type = GT_MOVEMENT;
-       } else if ((edge_dir = edge_move_direction(m, ready)) != DIR_NONE) {
-               g.type = GT_EDGE;
-               g.dir = edge_dir;
+       } else if (g.num == 1) {
+           edge_dir = edge_move_direction(m, ready);
+           if (edge_dir != DIR_NONE) {
+                   g.type = GT_EDGE;
+                   g.dir = edge_dir;
+               } else {
+                   g.type = GT_MOVEMENT;
+               }
        }
        return g;
 }
@@ -496,7 +480,7 @@
        logger("Handle movements: got gesture\n");
        print_gesture(&g);
 
-       handleTouchScreenEvent(gesture_to_int(g.type), direction_to_int(g.dir), 
g.num, last_point_scale.x, last_point_scale.y);
+       handleTouchScreenEvent((int)g.type, (int)g.dir, g.num, 
start_point_scale.x, start_point_scale.y, last_point_scale.x, 
last_point_scale.y);
 
        list_destroy(ready);
        logger("Handle movements: end\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dde-daemon-5.13.6/system/gesture/touchscreen_core.h 
new/dde-daemon-5.13.10/system/gesture/touchscreen_core.h
--- old/dde-daemon-5.13.6/system/gesture/touchscreen_core.h     2021-02-25 
04:35:15.000000000 +0100
+++ new/dde-daemon-5.13.10/system/gesture/touchscreen_core.h    2021-03-23 
04:25:51.000000000 +0100
@@ -8,19 +8,19 @@
 
 
 enum Direction {            // if applied to edges, will just denote the side 
of the edge
-       DIR_NONE = 510,
-       DIR_TOP = 511,          // movement towards top
-       DIR_RIGHT = 512,        // movement towards right
-       DIR_BOT = 513,          // movement towards bottom
-       DIR_LEFT = 514,         // movement towards left
+       DIR_NONE,
+       DIR_TOP,          // movement towards top
+       DIR_RIGHT,        // movement towards right
+       DIR_BOT,          // movement towards bottom
+       DIR_LEFT,         // movement towards left
 };
 typedef enum Direction Direction;
 
 enum GestureType {
-       GT_NONE = 550,          // not a gesture
-       GT_TAP = 551,           // single tap on the screen with no movement
-       GT_MOVEMENT = 552,      // general moving gesture
-       GT_EDGE = 553,        // movement starting on edge of screen
+       GT_NONE,          // not a gesture
+       GT_TAP,           // single tap on the screen with no movement
+       GT_MOVEMENT,      // general moving gesture
+       GT_EDGE,        // movement starting on edge of screen
 };
 
 typedef struct gesture {
@@ -54,6 +54,7 @@
 } moveStop;
 
 static point last_point;
+static point start_point_scale;
 static point last_point_scale;
 static screeninfo screen;
 static int move_stop_distance = 1;
@@ -63,6 +64,7 @@
 static double min_edge_distance = 10.0;   // minimum gesture distance from 
edge (in mm)
 
 int get_edge_type();
+int get_movement_type();
 point get_last_point_scale();
 void set_edge_move_stop_time(int duration);
 void handle_movements(movement *m);

Reply via email to