From c205b0372648d65ac2dbe25c55200bb382ecae7c Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 19 Oct 2015 18:31:22 +1100 Subject: [PATCH] Make the new launcher cross-platform. --- Launcher2/LauncherWindow.cs | 13 ++++++++----- OpenTK/Platform/IWindowInfo.cs | 1 + OpenTK/Platform/MacOS/CarbonWindowInfo.cs | 5 +++++ OpenTK/Platform/Windows/WinWindowInfo.cs | 4 ++++ OpenTK/Platform/X11/X11WindowInfo.cs | 4 ++++ 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Launcher2/LauncherWindow.cs b/Launcher2/LauncherWindow.cs index 9502f60d9..b5485ea32 100644 --- a/Launcher2/LauncherWindow.cs +++ b/Launcher2/LauncherWindow.cs @@ -60,7 +60,12 @@ namespace Launcher2 { Window.Visible = true; Drawer = new GdiPlusDrawer2D( null ); Init(); - SetScreen( new ResourcesScreen( this ) ); + + if( !ResourceFetcher.CheckAllResourcesExist() ) { + SetScreen( new ResourcesScreen( this ) ); + } else { + SetScreen( new MainScreen( this ) ); + } while( true ) { Window.ProcessEvents(); @@ -78,10 +83,8 @@ namespace Launcher2 { if( screen != null ) screen.Dirty = false; - WinWindowInfo info = (WinWindowInfo)Window.WindowInfo; - IntPtr dc = info.DeviceContext; - - using( Graphics g = Graphics.FromHdc( dc ) ) + IntPtr hwnd = Window.WindowInfo.WinHandle; + using( Graphics g = Graphics.FromHwnd( hwnd ) ) g.DrawImage( Framebuffer, 0, 0, Framebuffer.Width, Framebuffer.Height ); } diff --git a/OpenTK/Platform/IWindowInfo.cs b/OpenTK/Platform/IWindowInfo.cs index 407a7e5a7..68156d3fc 100644 --- a/OpenTK/Platform/IWindowInfo.cs +++ b/OpenTK/Platform/IWindowInfo.cs @@ -13,5 +13,6 @@ namespace OpenTK.Platform /// Descibes an OS window. public interface IWindowInfo : IDisposable { + IntPtr WinHandle { get; } } } diff --git a/OpenTK/Platform/MacOS/CarbonWindowInfo.cs b/OpenTK/Platform/MacOS/CarbonWindowInfo.cs index be2ab6300..c7708defe 100644 --- a/OpenTK/Platform/MacOS/CarbonWindowInfo.cs +++ b/OpenTK/Platform/MacOS/CarbonWindowInfo.cs @@ -87,6 +87,11 @@ namespace OpenTK.Platform.MacOS } #endregion + + // TODO: I have no idea if this is right. + public IntPtr WinHandle { + get { return windowRef; } + } #region IDisposable Members diff --git a/OpenTK/Platform/Windows/WinWindowInfo.cs b/OpenTK/Platform/Windows/WinWindowInfo.cs index 4ccd3673c..639a91377 100644 --- a/OpenTK/Platform/Windows/WinWindowInfo.cs +++ b/OpenTK/Platform/Windows/WinWindowInfo.cs @@ -112,5 +112,9 @@ namespace OpenTK.Platform.Windows { ~WinWindowInfo() { Dispose(false); } + + public IntPtr WinHandle { + get { return WindowHandle; } + } } } diff --git a/OpenTK/Platform/X11/X11WindowInfo.cs b/OpenTK/Platform/X11/X11WindowInfo.cs index e0a71567d..1acd6811e 100644 --- a/OpenTK/Platform/X11/X11WindowInfo.cs +++ b/OpenTK/Platform/X11/X11WindowInfo.cs @@ -77,5 +77,9 @@ namespace OpenTK.Platform.X11 { public override int GetHashCode() { return WindowHandle.GetHashCode() ^ Display.GetHashCode(); } + + public IntPtr WinHandle { + get { return WindowHandle; } + } } }