[OpenTK] Add allocated resource registry
authorthefiddler <stapostol@gmail.com>
Wed, 23 Jul 2014 07:21:20 +0000 (09:21 +0200)
committerthefiddler <stapostol@gmail.com>
Wed, 23 Jul 2014 07:21:20 +0000 (09:21 +0200)
Source/OpenTK/Platform/PlatformFactoryBase.cs

index 40dc0c1..95f1a8f 100644 (file)
@@ -28,6 +28,7 @@
 #endregion
 
 using System;
+using System.Collections.Generic;
 using System.Diagnostics;
 using OpenTK.Graphics;
 using OpenTK.Input;
@@ -42,12 +43,27 @@ namespace OpenTK.Platform
     /// </summary>
     abstract class PlatformFactoryBase : IPlatformFactory
     {
+        static readonly object sync = new object();
+        readonly List<IDisposable> Resources = new List<IDisposable>();
+
         protected bool IsDisposed;
 
         public PlatformFactoryBase()
         {
         }
 
+        #region Protected Members
+
+        protected void RegisterResource(IDisposable resource)
+        {
+            lock (sync)
+            {
+                Resources.Add(resource);
+            }
+        }
+
+        #endregion
+
         #region IPlatformFactory Members
 
         public abstract INativeWindow CreateNativeWindow(int x, int y, int width, int height, string title, GraphicsMode mode, GameWindowFlags options, DisplayDevice device);
@@ -96,6 +112,13 @@ namespace OpenTK.Platform
             {
                 if (manual)
                 {
+                    lock (sync)
+                    {
+                        foreach (var resource in Resources)
+                        {
+                            resource.Dispose();
+                        }
+                    }
                 }
                 else
                 {