]> www.fi.muni.cz Git - evince.git/commitdiff
Remove a mutex in the main thread that blocks the UI in heavy documents.
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sat, 9 Jun 2007 09:51:30 +0000 (09:51 +0000)
committerCarlos Garcia Campos <carlosgc@src.gnome.org>
Sat, 9 Jun 2007 09:51:30 +0000 (09:51 +0000)
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

ChangeLog
shell/ev-sidebar-thumbnails.c

index 8cfa38fa15be921c1f801b197d924b3ec4d7784f..4fbea8985dcd39d3453a8af028a4134f94754904 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+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.
+       
 2007-06-09  Carlos Garcia Campos  <carlosgc@gnome.org>
 
        * shell/ev-pixbuf-cache.c (copy_job_to_job_info):
index d6a8af51e8127248cde6077e3ac752792d02242b..26760a968115b8a0c456ad3e57cb7c69d2dab88b 100644 (file)
@@ -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);