[GSoC] Integrate LO with GNOME - WR#7

Michael Meeks michael.meeks at collabora.com
Sat Jul 18 12:12:08 PDT 2015


Hi Pranav,

On Fri, 2015-07-17 at 23:50 +0530, Pranav Kant wrote:
> I followed the approach you mentioned.

	Heh =)

> But the user experience is poor this way. As I am typing things on the
> keyboard the immediate effect is that it places dummy tiles for
> fraction of seconds in place of invalidated tiles.

	Hmm ? why do we replace those tiles before we have new copies of them
to replace them with ?

>  The callback gets called when the actual tile gets rendered, and
> it replaces the dummy tile with it.

	Sorry in a car currently, so can't see your movie ;-) here is the
sequence I expect.


    LOK Thread               GTK Thread

    Invalidate Area    ->
                             handle_invalidate
                             async. request new tiles for this area
    Render new tiles
    ...
    return tile 1      ->
    ...                      update underlying tile in cache
                             queue gtk re-draw with
                                  gtk_widget_queue_draw_area
                             ... gtk idle loop ...
                             ... widget draw(cairo_t cr) ...
                                  render_to(cr)
    return tile 2      ->

	etc. so the invalidation of tiles from the LOK thread
itself only queues async. re-rendering of the gtk+ tiles by the LOK
backend. There is no point at all in discarding and re-rendering
anything in the gtk+ thread while that goes on.

	Does that make sense ? there is simply no sensible[1] way to get a
valid cairo_t outside the gdk/gtk callback to the 'draw' method - I
would abandon all hope of that =)

	ATB,

		Michael.

[1] - it is of course possible, but such a bad idea that ... ;-)
-- 
 michael.meeks at collabora.com  <><, Pseudo Engineer, itinerant idiot



More information about the LibreOffice mailing list