[GSoC 15] Improve LOKDocView widget and its integration - WR #2

Pranav Kant pranav913 at gmail.com
Sun Jun 7 22:52:14 PDT 2015


I was able to change the existing LOKDocView widget to start using
GtkDrawingArea instead of previously GtkTable approach. This leaves us
with enough flexibility to just paint only the visible tiles. The
management of tiles is also moved to a separate class, TileBuffer. The
TileBuffer caches the tiles and renders only when tiles gets
invalidated in the visible area or a new visible area is exposed on
the screen.

I am also in the process of modernizing the LOKDocVIew widget to using
latest GObject practices. The widget doesn't seem to be exploiting the
GObject to the fullest, for example, using GType/GObject macros and
its private mechanism. This would help us in creating language
bindings via gobject-introspection[3], which would also help other
languages to use this widget, say python. It would be great seeing
someone using this widget from python or any other language and
interacting with LibreOffice.

The current state of the widget[1] doesn't seem to produce any
regressions. We have had a list of tests that I manually tested on the
widget, and its performing well now with added performance boosters
such as TileBuffer. Though, I do uncovered a bug[2] which is not a
regression, and can also be reproduced on the master. This seems to be
some glitch on the LO core side, though, and not due to the widget.

Our next step would be to polish the LOKDocView widget as GObject
class, and move towards including the openGL support for rendering
tiles. We can directly use GtkGLArea, which would automatically
provide the openGL support in the widget, instead of current
GtkDrawingArea, but I guess, separating the tiled opengl rendering
part from the LOKDocView widget would leave the scope of using this
TileBuffer in other parts of LO too, which would also gradually lead
to its improvement. Further GtkGLArea is quite new (since GNOME
release 3.16), so it might not be good to use this for now.



[1] http://cgit.freedesktop.org/libreoffice/core/log/?h=feature/gsoc-tiled-rendering
[2] https://bugs.documentfoundation.org/show_bug.cgi?id=91887
[3] https://wiki.gnome.org/Projects/GObjectIntrospection

-- 
Regards,
Pranav Kant
http://pranavk.me


More information about the LibreOffice mailing list