Make editor brushes disposable.

This commit is contained in:
Paul Chote
2015-05-28 18:43:04 +01:00
parent bf3a46be93
commit 1c06297ff7
5 changed files with 15 additions and 5 deletions

View File

@@ -24,7 +24,7 @@ using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets namespace OpenRA.Mods.Common.Widgets
{ {
public class EditorActorBrush : IEditorBrush public sealed class EditorActorBrush : IEditorBrush
{ {
public readonly ActorInfo Actor; public readonly ActorInfo Actor;
@@ -148,5 +148,7 @@ namespace OpenRA.Mods.Common.Widgets
preview.Bounds.Width = (int)(zoom * s.X); preview.Bounds.Width = (int)(zoom * s.X);
preview.Bounds.Height = (int)(zoom * s.Y); preview.Bounds.Height = (int)(zoom * s.Y);
} }
public void Dispose() { }
} }
} }

View File

@@ -24,13 +24,13 @@ using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets namespace OpenRA.Mods.Common.Widgets
{ {
public interface IEditorBrush public interface IEditorBrush : IDisposable
{ {
bool HandleMouseInput(MouseInput mi); bool HandleMouseInput(MouseInput mi);
void Tick(); void Tick();
} }
public class EditorDefaultBrush : IEditorBrush public sealed class EditorDefaultBrush : IEditorBrush
{ {
public readonly ActorInfo Actor; public readonly ActorInfo Actor;
@@ -110,5 +110,6 @@ namespace OpenRA.Mods.Common.Widgets
} }
public void Tick() { } public void Tick() { }
public void Dispose() { }
} }
} }

View File

@@ -24,7 +24,7 @@ using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets namespace OpenRA.Mods.Common.Widgets
{ {
public class EditorResourceBrush : IEditorBrush public sealed class EditorResourceBrush : IEditorBrush
{ {
public readonly ResourceTypeInfo ResourceType; public readonly ResourceTypeInfo ResourceType;
@@ -119,5 +119,7 @@ namespace OpenRA.Mods.Common.Widgets
preview.Bounds.X = cellScreenPixel.X; preview.Bounds.X = cellScreenPixel.X;
preview.Bounds.Y = cellScreenPixel.Y; preview.Bounds.Y = cellScreenPixel.Y;
} }
public void Dispose() { }
} }
} }

View File

@@ -24,7 +24,7 @@ using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets namespace OpenRA.Mods.Common.Widgets
{ {
public class EditorTileBrush : IEditorBrush public sealed class EditorTileBrush : IEditorBrush
{ {
public readonly ushort Template; public readonly ushort Template;
@@ -156,5 +156,7 @@ namespace OpenRA.Mods.Common.Widgets
preview.Bounds.Width = (int)(zoom * bounds.Width); preview.Bounds.Width = (int)(zoom * bounds.Width);
preview.Bounds.Height = (int)(zoom * bounds.Height); preview.Bounds.Height = (int)(zoom * bounds.Height);
} }
public void Dispose() { }
} }
} }

View File

@@ -48,6 +48,9 @@ namespace OpenRA.Mods.Common.Widgets
public void ClearBrush() { SetBrush(null); } public void ClearBrush() { SetBrush(null); }
public void SetBrush(IEditorBrush brush) public void SetBrush(IEditorBrush brush)
{ {
if (CurrentBrush != null)
CurrentBrush.Dispose();
CurrentBrush = brush ?? defaultBrush; CurrentBrush = brush ?? defaultBrush;
} }