chiark / gitweb /
Delete some imports from SB-PCL
[clg] / glib / main-loop.lisp
CommitLineData
2647e060 1;; Common Lisp bindings for GTK+ 2.x
2;; Copyright 2008 Espen S. Johnsen <espen@users.sf.net>
3;;
4;; Permission is hereby granted, free of charge, to any person obtaining
5;; a copy of this software and associated documentation files (the
6;; "Software"), to deal in the Software without restriction, including
7;; without limitation the rights to use, copy, modify, merge, publish,
8;; distribute, sublicense, and/or sell copies of the Software, and to
9;; permit persons to whom the Software is furnished to do so, subject to
10;; the following conditions:
11;;
12;; The above copyright notice and this permission notice shall be
13;; included in all copies or substantial portions of the Software.
14;;
15;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23;; $Id: main-loop.lisp,v 1.1 2008-12-10 02:51:59 espen Exp $
24
25
26(in-package "GLIB")
27
28(use-prefix "g")
29
30;;; Main loop
31
32(defbinding %main-loop-ref () pointer
33 (location pointer))
34
35(defbinding %main-loop-unref () nil
36 (location pointer))
37
38(defbinding %main-loop-new () pointer
39 (context (or null pointer))
40 (is-running boolean))
41
42(eval-when (:compile-toplevel :load-toplevel :execute)
43 (defclass main-loop (ref-counted-object)
44 ((is-running
45 :allocation :virtual :getter "g_main_loop_is_running"
46 :reader main-loop-is-running-p :type boolean)
47 (context
48 :allocation :virtual :getter "g_main_loop_get_context"
49 :reader main-loop-context :type pointer))
50 (:metaclass proxy-class)
51 (:ref %main-loop-ref)
52 (:unref %main-loop-unref)))
53
54(defmethod allocate-foreign ((main-loop main-loop) &key context is-running)
55 (%main-loop-new context is-running))
56
57(defbinding main-loop-run () nil
58 main-loop)
59
60(defbinding main-loop-quit () nil
61 main-loop)
62
63(defbinding %main-context-new () pointer)
64
65(defbinding %main-context-unref () nil
66 pointer)
67
68(defmacro with-main-loop ((&optional main-loop) &body body)
69 (let ((%main-loop (make-symbol "MAIN-LOOP"))
70 (%main-context (make-symbol "MAIN-CONTEXT")))
71 `(let* ((,%main-context (%main-context-new))
72 (,%main-loop (or ,main-loop (make-instance 'main-loop :context ,%main-context))))
73 (main-loop-run ,%main-loop)
74 (unwind-protect
75 (progn ,@body)
76 (main-loop-quit ,%main-loop)
77 (%main-context-unref ,%main-context)))))
78