John Levon wrote:

> I mean, we only post a paint when top_y changes.

Ah, good idea.

> I don't understand much of it myself, but here goes:
> 
> When we notice something needs redrawing, we call post(Row)Paint, which
> will set refresh_row or refresh_y as appropriate. Inside an inset, this
> will also set the paint on the containing row of this inset in case it
> changes the size of the outer row etc.

And what about non-text insets? does draw gets called inmediately for these
or there is a similar delayed mechanism?

> Then, whenever BufferView::update() is called, we call the screen()
> paint routines. This actually uses the RowPainter, starting from the
> saved row, which paints onto the backing pixmap. Finally, we send an
> expose() to the frontend which actually copies the new image parts onto
> the visible screen pixmap.

How does it work for inner (nested) insettexts? Does the screen() paint
routines draw directly inner insettexts?
 
> Please let me know if you want more details or have more questions,
> trying to explain stuff will probably help me understand it better...
 
Thanks for the nice explanation. It's getting definitely clearer!
 
> We seriously need to look at splitting this damned class into toplevel
> and per-inset methods. BIG TIME.

Big indeed.

Alfredo


Reply via email to