From 891643c414a0e085a2eeb14d51ed4e7a92b2bb03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Renaud=20Casenave-P=C3=A9r=C3=A9?= Date: Wed, 22 Oct 2014 10:36:59 +0900 Subject: [PATCH] Add a poll-events function to be used in the main-loop --- src/render/render.lisp | 10 ++++++++-- src/stoe.lisp | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/render/render.lisp b/src/render/render.lisp index c6ffa80..7a37889 100644 --- a/src/render/render.lisp +++ b/src/render/render.lisp @@ -7,7 +7,8 @@ (defpackage stoe.render (:nicknames :render) (:use :cl - :utils)) + :utils) + (:export :poll-events)) (in-package :stoe.render) (defvar *window* nil) @@ -43,7 +44,6 @@ Destroy the opengl context and the related resources." "Update the render module. Render a frame and swap buffers." (declare (ignore delta-time)) - (glop:dispatch-events *window* :blocking nil :on-foo nil) (gl:clear-color 0.0 0 0 0) (gl:clear-depth 1.0) (gl:clear :color-buffer-bit :depth-buffer-bit) @@ -53,5 +53,11 @@ Render a frame and swap buffers." (modules:register-finalize-fun #'finalize) (modules:register-update-fun #'update) +(defun poll-events () + "Poll events from the window manager. +This needs to be called once per frame, at the beginning of the loop." + (when *window* + (glop:dispatch-events *window* :blocking nil :on-foo nil))) + (defmethod glop:on-event (window event) (declare (ignore window event))) diff --git a/src/stoe.lisp b/src/stoe.lisp index cbbb53d..ff81b78 100644 --- a/src/stoe.lisp +++ b/src/stoe.lisp @@ -21,8 +21,8 @@ continue unless `unprotected' is t." do (restartable unprotected (update-current-time) (update-clock clock (get-delta-time)) - (modules:update (clock-delta clock)) - (sleep 0.01))))) + (render:poll-events) + (modules:update (clock-delta clock)))))) (defun quit () "Quit the main loop."