private static uint TimerCallback(uint interval, IntPtr param)
 {
     var ev = new SDL2.SDL.SDL_Event();
     ev.type = SDL.SDL_EventType.SDL_USEREVENT;
     ev.user.code = 0;
     ev.user.data1 = IntPtr.Zero;
     ev.user.data2 = IntPtr.Zero;
     SDL.SDL_PushEvent(ref ev);
     return interval;  // We can return 0 to cancel the timer here, or interval to keep it going.
 }
        protected override void Process(ThreadController myController)
        {
            SDL2.SDL.SDL_Event myEvent = new SDL2.SDL.SDL_Event();

            while (SDL2.SDL.SDL_PollEvent(out myEvent) == 1)
            {
                switch (myEvent.type)
                {
                case SDL2.SDL.SDL_EventType.SDL_FIRSTEVENT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_QUIT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_WINDOWEVENT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_SYSWMEVENT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_TEXTEDITING:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_TEXTINPUT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYAXISMOTION:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYBALLMOTION:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYHATMOTION:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYBUTTONDOWN:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYBUTTONUP:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYDEVICEADDED:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_JOYDEVICEREMOVED:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERAXISMOTION:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERBUTTONDOWN:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERBUTTONUP:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERDEVICEADDED:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERDEVICEREMOVED:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CONTROLLERDEVICEREMAPPED:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_FINGERDOWN:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_FINGERUP:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_FINGERMOTION:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_DOLLARGESTURE:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_DOLLARRECORD:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_MULTIGESTURE:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_CLIPBOARDUPDATE:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_DROPFILE:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_RENDER_TARGETS_RESET:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_USEREVENT:
                    break;

                case SDL2.SDL.SDL_EventType.SDL_LASTEVENT:
                    break;
                }
            }
        }