Jelajahi Sumber

Don't schedule summaries on all state changes

Prior to this change we schedule summaries on each state change, i.e.
scanning->idle and idle->scanning, which is unnecessary. Now we only do
it on index updates, plus the immediate one on going syncing->idle.
Jakob Borg 10 tahun lalu
induk
melakukan
069e8cf122
1 mengubah file dengan 18 tambahan dan 14 penghapusan
  1. 18 14
      cmd/syncthing/summarysvc.go

+ 18 - 14
cmd/syncthing/summarysvc.go

@@ -66,21 +66,25 @@ func (c *folderSummarySvc) listenForUpdates() {
 			data := ev.Data.(map[string]interface{})
 			folder := data["folder"].(string)
 
-			if ev.Type == events.StateChanged && data["to"].(string) == "idle" && data["from"].(string) == "syncing" {
-				// The folder changed to idle from syncing. We should do an
-				// immediate refresh to update the GUI. The send to
-				// c.immediate must be nonblocking so that we can continue
-				// handling events.
-
-				select {
-				case c.immediate <- folder:
-					c.foldersMut.Lock()
-					delete(c.folders, folder)
-					c.foldersMut.Unlock()
-
-				default:
+			switch ev.Type {
+			case events.StateChanged:
+				if data["to"].(string) == "idle" && data["from"].(string) == "syncing" {
+					// The folder changed to idle from syncing. We should do an
+					// immediate refresh to update the GUI. The send to
+					// c.immediate must be nonblocking so that we can continue
+					// handling events.
+
+					select {
+					case c.immediate <- folder:
+						c.foldersMut.Lock()
+						delete(c.folders, folder)
+						c.foldersMut.Unlock()
+
+					default:
+					}
 				}
-			} else {
+
+			default:
 				// This folder needs to be refreshed whenever we do the next
 				// refresh.