]> git.jsancho.org Git - gacela.git/blobdiff - gacela.lisp
(no commit message)
[gacela.git] / gacela.lisp
index b5d611dabe09af9e1eaea50368bf46ab0a565b37..40edc6d7a9c6aa9574328ab365574f011fb1bf63 100644 (file)
     (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)))
 
@@ -84,7 +80,9 @@
     (cond ((not (3d-mode?))
           (setq mode '3d)
           (init-video-mode)
+          (glClearDepth 1)
           (glEnable GL_DEPTH_TEST)
+          (glDepthFunc GL_LEQUAL)
           (apply-mode-change))))
 
   (defun 3d-mode? ()
@@ -93,8 +91,8 @@
 (defun init-GL ()
   (glShadeModel GL_SMOOTH)
   (glClearColor 0 0 0 0)
-  (glClearDepth 1)
-  (glDepthFunc GL_LEQUAL)
+;  (glClearDepth 1)
+;  (glDepthFunc GL_LEQUAL)
 ;  (glEnable GL_BLEND)
 ;  (glBlendFunc GL_SRC_ALPHA GL_ONE)
   (glHint GL_PERSPECTIVE_CORRECTION_HINT GL_NICEST)
     (maphash (lambda (key res) (free-resource key)) resources-table)))
 
 
-;;; Connection with Gacela Skin
-(let (socket)
-  (defun start-skin-client (port)
-    (when (null socket) (setq socket (si::socket port :host "localhost"))))
+;;; Connection with Gacela Skin Clients
+(let (server-socket clients)
+  (defun start-skin-server (port)
+    (cond ((null server-socket) (setq server-socket (si::socket port :server #'check-skin-connections)))))
 
-  (defun eval-from-skin ()
-    (when (si::listen socket)
-      (secure-block socket (eval (read socket)))))
+  (defun check-skin-connections ()
+    (cond ((listen server-socket) (setq clients (cons (si::accept server-socket) clients)))))
 
-  (defun stop-skin-client ()
-    (when socket
-      (si::close socket)
-      (setq socket nil))))
+  (defun eval-from-skin ()
+    (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
        (SDL_GL_SwapBuffers)
        (delay-frame)
        (init-frame-time)
+       (check-skin-connections)
        (eval-from-skin)
        (process-events))
     (setq running nil))