X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela.lisp;h=45010602874f72dc9a980f767edd549e7a622535;hb=862921d72ab5a90aee46074c40da8c0688a3a20d;hp=9f563895bb4d83a0eb754ad6569cd04c8abfe7ef;hpb=48a92156cd64faa98896bf82cdafad27987bc5cb;p=gacela.git diff --git a/gacela.lisp b/gacela.lisp index 9f56389..4501060 100644 --- a/gacela.lisp +++ b/gacela.lisp @@ -65,10 +65,6 @@ (init-video-mode) (fill-surface screen (getf color :red) (getf color :green) (getf color :blue))) - (defun flip () - (cond ((null screen) nil) - (t (SDL_Flip screen)))) - (defun quit-video-mode () (setq screen nil))) @@ -217,17 +213,28 @@ (cond ((null server-socket) (setq server-socket (si::socket port :server #'check-skin-connections))))) (defun check-skin-connections () - (cond ((listen server-socket) (setq clients (cons (si::accept server-socket) clients))))) + (cond ((and server-socket (listen server-socket)) (setq clients (cons (si::accept server-socket) clients))))) (defun eval-from-skin () - - (when (si::listen socket) - (secure-block socket (eval (read socket))))) - - (defun stop-skin-client () - (when socket - (si::close socket) - (setq socket nil)))) + (labels ((eval-clients (cli-socks) + (cond (cli-socks + (let ((cli (car cli-socks))) + (cond ((si::listen cli) + (secure-block cli (eval (read cli))) + (si::close cli) + (eval-clients (cdr cli-socks))) + (t + (cons cli (eval-clients (cdr cli-socks)))))))))) + (setq clients (eval-clients clients)))) + + (defun stop-skin-server () + (cond (server-socket (si::close server-socket) (setq server-socket nil))) + (cond (clients + (labels ((close-clients (cli-socks) + (si::close (car cli-socks)) + (close-clients (cdr cli-socks)))) + (close-clients clients)) + (setq clients nil))))) ;;; GaCeLa Functions @@ -260,10 +267,12 @@ (do () ((quit?)) (glClear (+ GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT)) (glLoadIdentity) +(gluLookAt 0 0 50 0 0 0 0 1 0) (when (functionp game-code) (funcall game-code)) (SDL_GL_SwapBuffers) (delay-frame) (init-frame-time) + (check-skin-connections) (eval-from-skin) (process-events)) (setq running nil))