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

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.

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

As of the second issue, could you supply a code that triggers the issue? Thanks!

Best regards,
Daniel

--
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi



------- Original Message -------
On Friday, January 28th, 2022 at 19:26, Paul Werkowski <pw@snoopy.qozzy.com> wrote:
I've been revisiting a clim project from 15 years ago which was to provide clim graphics to Dan Corkhill's very nice GBBopen blackboard system. I have an initial version now working nicely on Lispworks clim-2.0 on Windows. It is close to running with McCLIM as well.

I have two issues, updating-output appears to work in that the :cache-test is respected but where Lispworks clim calls clear-output-record when a displayed object moves or is deleted McCLIM does not do so. I have attached a simple demo that shows that problem. Just click right or left anywhere in the pane to move the green disk left or right to see the problem.

The other issue is that redisplay-frame-pane (not used in the demo) always causes an infinite recursion that finally results in a blown stack. Part of the problem is with window-clear which in addition to using medium-clear-area, etc to clear the screen also sets window size to zero and then calls compose-space. I have an :around method that avoids that problem but the redisplay recursion persists. My workaround for that is to just call the display function directly but that does not allow updating-output to work correctly.

Paul