CLIM mail archive

[Prev][Next][Index][Thread]

CLIM 1.1: open-root-window



   Date: Mon, 21 Sep 92 12:46:27 +0200
   From: Oliver Christ <oli%adler@lucid.com>
   X-Message: The domain philosophie.uni-stuttgart.de is no longer valid.
	      Please use the name IMS.UNI-STUTTGART.DE instead !
   Reply-To: oli%ims.uni-stuttgart.de@lucid.com

   [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
   solution.

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
process.

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.


0,,

Follow-Ups: References:

Main Index | Thread Index