Tested the new version included in the source code archive file.
For backing up, there's not much differences compared with previous versions. But I noticed while comparing tags with baseline it uses 20 to 30% of CPU and about 1.4 GB of memory. MB is almost unusable during the task - mouse and keyboard lag and visual glitches in UI.
Tag history command too shows not much improvement in terms of CPU usage. Still I get "Not Responding" message while it's loading just two backups.
Thanks for making layout changes so that it now shows changed backups and changed tags only. But there are some bugs.
- The name of each backup is displayed incorrectly as the timestamp of the first backup file for every backup. Tooltip shows a different (correct) timestamp for each.
- It draws three lines for the same field (play count) maybe because three backups have a different value from that of library. But just one line can deliver the same information. If a cell has the same value as library, it can be left blank.
Also, tag history command sometimes didn't work with the following error. Restarting MB sorted out.
System.NullReferenceException: Object reference not set to an instance of an object.
at MusicBeePlugin.BackupType.Load(String fileName, String backupFileExtension)
at MusicBeePlugin.TagHistoryPlugin.fillTable(String folder, Boolean includeSubfolders, Int32 maxBackupCount, Int32 trackIndex, Boolean reuseCache)
at MusicBeePlugin.TagHistoryPlugin.TagHistoryPlugin_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Form.CallShownEvent()
at System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()