From 0c262cd5b200226ab9f3951b9868a2d4d5560cc4 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Mon, 17 Feb 2014 23:17:34 +0100 Subject: [PATCH] [SDL2] Added PeepEvents/PollEvent functions --- Source/OpenTK/Platform/SDL2/Sdl2.cs | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Source/OpenTK/Platform/SDL2/Sdl2.cs b/Source/OpenTK/Platform/SDL2/Sdl2.cs index d38039be..12199e73 100644 --- a/Source/OpenTK/Platform/SDL2/Sdl2.cs +++ b/Source/OpenTK/Platform/SDL2/Sdl2.cs @@ -350,11 +350,47 @@ 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,