}
} else if option == "autosave" {
if nativeValue.(float64) > 0 {
+ config.SetAutoTime(int(nativeValue.(float64)))
config.StartAutoSave()
} else {
- config.StopAutoSave()
+ config.SetAutoTime(0)
}
} else {
for _, pl := range config.Plugins {
package config
import (
- "log"
+ "sync"
"time"
)
var Autosave chan bool
+var autotime int
+
+// lock for autosave
+var autolock sync.Mutex
func init() {
Autosave = make(chan bool)
}
+func SetAutoTime(a int) {
+ autolock.Lock()
+ autotime = a
+ autolock.Unlock()
+}
+
+func GetAutoTime() int {
+ autolock.Lock()
+ a := autotime
+ autolock.Unlock()
+ return a
+}
+
func StartAutoSave() {
go func() {
for {
- autotime := time.Duration(GlobalSettings["autosave"].(float64))
if autotime < 1 {
break
}
- time.Sleep(autotime * time.Second)
- log.Println("Autosave")
+ time.Sleep(time.Duration(autotime) * time.Second)
+ // it's possible autotime was changed while sleeping
+ if autotime < 1 {
+ break
+ }
Autosave <- true
}
}()
}
-
-func StopAutoSave() {
- GlobalSettings["autosave"] = float64(0)
-}