22using System . Numerics ;
33using System . Runtime . InteropServices ;
44using SDL2 ;
5+ using Serilog ;
56
67namespace Yafc . UI {
78 // Main window is resizable and hardware-accelerated
@@ -63,6 +64,7 @@ protected WindowMain(Padding padding) : base(padding) { }
6364 }
6465
6566 internal class MainWindowDrawingSurface : DrawingSurface {
67+ private static readonly ILogger logger = Logging . GetLogger < MainWindowDrawingSurface > ( ) ;
6668 private readonly IconAtlas atlas = new IconAtlas ( ) ;
6769 private readonly IntPtr circleTexture ;
6870
@@ -86,41 +88,41 @@ internal class MainWindowDrawingSurface : DrawingSurface {
8688 /// </param>
8789 /// <returns>The index of the selected render driver, including 0 (SDL autoselect) if no known-best driver exists on this machine.
8890 /// This value should be fed to the second argument of SDL_CreateRenderer()</returns>
89- private static int PickRenderDriver ( SDL . SDL_RendererFlags flags ) {
91+ private int PickRenderDriver ( SDL . SDL_RendererFlags flags ) {
9092 nint numRenderDrivers = SDL . SDL_GetNumRenderDrivers ( ) ;
91- System . Diagnostics . Debug . WriteLine ( $ "Render drivers available: { numRenderDrivers } ") ;
93+ logger . Debug ( $ "Render drivers available: { numRenderDrivers } ") ;
9294 int selectedRenderDriver = 0 ;
9395 for ( int thisRenderDriver = 0 ; thisRenderDriver < numRenderDrivers ; thisRenderDriver ++ ) {
9496 nint res = SDL . SDL_GetRenderDriverInfo ( thisRenderDriver , out SDL . SDL_RendererInfo rendererInfo ) ;
9597 if ( res != 0 ) {
9698 string reason = SDL . SDL_GetError ( ) ;
97- System . Diagnostics . Debug . WriteLine ( $ "Render driver { thisRenderDriver } GetInfo failed: { res } : { reason } ") ;
99+ logger . Warning ( $ "Render driver { thisRenderDriver } GetInfo failed: { res } : { reason } ") ;
98100 continue ;
99101 }
100102 // This is for some reason the one data structure that the dotnet library doesn't provide a native unmarshal for
101103 string ? driverName = Marshal . PtrToStringAnsi ( rendererInfo . name ) ;
102104 if ( driverName is null ) {
103- System . Diagnostics . Debug . WriteLine ( $ "Render driver { thisRenderDriver } has an empty name, cannot compare, skipping") ;
105+ logger . Warning ( $ "Render driver { thisRenderDriver } has an empty name, cannot compare, skipping") ;
104106 continue ;
105107 }
106108 System . Diagnostics . Debug . WriteLine ( $ "Render driver { thisRenderDriver } is { driverName } flags 0x{ rendererInfo . flags . ToString ( "X" ) } ") ;
107109 if ( ( rendererInfo . flags | ( uint ) flags ) != rendererInfo . flags ) {
108- System . Diagnostics . Debug . WriteLine ( $ "Render driver { driverName } flags do not cover requested flags { flags } , skipping") ;
110+ logger . Debug ( $ "Render driver { driverName } flags do not cover requested flags { flags } , skipping") ;
109111 continue ;
110112 }
111113
112114 // SDL2 does actually have a fixed (from code) ordering of available render drivers, so doing a full list scan instead of returning
113115 // immediately is a bit paranoid, but paranoia comes well-recommended when dealing with graphics drivers
114116 if ( driverName == "direct3d12" ) {
115- System . Diagnostics . Debug . WriteLine ( $ "Selecting render driver { thisRenderDriver } (DX12)") ;
117+ logger . Debug ( $ "Selecting render driver { thisRenderDriver } (DX12)") ;
116118 selectedRenderDriver = thisRenderDriver ;
117119 }
118120 else if ( driverName == "direct3d11" && selectedRenderDriver == 0 ) {
119- System . Diagnostics . Debug . WriteLine ( $ "Selecting render driver { thisRenderDriver } (DX11)") ;
121+ logger . Debug ( $ "Selecting render driver { thisRenderDriver } (DX11)") ;
120122 selectedRenderDriver = thisRenderDriver ;
121123 }
122124 }
123- System . Diagnostics . Debug . WriteLine ( $ "Selected render driver index { selectedRenderDriver } ") ;
125+ logger . Debug ( $ "Selected render driver index { selectedRenderDriver } ") ;
124126 return selectedRenderDriver ;
125127 }
126128
@@ -130,7 +132,7 @@ public MainWindowDrawingSurface(WindowMain window) : base(window.pixelsPerUnit)
130132 renderer = SDL . SDL_CreateRenderer ( window . window , PickRenderDriver ( SDL . SDL_RendererFlags . SDL_RENDERER_PRESENTVSYNC ) , SDL . SDL_RendererFlags . SDL_RENDERER_PRESENTVSYNC ) ;
131133
132134 nint result = SDL . SDL_GetRendererInfo ( renderer , out SDL . SDL_RendererInfo info ) ;
133- System . Diagnostics . Debug . WriteLine ( $ "Driver: { SDL . SDL_GetCurrentVideoDriver ( ) } Renderer: { Marshal . PtrToStringAnsi ( info . name ) } ") ;
135+ logger . Information ( $ "Driver: { SDL . SDL_GetCurrentVideoDriver ( ) } Renderer: { Marshal . PtrToStringAnsi ( info . name ) } ") ;
134136 circleTexture = SDL . SDL_CreateTextureFromSurface ( renderer , RenderingUtils . CircleSurface ) ;
135137 byte colorMod = RenderingUtils . darkMode ? ( byte ) 255 : ( byte ) 0 ;
136138 _ = SDL . SDL_SetTextureColorMod ( circleTexture , colorMod , colorMod , colorMod ) ;
0 commit comments