diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2007-06-09 09:51:30 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2007-06-09 09:51:30 (GMT) |
commit | 2e4b5a98297698180c1be5adffe809210bdcadb2 (patch) | |
tree | 5c0df21b4eb86f53b5b9e8e86efad4284a611c8b /shell/ev-sidebar-thumbnails.c | |
parent | 486a426397b1dc6a3b5306caaac431062902c761 (diff) |
Remove a mutex in the main thread that blocks the UI in heavy documents.
2007-06-09 Carlos Garcia Campos <carlosgc@gnome.org>
* shell/ev-sidebar-thumbnails.c:
(ev_sidebar_thumbnails_set_loading_icon):
Remove a mutex in the main thread that blocks the UI in heavy
documents.
svn path=/trunk/; revision=2492
Diffstat (limited to 'shell/ev-sidebar-thumbnails.c')
-rw-r--r-- | shell/ev-sidebar-thumbnails.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index d6a8af5..26760a9 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -393,26 +393,21 @@ ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails) static void ev_sidebar_thumbnails_set_loading_icon (EvSidebarThumbnails *sidebar_thumbnails) { - gint width = THUMBNAIL_WIDTH; - gint height = THUMBNAIL_WIDTH; - if (sidebar_thumbnails->priv->loading_icon) g_object_unref (sidebar_thumbnails->priv->loading_icon); if (sidebar_thumbnails->priv->document) { - EvRenderContext *rc; - - rc = ev_render_context_new (sidebar_thumbnails->priv->rotation, 0, - get_scale_for_page (sidebar_thumbnails, 0)); + gint width = THUMBNAIL_WIDTH; + gint height; + gint page_width, page_height; - /* We get the dimensions of the first doc so that we can make a blank + /* We get the dimensions of the first page so that we can make a blank * icon. */ - ev_document_doc_mutex_lock (); - ev_document_thumbnails_get_dimensions (EV_DOCUMENT_THUMBNAILS (sidebar_thumbnails->priv->document), - rc, &width, &height); - ev_document_doc_mutex_unlock (); - - g_object_unref (rc); + ev_page_cache_get_size (sidebar_thumbnails->priv->page_cache, 0, + sidebar_thumbnails->priv->rotation, + 1.0, &page_width, &page_height); + + height = (gint) (page_height * ((gdouble)width / page_width)); sidebar_thumbnails->priv->loading_icon = ev_document_misc_get_thumbnail_frame (width, height, NULL); |