|
Subject: WITH-BUFFER-FLUSH-INHIBITED and TRANSLATE-DEFAULT Newsgroups: gmane.lisp.clx.devel Date: 2003-05-11 11:04:18 GMT (6 years, 7 weeks, 5 days, 13 hours and 59 minutes ago) Hi. In at least the "clocc" and "telent" versions of CLX, XLIB:TRANSLATE-DEFAULT is often called when WITH-BUFFER-FLUSH-INHIBITED is in effect. The first thing that TRANSLATE-DEFAULT does in those CLX versions is to try to call FONT-MIN-CHAR on the specified font object. If font information for the font has already been obtained, it'll be used; otherwise, QUERY-FONT will try to fill in the information that FONT-MIN-CHAR needs (the font's FONT-INFO-INTERNAL.) QUERY-FONT will try to make a request to and read a reply from the server. As I read the code (and there's no reason to believe that I'm reading it correctly ...), that request will never be flushed out to the server (because of the surrounding WITH-BUFFER-FLUSH-INHIBITED.) QUERY-FONT will put a few bytes in a buffer, and then wait (forever) for a reply to a request that the server never received. This is certainly the behavior that I've been seeing in the telent CLX conditionalized for OpenMCL, whenever drawing involving a font that doesn't (yet) have its FONT-INFO-INTERNAL slot set takes place. The CLX image test and PHemlock's matching-paren highlighting can both provoke this. It seems most likely that I botched something, and the two most likely candidates would seem to be: a) the buffering code: it should be possible to start a new request/ reply sequence (and have everything flushed out to the server) even if WITH-BUFFER-FLUSH-INHIBITED is in effect. b) something in the font code: a font that's actually going to be used for text drawing should have had its FONT-INFO-INTERNAL set via QUERY-FONT long before that drawing takes place. I tried this in a couple of different OpenMCL versions that use different synchronization mechanisms and are therefore conditionalized differently. Whatever I botched, I seem to have botched pretty consistently ... Does anyone know for sure whether WITH-BUFFER-FLUSH-INHIBITED should prevent request/reply transactions from taking place, or whether a font's FONT-INFO-INTERNAL needs to be set (somewhere) less lazily ? Gary Byers gb <at> clozure.com |
|
|