updating-output issues

Paul Werkowski pw at snoopy.qozzy.com
Tue Feb 1 13:40:13 UTC 2022


Hey Paul,

regarding the attached code: why do you expect a call to 
clear-output-record when it is only moved around? how the issue is 
visible in the attached code (except for that (trace 
clear-output-record) doesn't yield anything).

Just noting that LispWorks CLIM calls clear-output-record restoring the 
previously drawn area. That may be from LispWorks CLIM using 
redisplay-output-record ,as shown in the following trace, which is 
supposed to take care to restore anything previously covered. I don't a 
clear understanding of how all this works as yet.

UTEST 5 > (testme)
0 CLEAR-OUTPUT-RECORD > ...
   >> CLIM-INTERNALS::RECORD : #<STANDARD-TREE-OUTPUT-HISTORY /x 0:0 y 
0:0/ 22B34603>
0 CLEAR-OUTPUT-RECORD < ...
   << VALUE-0 : 0
draw-unit #<TEST-UNIT <150 150>>
--draw-circle
draw-unit #<TEST-UNIT <250 50>>
--draw-circle

Now I click right once.

0 REDISPLAY-OUTPUT-RECORD > ...
   >> CLIM-INTERNALS::RECORD            : 
#<STANDARD-UPDATING-OUTPUT-RECORD /x 0:301 y 0:301/ 22D6E923>
   >> STREAM                            : #<EXAMPLE-PANE 22E3274B>
   >> CLIM-INTERNALS::CHECK-OVERLAPPING : T
   1 CLEAR-OUTPUT-RECORD > ...
     >> CLIM-INTERNALS::RECORD : #<STANDARD-UPDATING-OUTPUT-RECORD /x 
0:301 y 0:301/ 22D6E923>
   1 CLEAR-OUTPUT-RECORD < ...
     << VALUE-0 : 0
draw-unit #<TEST-UNIT <145.0 150>>
   1 CLEAR-OUTPUT-RECORD > ...
     >> CLIM-INTERNALS::RECORD : #<STANDARD-UPDATING-OUTPUT-RECORD /x 
140.0:162.0 y 140.0:162.0/ 22C61A13>
   1 CLEAR-OUTPUT-RECORD < ...
     << VALUE-0 : NIL
   1 CLEAR-OUTPUT-RECORD > ...
     >> CLIM-INTERNALS::RECORD : #<STANDARD-PRESENTATION UNIT 
#<TEST-UNIT <145.0 150>> /x 140.0:162.0 y 140.0:162.0/ 22C60F2F>
   1 CLEAR-OUTPUT-RECORD < ...
     << VALUE-0 : NIL
--draw-circle
draw-unit #<TEST-UNIT <250 50>>
0 REDISPLAY-OUTPUT-RECORD < ...
   << VALUE-0 : NIL


On 2/1/2022 5:23 AM, Daniel Kochmański wrote:
> Mind that recently I rewrote parts of the incremental redisplay to fix 
> some issues - I'm not sure whether these changes are already 
> propagated to quicklisp.
>
I don't use quicklisp but do use github desktop to check on things. I 
found a bunch of changes yesterday and found that my hack of calling the 
display function for redisplay now works where before changes made to 
the display were computed but not shown on the screen. I had observed a 
lot of stuff in the output record cache that I could not account for 
which is now gone.

> btw when you draw the border it makes the window bigger with each 
> iteration, because the line thickness is 1 and it is not filled, so 
> drawing (x1 y1 x2 y2) actually covers the area (x1 y1 x2+1 y2+1).
>
I had not even noticed that problem! Thanks for the info.
> As of the second issue, could you supply a code that triggers the 
> issue? Thanks!
That would be redisplay-frame-pane causing infinite recursion. I shall 
work something up.

Thanks for looking at this.

Paul
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/mcclim-devel/attachments/20220201/a46d39bc/attachment.html>


More information about the mcclim-devel mailing list