From 3bac7c76c894fd39721c16d5005dbc7d23fda8d6 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 21 Dec 2015 11:40:38 -0500 Subject: events: Add quit event. * sdl2/events.scm (): New record type. (make-quit-event, quit-event?, quit-event-timestamp, parse-quit-event): New procedures. (poll-event): Add support for SDL_QUIT events. --- sdl2/events.scm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/sdl2/events.scm b/sdl2/events.scm index e32c8ef..282fc34 100644 --- a/sdl2/events.scm +++ b/sdl2/events.scm @@ -33,7 +33,11 @@ #:use-module (system foreign) #:use-module ((sdl2 bindings) #:prefix ffi:) #:use-module (sdl2) - #:export (make-window-event + #:export (make-quit-event + quit-event? + quit-event-timestamp + + make-window-event window-event? window-event-timestamp window-event-window-id @@ -100,6 +104,21 @@ (define (sdl-event-type event) (u32vector-ref event 0)) + +;;; +;;; Quit +;;; + +(define-record-type + (make-quit-event timestamp) + quit-event? + (timestamp quit-event-timestamp)) + +(define (parse-quit-event ptr) + (match (parse-c-struct ptr (list uint32 uint32)) + ((_ timestamp) + (make-quit-event timestamp)))) + ;;; ;;; Window @@ -881,6 +900,8 @@ (and (= result 1) (let ((type (sdl-event-type e))) (cond + ((= type ffi:SDL_QUIT) + (parse-quit-event ptr)) ((= type ffi:SDL_WINDOWEVENT) (parse-window-event ptr)) ((or (= type ffi:SDL_KEYDOWN) -- cgit v1.2.3