From f8866017a12e8670410dbc8c7bf364d4409d0f15 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Thu, 28 Jan 2016 15:34:34 +1100 Subject: [PATCH] Don't draw to framebuffer when the window is minimised, fixes crashing. --- Launcher2/Gui/Widgets/LauncherBooleanWidget.cs | 1 + Launcher2/Gui/Widgets/LauncherButtonWidget.cs | 3 +++ Launcher2/Gui/Widgets/LauncherInputWidget.cs | 3 ++- Launcher2/Gui/Widgets/LauncherLabelWidget.cs | 1 + Launcher2/LauncherWindow.cs | 5 +++++ 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs b/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs index 09aea7bf1..61fc1d8b2 100644 --- a/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherBooleanWidget.cs @@ -22,6 +22,7 @@ namespace Launcher2 { } public override void Redraw( IDrawer2D drawer ) { + if( Window.Minimised ) return; drawer.DrawRect( FastColour.Black, X, Y, Width, Height ); if( Value ) { DrawTextArgs args = new DrawTextArgs( "X", font, false ); diff --git a/Launcher2/Gui/Widgets/LauncherButtonWidget.cs b/Launcher2/Gui/Widgets/LauncherButtonWidget.cs index d71f2ee3b..ebeb20844 100644 --- a/Launcher2/Gui/Widgets/LauncherButtonWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherButtonWidget.cs @@ -27,6 +27,7 @@ namespace Launcher2 { } public override void Redraw( IDrawer2D drawer ) { + if( Window.Minimised ) return; string text = Text; if( !Active ) text = "&7" + text; int xOffset = Width - textSize.Width, yOffset = Height - textSize.Height; @@ -62,11 +63,13 @@ namespace Launcher2 { } public void RedrawBackground() { + if( Window.Minimised ) return; using( FastBitmap dst = new FastBitmap( Window.Framebuffer, true ) ) RedrawBackground( dst ); } public void RedrawBackground( FastBitmap dst ) { + if( Window.Minimised ) return; Rectangle rect = new Rectangle( X + border, Y + border, Width - border * 2, Height - border * 2 ); if( Window.ClassicMode ) { FastColour foreCol = Active ? new FastColour( 126, 136, 191 ) : new FastColour( 111, 111, 111 ); diff --git a/Launcher2/Gui/Widgets/LauncherInputWidget.cs b/Launcher2/Gui/Widgets/LauncherInputWidget.cs index 4bf9b3b70..19c10ab5f 100644 --- a/Launcher2/Gui/Widgets/LauncherInputWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherInputWidget.cs @@ -73,7 +73,8 @@ namespace Launcher2 { Size size = drawer.MeasureSize( ref args ); Width = Math.Max( ButtonWidth, size.Width + 15 ); textHeight = size.Height; - args.SkipPartsCheck = true; + args.SkipPartsCheck = true; + if( Window.Minimised ) return; FastColour col = Active ? new FastColour( 240, 240, 240 ) : new FastColour( 180, 180, 180 ); drawer.Clear( col, X + 1, Y, Width - 2, 2 ); diff --git a/Launcher2/Gui/Widgets/LauncherLabelWidget.cs b/Launcher2/Gui/Widgets/LauncherLabelWidget.cs index 8addff9a9..a78f71e9f 100644 --- a/Launcher2/Gui/Widgets/LauncherLabelWidget.cs +++ b/Launcher2/Gui/Widgets/LauncherLabelWidget.cs @@ -24,6 +24,7 @@ namespace Launcher2 { } public override void Redraw( IDrawer2D drawer ) { + if( Window.Minimised ) return; DrawTextArgs args = new DrawTextArgs( Text, font, true ); drawer.DrawText( ref args, X, Y ); } diff --git a/Launcher2/LauncherWindow.cs b/Launcher2/LauncherWindow.cs index 4cd0798fd..840cd6c77 100644 --- a/Launcher2/LauncherWindow.cs +++ b/Launcher2/LauncherWindow.cs @@ -44,6 +44,10 @@ namespace Launcher2 { /// Whether at the next tick, the launcher window should proceed to stop displaying frames and subsequently exit. public bool ShouldExit; + public bool Minimised { + get { return Window.WindowState == WindowState.Minimized || (Width == 1 && Height == 1); } + } + /// Contains metadata attached for different screen instances, /// typically used to save 'last text entered' text when a screen is disposed. public Dictionary> ScreenMetadata = @@ -60,6 +64,7 @@ namespace Launcher2 { logoFont = new Font( "Arial", 24, FontStyle.Regular ); string path = Assembly.GetExecutingAssembly().Location; Window.Icon = Icon.ExtractAssociatedIcon( path ); + //Minimised = Window.WindowState == WindowState.Minimized; if( Configuration.RunningOnWindows ) platformDrawer = new WinPlatformDrawer();