fix slow BluRay menu

This commit is contained in:
Frank Skare
2020-07-26 02:19:29 +02:00
parent c14a11170d
commit b4632a0b6e
3 changed files with 20 additions and 10 deletions

View File

@@ -2,6 +2,10 @@
5.4.8.4 Beta (not yet released)
============
- BluRays with dozens of titles showed all titles in the menu
which was difficult to choose and also extremely slow.
5.4.8.3 Beta
============

View File

@@ -268,15 +268,18 @@ namespace mpvnet
lock (core.BluRayTitles)
{
List<(int Index, TimeSpan Len)> items = new List<(int Index, TimeSpan Len)>();
for (int i = 0; i < core.BluRayTitles.Count; i++)
{
if (core.BluRayTitles[i] != "00:00:00")
{
int tmp = i;
MenuItem.Add(titles.DropDownItems, $"{core.BluRayTitles[i]} ({i})",
() => core.SetBluRayTitle(tmp));
}
}
items.Add((i, core.BluRayTitles[i]));
var titleItems = items.OrderByDescending(item => item.Len)
.Take(20).OrderBy(item => item.Index);
foreach (var item in titleItems)
if (item.Len != TimeSpan.Zero)
MenuItem.Add(titles.DropDownItems, $"{item.Len} ({item.Index})",
() => core.SetBluRayTitle(item.Index));
}
}
}

View File

@@ -80,7 +80,7 @@ namespace mpvnet
public List<MediaTrack> MediaTracks { get; set; } = new List<MediaTrack>();
public List<KeyValuePair<string, double>> Chapters { get; set; } = new List<KeyValuePair<string, double>>();
public List<string> BluRayTitles { get; } = new List<string>();
public List<TimeSpan> BluRayTitles { get; } = new List<TimeSpan>();
public IntPtr Handle { get; set; }
public IntPtr WindowHandle { get; set; }
@@ -614,7 +614,10 @@ namespace mpvnet
if (msg.Contains(" duration: "))
{
int start = msg.IndexOf(" duration: ") + 11;
BluRayTitles.Add(msg.Substring(start, 8));
BluRayTitles.Add(new TimeSpan(
msg.Substring(start, 2).ToInt(),
msg.Substring(start + 3, 2).ToInt(),
msg.Substring(start + 6, 2).ToInt()));
}
}
}