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