Lisp HUG Maillist Archive

set-hint-table and efficiency

hi all,

I'm trying to use capi:set-hint-table to resize and reposition
drawn-pinboard- objects. However, it seems like each set-hint-table
call forces a layout recalculation on the whole pinboard, which is
unnecessary as I want to use set-hint-table on each object before
redrawing. An in fact, the way set-hint-table works makes it
impossible to use it to resize all the objects on my pinboard, which
may have up to 5000 elements. My frustrating workaround is to
reconstruct all the pinboard objects and then use (setf
layout-description) to activate the new objects. This reduces the
runtime from about 88 (*) seconds to less than 3 seconds, but is obviously
not a very smart thing to do (and resizing the pinboard objects when 
they're not yet the children of any layout is very cheap (about 120ms))

So: What have I missed? How can I resize and reposition all my
pinboard objects "in batch", and then tell capi to recalculate?

(*) on a 1.2Ghz machine...
-- 
  regards,
    Espen


Re: set-hint-table and efficiency

Espen Vestre <ev@netfonds.no> writes:

> So: What have I missed? How can I resize and reposition all my
> pinboard objects "in batch", and then tell capi to recalculate?

Ah, I finally found WITH-ATOMIC-REDISPLAY, that seems to do the
trick :-)
-- 
  (espen)


Updated at: 2020-12-10 09:02 UTC