Collector Panes
Hi,No, normally I don't wrap the FORMAT, PRINT, PRINC, etc, with a CAPI:APPLY-IN-PANE-PROCESS. To do so would force me to break out special code just to handle the collector pane streams.. in which case they aren't truly STREAM objects. I would have expected the Lisp authors to provide whatever is needed to make them truly be STREAMs.
When I do attempt to provide this special code, then I get into sometimes severe problems with the Cocoa Event Loop being tied up, which as you say, will cause problems if the execution code takes too long. I love LWM !!! ... but I have to resort to Forced Killing of the LWM process quite often. It becomes completely unresponsive to any attempt to break out of troublesome loops...
Furthermore, I'm finding that one must be very careful about what you try to do regarding process coordination. If you try to wait on a mailbox in a Menu callback, for example, that will totally hang the LWM system since that menu callback happens on the Cocoa Event Loop. Once it is hung up and no longer responding to mouse and keyboard events it is all over. So code intended for cross process coordination has to have special casing where we examine the process name to see if it is "Cocoa Event Loop". That seems sadly asymmetric.
I don't know what the correct answer will be, but the existing Cocoa implementation was probably the quickest and mostly correct version that could be provided. It has problems for advanced program architectures, and so hopefully, someday, we will see Cocoa supplanted by something more sophisticated. But I love LWM and the superb graphical displays in Display PDF. Going back to Windows makes me groan every time...
David McClain
Chief Technical Officer
Refined Audiometrics Laboratory
4391 N. Camino Ferreo
Tucson, AZ 85750
email: dbm@refined-audiometrics.com
phone: 1.520.390.3995
Skype: dbmcclain