I just committed a patch to the 'evince-thread' branch of evince that moves both the rendering and the thumbnailing to a thread. There is some bad lock contention between the thread and mainloop which means that we are not as smooth resizing as we will be, but there are some obvious improvements already. I also broke it for all backends other than pdf by adding a g_assert(), and disabled the find/index features, so I don't recommend installing it just yet. (-:
The lock contention exists because we call get_page_size() and set_scale() (and to a lesser extent, set_page()) quite frequently in ev-view.c. These calls are needed, so I'm planning on adding a cache to cache the sizes of the pages, similar to what's seen in the defunct ev-page-view.c file. This will let us pass in the scale with the EvRenderJob, and avoid most calls on the document directly. It also means that we can stop making the awful calls like: ev_document_get_size (doc, -1, &width, &height); scale = ev_document_get_scale (doc); initial_width = width/scale; ... I haven't looked too much into how best to do either search or the index interface with this model yet. If anyone wants to give that a look, that'd be great. Thanks, -Jonathan _______________________________________________ Evince-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/evince-list
