Don't throw an exception when creating a hardware cursor fails

This commit is contained in:
abcdefg30
2021-08-06 01:11:04 +02:00
committed by Paul Chote
parent f63e15f5de
commit b8ba1b36fe
3 changed files with 11 additions and 16 deletions

View File

@@ -118,18 +118,13 @@ namespace OpenRA.Graphics
var paddingTL = -(template.Bounds.Location - template.Sprites[i].Offset.XY.ToInt2());
var paddingBR = template.PaddedSize - new int2(template.Sprites[i].Bounds.Size) - paddingTL;
try
var hardwareCursor = CreateHardwareCursor(kv.Key, template.Sprites[i], paddingTL, paddingBR, -template.Bounds.Location);
if (hardwareCursor != null)
template.Cursors[i] = hardwareCursor;
else
{
template.Cursors[i] = CreateHardwareCursor(kv.Key, template.Sprites[i], paddingTL, paddingBR, -template.Bounds.Location);
}
catch (Exception e)
{
Log.Write("debug", "Failed to initialize hardware cursor for {0}.", template.Name);
Log.Write("debug", "Error was: " + e.Message);
Console.WriteLine("Failed to initialize hardware cursor for {0}.", template.Name);
Console.WriteLine("Error was: " + e.Message);
template.Cursors[i] = null;
Log.Write("debug", $"Failed to initialize hardware cursor for {template.Name}.");
Console.WriteLine($"Failed to initialize hardware cursor for {template.Name}.");
}
}
}

View File

@@ -45,9 +45,6 @@ namespace OpenRA.Platforms.Default
// This call very occasionally fails on Windows, but often works when retried.
for (var retries = 0; retries < 3 && Cursor == IntPtr.Zero; retries++)
Cursor = SDL.SDL_CreateColorCursor(surface, hotspot.X, hotspot.Y);
if (Cursor == IntPtr.Zero)
throw new Sdl2HardwareCursorException($"Failed to create cursor: {SDL.SDL_GetError()}");
}
catch
{

View File

@@ -344,11 +344,14 @@ namespace OpenRA.Platforms.Default
hotspot *= 2;
}
return new Sdl2HardwareCursor(size, data, hotspot);
var cursor = new Sdl2HardwareCursor(size, data, hotspot);
return cursor.Cursor == IntPtr.Zero ? null : cursor;
}
catch (Exception ex)
{
throw new Sdl2HardwareCursorException($"Failed to create hardware cursor `{name}` - {ex.Message}", ex);
Log.Write("debug", $"Failed to create hardware cursor `{name}` - {ex.Message}");
Console.WriteLine($"Failed to create hardware cursor `{name}` - {ex.Message}");
return null;
}
}