diff --git a/mpv.net/Misc/Program.cs b/mpv.net/Misc/Program.cs index d3983d8..2f04e82 100644 --- a/mpv.net/Misc/Program.cs +++ b/mpv.net/Misc/Program.cs @@ -25,8 +25,8 @@ namespace mpvnet return; } - Mutex mutex = new Mutex(true, "mpvnetProcessInstance", out bool isFirst); App.Init(); + Mutex mutex = new Mutex(true, "mpvnetProcessInstance", out bool isFirst); if ((App.ProcessInstance == "single" || App.ProcessInstance == "queue") && !isFirst) { @@ -49,6 +49,7 @@ namespace mpvnet } catch {} } + mutex.Dispose(); return; } diff --git a/mpv.net/mpv/mp.cs b/mpv.net/mpv/mp.cs index 0075c8e..4310c9c 100644 --- a/mpv.net/mpv/mp.cs +++ b/mpv.net/mpv/mp.cs @@ -574,25 +574,20 @@ namespace mpvnet else mp.commandv("loadfile", files[i], "append"); - mp.LoadFolder(files[0]); - } - - static void LoadFolder(string path) - { - if (get_property_int("playlist-count") == 1) - { - if (!File.Exists(path)) return; - List files = Directory.GetFiles(Path.GetDirectoryName(path)).ToList(); - files = files.Where((file) => App.VideoTypes.Contains(Path.GetExtension(file).TrimStart('.').ToLower()) || - App.AudioTypes.Contains(Path.GetExtension(file).TrimStart('.').ToLower())).ToList(); - files.Sort(new StringLogicalComparer()); - int index = files.IndexOf(path); - files.Remove(path); - foreach (string i in files) - commandv("loadfile", i, "append"); - if (index > 0) - commandv("playlist-move", "0", (index + 1).ToString()); - } + Thread.Sleep(50); // user reported race condition + string path = files[0]; + if (files.Length != 1 || !File.Exists(path)) return; + List filesInFolder = Directory.GetFiles(Path.GetDirectoryName(path)).ToList(); + filesInFolder = filesInFolder.Where((file) => + App.VideoTypes.Contains(Path.GetExtension(file).TrimStart('.').ToLower()) || + App.AudioTypes.Contains(Path.GetExtension(file).TrimStart('.').ToLower())).ToList(); + filesInFolder.Sort(new StringLogicalComparer()); + int index = filesInFolder.IndexOf(path); + filesInFolder.Remove(path); + foreach (string i in filesInFolder) + commandv("loadfile", i, "append"); + if (index > 0) + commandv("playlist-move", "0", (index + 1).ToString()); } static IntPtr AllocateUtf8IntPtrArrayWithSentinel(string[] arr, out IntPtr[] byteArrayPointers)