Created
October 22, 2019 06:15
-
-
Save fouric/8068a1ce3e9a0ae8ce664c2b182b2e1d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun outer (renderer) | |
(unless sdl2::*event-loop* | |
(setf sdl2::*event-loop* t) | |
(sdl2:in-main-thread (:background nil) | |
(unwind-protect | |
(inner renderer nil) | |
(setf sdl2::*event-loop* nil))))) | |
(defun inner (renderer quit?) | |
(flet ((idle-function () | |
(sdl2:set-render-draw-color renderer 255 255 255 255) | |
(sdl2:render-clear renderer) | |
(sdl2:render-present renderer))) | |
(sdl2:with-sdl-event (event) | |
(cond | |
((not (zerop (sdl2:next-event event :poll nil))) | |
(let* ((event-type (sdl2:get-event-type event)) | |
(event-id (and (sdl2::user-event-type-p event-type) (event :user :code)))) | |
(case event-type | |
(:lisp-message | |
(sdl2::get-and-handle-messages)) | |
(:keydown | |
(let ((keysym (plus-c:c-ref event sdl2-ffi:sdl-event :key :keysym))) | |
(when (sdl2:scancode= (sdl2:scancode-value keysym) :scancode-q) | |
(sdl2:push-event :quit)))) | |
(:idle | |
(idle-function)) | |
(:quit | |
(setf quit? (funcall (lambda () t))))) | |
(when (and event-id (not (eq event-type :lisp-message))) | |
(sdl2::free-user-data event-id)))) | |
(quit? | |
(return-from inner)) | |
(t | |
(idle-function))))) | |
(inner renderer quit?)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment