Don't throw an exception when creating a hardware cursor fails
This commit is contained in:
@@ -118,18 +118,13 @@ namespace OpenRA.Graphics
|
|||||||
var paddingTL = -(template.Bounds.Location - template.Sprites[i].Offset.XY.ToInt2());
|
var paddingTL = -(template.Bounds.Location - template.Sprites[i].Offset.XY.ToInt2());
|
||||||
var paddingBR = template.PaddedSize - new int2(template.Sprites[i].Bounds.Size) - paddingTL;
|
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);
|
Log.Write("debug", $"Failed to initialize hardware cursor for {template.Name}.");
|
||||||
}
|
Console.WriteLine($"Failed to initialize hardware cursor for {template.Name}.");
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ namespace OpenRA.Platforms.Default
|
|||||||
// This call very occasionally fails on Windows, but often works when retried.
|
// This call very occasionally fails on Windows, but often works when retried.
|
||||||
for (var retries = 0; retries < 3 && Cursor == IntPtr.Zero; retries++)
|
for (var retries = 0; retries < 3 && Cursor == IntPtr.Zero; retries++)
|
||||||
Cursor = SDL.SDL_CreateColorCursor(surface, hotspot.X, hotspot.Y);
|
Cursor = SDL.SDL_CreateColorCursor(surface, hotspot.X, hotspot.Y);
|
||||||
|
|
||||||
if (Cursor == IntPtr.Zero)
|
|
||||||
throw new Sdl2HardwareCursorException($"Failed to create cursor: {SDL.SDL_GetError()}");
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -344,11 +344,14 @@ namespace OpenRA.Platforms.Default
|
|||||||
hotspot *= 2;
|
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)
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user