Revision: 9416
          http://sourceforge.net/p/skim-app/code/9416
Author:   hofman
Date:     2017-05-16 15:58:38 +0000 (Tue, 16 May 2017)
Log Message:
-----------
generate thumbnails in background on 10.12

Modified Paths:
--------------
    trunk/SKMainWindowController.m

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2017-04-29 17:46:52 UTC (rev 9415)
+++ trunk/SKMainWindowController.m      2017-05-16 15:58:38 UTC (rev 9416)
@@ -2526,26 +2526,30 @@
 
 #pragma mark Thumbnails
 
-- (void)makeImageForThumbnail:(SKThumbnail *)thumbnail {
-    NSSize newSize, oldSize = [thumbnail size];
-    PDFDocument *pdfDoc = [pdfView document];
+- (BOOL)generateImageForThumbnail:(SKThumbnail *)thumbnail {
+    if ([(SKScroller 
*)[leftSideController.thumbnailTableView.enclosingScrollView verticalScroller] 
isScrolling] || [[pdfView document] isLocked] || [presentationSheetController 
isScrolling])
+        return NO;
+    
+    NSSize oldSize = [thumbnail size];
     NSUInteger pageIndex = [thumbnail pageIndex];
-    PDFPage *page = [pdfDoc pageAtIndex:pageIndex];
+    PDFPage *page = [[pdfView document] pageAtIndex:pageIndex];
     SKReadingBar *readingBar = [[[pdfView readingBar] page] isEqual:page] ? 
[pdfView readingBar] : nil;
-    NSImage *image = [page thumbnailWithSize:thumbnailCacheSize 
forBox:[pdfView displayBox] readingBar:readingBar];
+    PDFDisplayBox box = [pdfView displayBox];
+    dispatch_queue_t queue = floor(NSAppKitVersionNumber) > 
NSAppKitVersionNumber10_11 ? 
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) : 
dispatch_get_main_queue();
     
-    [thumbnail setImage:image];
+    dispatch_async(queue, ^{
+        NSImage *image = [page thumbnailWithSize:thumbnailCacheSize forBox:box 
readingBar:readingBar];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [thumbnail setImage:image];
+            
+            NSSize newSize = [image size];
+            if (fabs(newSize.width - oldSize.width) > 1.0 || 
fabs(newSize.height - oldSize.height) > 1.0)
+                [leftSideController.thumbnailTableView 
noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndex:pageIndex]];
+            [leftSideController.thumbnailTableView 
setNeedsDisplayInRect:[leftSideController.thumbnailTableView 
frameOfCellAtColumn:0 row:pageIndex]];
+        });
+    });
     
-    newSize = [image size];
-    if (fabs(newSize.width - oldSize.width) > 1.0 || fabs(newSize.height - 
oldSize.height) > 1.0)
-        [leftSideController.thumbnailTableView 
noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndex:pageIndex]];
-    [leftSideController.thumbnailTableView 
setNeedsDisplayInRect:[leftSideController.thumbnailTableView 
frameOfCellAtColumn:0 row:pageIndex]];
-}
-
-- (BOOL)generateImageForThumbnail:(SKThumbnail *)thumbnail {
-    if ([(SKScroller 
*)[leftSideController.thumbnailTableView.enclosingScrollView verticalScroller] 
isScrolling] || [[pdfView document] isLocked] || [presentationSheetController 
isScrolling])
-        return NO;
-    [self performSelector:@selector(makeImageForThumbnail:) 
withObject:thumbnail afterDelay:0.0];
     return YES;
 }
 

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to