[SDL2] Added PeepEvents/PollEvent functions
authorthefiddler <stapostol@gmail.com>
Mon, 17 Feb 2014 22:17:34 +0000 (23:17 +0100)
committerthefiddler <stapostol@gmail.com>
Tue, 25 Feb 2014 00:13:45 +0000 (01:13 +0100)
Source/OpenTK/Platform/SDL2/Sdl2.cs

index d38039b..12199e7 100644 (file)
@@ -350,12 +350,48 @@ namespace OpenTK.Platform.SDL2
         [DllImport(lib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_NumJoysticks", ExactSpelling = true)]
         public static extern int NumJoysticks();
 
+        public static int PeepEvents(ref Event e, EventAction action, EventType min, EventType max)
+        {
+            unsafe
+            {
+                fixed (Event* pe = &e)
+                {
+                    return PeepEvents(pe, 1, action, min, max);
+                }
+            }
+        }
+
+        public static int PeepEvents(Event[] e, int count, EventAction action, EventType min, EventType max)
+        {
+            if (e == null)
+                throw new ArgumentNullException();
+            if (count <= 0 || count > e.Length)
+                throw new ArgumentOutOfRangeException();
+
+            unsafe
+            {
+                fixed (Event *pe = e)
+                {
+                    return PeepEvents(pe, count, action, min, max);
+                }
+            }
+        }
+
+        [SuppressUnmanagedCodeSecurity]
+        [DllImport(lib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_PeepEvents", ExactSpelling = true)]
+        unsafe static extern int PeepEvents(Event* e, int count, EventAction action, EventType min, EventType max);
+
+
         [SuppressUnmanagedCodeSecurity]
         [DllImport(lib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_PixelFormatEnumToMasks", ExactSpelling = true)]
         public static extern bool PixelFormatEnumToMasks(uint format, out int bpp, 
             out uint rmask, out uint gmask, out uint bmask, out uint amask);
 
         [SuppressUnmanagedCodeSecurity]
+        [DllImport(lib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_PollEvent", ExactSpelling = true)]
+        public static extern int PollEvent(out Event e);
+
+        [SuppressUnmanagedCodeSecurity]
         [DllImport(lib, CallingConvention = CallingConvention.Cdecl, EntryPoint = "SDL_PumpEvents", ExactSpelling = true)]
         public static extern void PumpEvents();
 
@@ -589,6 +625,13 @@ namespace OpenTK.Platform.SDL2
         ES = 0x0004
     }
 
+    enum EventAction
+    {
+        Add,
+        Peek,
+        Get
+    }
+
     enum EventState
     {
         Query = -1,