CLIM mail archive



    Date: Wed, 18 Dec 1991 13:41 EST
    From: Robert Clark <>


    I am running CLIM 1.0 on a Symbolics 3640. I have created an application
    frame in which IO is performed. When the application frame is started, two 
    other processes are also started which use the application frame for IO. I
    have 2 problems:

    1. When output is formatted to a pane by a process other than the CLIM process,
       the output is not remembered. (I.E. when scrolling or changing configuration,
       the output disappears)

    2. When input is requested by a process other than the CLIM process, the CLIM 
       accept method doesn't respond, until the input seems to circle around the
       number of panes that are in the current configuration. It seems as though 
       there is a different input buffer for each pane. I'm not sure what's going
       on here. I tried using CLIM:WITH-INPUT-FOCUS, but the function did not do
       anything different

    If anyone has any suggestions, I would greatly appreciate any help.

You're not going to like my suggestions, but I'll make them anyway.

CLIM is not presently either designed or implemented to support multiple
processes in the way you want to use it.

For example, at the implementation level there is no locking done on the
output record datastructures.  If you require such locking, you need to
do it yourself.  It is not clear to me that CLIM should provide this
locking by default, since it is potentially costly to do so, even though
very few applications will gain any benefit.  The granularity at which
CLIM would have to lock would not guarantee that two processes would not
produce gubbish output anyway; it would only prevent the output record
structure from becoming corrupted.

I don't think any of us devoted any design cycles to having multiple
processes reading from a frame's input buffer.  It is a sure thing that
this will not work properly.

So here are the suggestions:
 (1) Do your own locking when doing output to a CLIM pane.  This will
     need to be done at a sufficiently high level in your application
     that the output from several processes does not scribble.
 (2) Don't do input except from the "main" CLIM process for the application.

Since I do not know exactly what you are doing, I can't offer better
advice.  There may be smarter things that you can do under more
constrained conditions.



Main Index | Thread Index