From 747d86bafb88d8c9bc65c47448d3ab558edf44e5 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Sat, 20 Sep 2014 17:10:05 +0200 Subject: [PATCH] [Common] Avoid GC in DeviceCollection `DeviceCollection.GetEnumerator()` now returns a struct IEnumerable directly to avoid boxing. Additionally, we can now use `DeviceCollection[int]` as a shortcut to `FromIndex(int)`. --- Source/OpenTK/Platform/DeviceCollection.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Source/OpenTK/Platform/DeviceCollection.cs b/Source/OpenTK/Platform/DeviceCollection.cs index 804dac9db3..02e74923b4 100644 --- a/Source/OpenTK/Platform/DeviceCollection.cs +++ b/Source/OpenTK/Platform/DeviceCollection.cs @@ -46,7 +46,7 @@ class DeviceCollection : IEnumerable #region IEnumerable Members - public IEnumerator GetEnumerator() + IEnumerator IEnumerable.GetEnumerator() { return Devices.GetEnumerator(); } @@ -64,6 +64,17 @@ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() #region Public Members + // This avoids boxing when using foreach loops + public List.Enumerator GetEnumerator() + { + return Devices.GetEnumerator(); + } + + public T this[int index] + { + get { return FromIndex(index); } + } + /// \internal /// /// Adds or replaces a device based on its hardware id.