workaround not reproducible logo drawing crash

This commit is contained in:
stax76
2022-04-02 11:15:04 +02:00
parent f4b4be5466
commit 8ed62df8e2
3 changed files with 32 additions and 22 deletions

View File

@@ -11,6 +11,8 @@
- mpv.net specific commands, the command palette, auto-play property
and various other things are documented in the manual.
- The action used for the right mouse button can be configured.
- Workaround not reproducible logo drawing crash.
- MediaInfo 22.03
5.7.0.0 Stable (2022-03-09)

View File

@@ -1330,34 +1330,41 @@ KP1 script-binding delete_current_file/confirm
public void ShowLogo()
{
if (MainForm.Instance is null)
if (MainForm.Instance == null || App.Settings.LogoCrash)
return;
bool december = DateTime.Now.Month == 12;
Rectangle cr = MainForm.Instance.ClientRectangle;
int len = Convert.ToInt32(cr.Height / (december ? 4.5 : 5));
if (len == 0)
return;
using (Bitmap bmp = new Bitmap(len, len))
try
{
using (Graphics gx = Graphics.FromImage(bmp))
bool december = DateTime.Now.Month == 12;
Rectangle cr = MainForm.Instance.ClientRectangle;
int len = Convert.ToInt32(cr.Height / (december ? 4.5 : 5));
if (len == 0)
return;
using (Bitmap bmp = new Bitmap(len, len))
{
gx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gx.Clear(Color.Black);
Rectangle rect = new Rectangle(0, 0, len, len);
Bitmap bmp2 = december ? Properties.Resources.mpvnet_santa : Properties.Resources.mpvnet;
gx.DrawImage(bmp2, rect);
BitmapData bd = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb);
int x = Convert.ToInt32((cr.Width - len) / (december ? 1.95 : 2));
int y = Convert.ToInt32((cr.Height - len) / 2.0 * (december ? 0.85 : 0.9));
CommandV("overlay-add", "0", $"{x}", $"{y}", "&" + bd.Scan0.ToInt64().ToString(), "0", "bgra", bd.Width.ToString(), bd.Height.ToString(), bd.Stride.ToString());
bmp.UnlockBits(bd);
IsLogoVisible = true;
using (Graphics gx = Graphics.FromImage(bmp))
{
gx.InterpolationMode = InterpolationMode.HighQualityBicubic;
gx.Clear(Color.Black);
Rectangle rect = new Rectangle(0, 0, len, len);
Bitmap bmp2 = december ? Properties.Resources.mpvnet_santa : Properties.Resources.mpvnet;
gx.DrawImage(bmp2, rect);
BitmapData bd = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb);
int x = Convert.ToInt32((cr.Width - len) / (december ? 1.95 : 2));
int y = Convert.ToInt32((cr.Height - len) / 2.0 * (december ? 0.85 : 0.9));
CommandV("overlay-add", "0", $"{x}", $"{y}", "&" + bd.Scan0.ToInt64().ToString(), "0", "bgra", bd.Width.ToString(), bd.Height.ToString(), bd.Stride.ToString());
bmp.UnlockBits(bd);
IsLogoVisible = true;
}
}
}
catch (Exception)
{
App.Settings.LogoCrash = true;
}
}
string GetLanguage(string id)

View File

@@ -15,6 +15,7 @@ namespace mpvnet
public class AppSettings
{
public bool InputDefaultBindingsFixApplied;
public bool LogoCrash;
public bool ShowMenuFixApplied;
public int Volume = 70;
public List<string> RecentFiles = new List<string>();