chiark
/
gitweb
/
~mdw
/
clg
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
1e1c390
)
Added *REENTRANT-MAIN-ITERATION* to control if MAIN-ITERATE-ALL can be
author
espen
<espen>
Tue, 4 Mar 2008 16:03:38 +0000
(16:03 +0000)
committer
espen
<espen>
Tue, 4 Mar 2008 16:03:38 +0000
(16:03 +0000)
invoked recursively.
gtk/defpackage.lisp
patch
|
blob
|
blame
|
history
gtk/gtkobject.lisp
patch
|
blob
|
blame
|
history
diff --git
a/gtk/defpackage.lisp
b/gtk/defpackage.lisp
index 58367a85387b88b34533de708984f000652762a8..87836f4dbd06debab910bae402a4ce550eb4d36e 100644
(file)
--- a/
gtk/defpackage.lisp
+++ b/
gtk/defpackage.lisp
@@
-20,7
+20,8
@@
(defpackage "GTK"
#+clisp
(:import-from "SOCKET" "SOCKET-STATUS")
(:export "EVENTS-PENDING-P" "GET-CURRENT-EVENT" "MAIN-DO-EVENT" "MAIN"
#+clisp
(:import-from "SOCKET" "SOCKET-STATUS")
(:export "EVENTS-PENDING-P" "GET-CURRENT-EVENT" "MAIN-DO-EVENT" "MAIN"
- "MAIN-LEVEL" "MAIN-QUIT" "MAIN-ITERATION-DO" "MAIN-ITERATE-ALL")
+ "MAIN-LEVEL" "MAIN-QUIT" "MAIN-ITERATION-DO" "MAIN-ITERATE-ALL"
+ "*REENTRANT-MAIN-ITERATION*" "*RUNNING-MAIN-ITERATION*")
(:export "CONTAINER-CHILD-CLASS" "CONTAINER-CHILD" "CONTAINER-CHILD-CLASS")
;; Signal names that need to be explicit exported
(:export "TOGGLED")
(:export "CONTAINER-CHILD-CLASS" "CONTAINER-CHILD" "CONTAINER-CHILD-CLASS")
;; Signal names that need to be explicit exported
(:export "TOGGLED")
diff --git
a/gtk/gtkobject.lisp
b/gtk/gtkobject.lisp
index a98402242c5bf157b81ac00d5bea9a9047b84d28..c95abd459dd2b2cbd3a4d00d5dd0ce1033790e5d 100644
(file)
--- a/
gtk/gtkobject.lisp
+++ b/
gtk/gtkobject.lisp
@@
-20,7
+20,7
@@
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gtkobject.lisp,v 1.4
5 2008/02/28 18:33:12
espen Exp $
+;; $Id: gtkobject.lisp,v 1.4
6 2008/03/04 16:03:38
espen Exp $
(in-package "GTK")
(in-package "GTK")
@@
-56,6
+56,9
@@
(defbinding %object-sink () nil
;;;; Main loop and event handling
;;;; Main loop and event handling
+(defparameter *reentrant-main-iteration* t)
+(defvar *running-main-iteration* nil)
+
(defbinding events-pending-p () boolean)
(defbinding get-current-event () gdk:event)
(defbinding events-pending-p () boolean)
(defbinding get-current-event () gdk:event)
@@
-74,9
+77,11
@@
(defbinding main-iteration-do (&optional (blocking t)) boolean
(defun main-iterate-all (&rest args)
(declare (ignore args))
(defun main-iterate-all (&rest args)
(declare (ignore args))
- (loop
- while (events-pending-p)
- do (main-iteration-do nil))
+ (unless (and (not *reentrant-main-iteration*) *running-main-iteration*)
+ (let ((*running-main-iteration* t))
+ (loop
+ while (events-pending-p)
+ do (main-iteration-do nil))))
#+clisp 0)
#+clisp 0)