CLIM mail archive
CLIM 1.1: open-root-window
Date: Mon, 21 Sep 92 12:46:27 +0200
From: Oliver Christ <firstname.lastname@example.org>
X-Message: The domain philosophie.uni-stuttgart.de is no longer valid.
Please use the name IMS.UNI-STUTTGART.DE instead !
[CLIM 1.1 Questions]
1) What is the reason that the window system type (:clx, :mcl, :sheet...) has
to be passed to clim:open-root-window? The respective CLIM-implementation the
application is running in is platform-specific, so that the window system is
determined by CLIM (I can't open a :mcl root window while running Franz'
CLIM with X...). The argument seems to be redundant in my eyes. In CLX,
open-root-window should take the shell's DISPLAY environment variable as a
default for the :host argument.
Some Lisp platforms support multiple window systems. For example, in
some systems you can use the native window system or X Windows via the
CLX back-end. Perhaps we could have arranged for better defaulting of
the argument. This is fixed in CLIM 2, which should always default to
the "primary" window system of the environment.
2) I can't find a way to interrupt an evaluation running in a CLIM pane [on
Allegro/SPARC w/ CLIM 1.1] -- C-z or C-c in the pane has no effect until CLIM
does an explicit read-gesture. In the CLIM Lisp Listener Demo, an infinite loop
can't be interrupted in the pane. Why? In my eyes, this is a severe problem of
CLIM -- is it an Allegro specific (Scott McKay has mentioned that it works on
Genera)? Of course I can interrupt the lisp interpreter, but this is no
This is a general problem with CLIM 1. When a single-process CLIM
application goes into a "hard" loop, there is no one left to watch for
the c-C character in the X window. If you have control over the
computation loop, you can fix this by putting a
(stream-input-wait win :timeout 0)
somewhere in the loop, which will allow event processing.
Alternatively, you can start a background process to listen for input,
or move the lengthly computation in the loop into a background
CLIM 2 will fix this by providing a global event process that
dispatches events to application windows. Single-process environments
(e.g. MCL) are usually careful to check for interrupt characters even
in tight computation loops, so you don't get stuck there.
Main Index |