The final remaining operation performed within the frontends dispatch
loop is that of pending reformats.

The reformat call differs from the redraw in that it is used when a
browser windows scale or extents changes.

The current operation is to set the browser_reformat_pending global to
signal one or more browser_windows required updating and then each
browser window has its own flag which must be checked.

This was ineficient as the frontends had to check every browser window
even if only one required reformatting and broke our data hiding model
for browser_window meaning we had to expose browser_window internals
all over the codebase.

I have a branch vince/reformatpending which changes this to being a
scheduled callback and reduces the frontend involvment to providing a
single callback entry in the window operation table. 

This has revealed some dreadful code in many areas including several
frontends that never do anything with the flag at all!

Because of this this change is much more invasive and alters behaviour
in frontends I could not test. I would appreciate frontend maintainers
(I have tested/fixed gtk/framebuffer/monkey and riscos) trying this
branch and giving feedback before I commit it. 

Especialy Chris Young on amiga where my changes are untested and I
fear I may have broken the frontend altogether (sorry Chris)

Hopefully this is the end of the road with these type of changes, my
next is to remove the poll entry and let frontends run the main loop
themselves.


-- 
Regards Vincent
http://www.kyllikki.org/

Reply via email to