Revision: 15445
          http://sourceforge.net/p/skim-app/code/15445
Author:   hofman
Date:     2025-06-11 22:24:10 +0000 (Wed, 11 Jun 2025)
Log Message:
-----------
coalesce snapshpt updates

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

Modified: trunk/NSObject_SKExtensions.h
===================================================================
--- trunk/NSObject_SKExtensions.h       2025-06-11 16:41:12 UTC (rev 15444)
+++ trunk/NSObject_SKExtensions.h       2025-06-11 22:24:10 UTC (rev 15445)
@@ -44,6 +44,7 @@
 @interface NSObject (SKExtensions)
 
 - (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay;
+- (void)performSelectorOnce:(SEL)aSelector withObject:(id)anObject 
afterDelay:(NSTimeInterval)delay;
 
 - (NSUInteger)countOfTexLines;
 - (NSNumber *)objectInTexLinesAtIndex:(NSUInteger)idx;

Modified: trunk/NSObject_SKExtensions.m
===================================================================
--- trunk/NSObject_SKExtensions.m       2025-06-11 16:41:12 UTC (rev 15444)
+++ trunk/NSObject_SKExtensions.m       2025-06-11 22:24:10 UTC (rev 15445)
@@ -48,6 +48,11 @@
     [self performSelector:aSelector withObject:nil afterDelay:delay];
 }
 
+- (void)performSelectorOnce:(SEL)aSelector withObject:(id)anObject 
afterDelay:(NSTimeInterval)delay {
+    [[self class] cancelPreviousPerformRequestsWithTarget:self 
selector:aSelector object:anObject];
+    [self performSelector:aSelector withObject:anObject afterDelay:delay];
+}
+
 - (NSUInteger)countOfTexLines {
     return INT_MAX;
 }

Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h      2025-06-11 16:41:12 UTC (rev 15444)
+++ trunk/SKMainWindowController.h      2025-06-11 22:24:10 UTC (rev 15445)
@@ -314,6 +314,7 @@
 
 - (void)resetSnapshotSizeIfNeeded;
 - (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)dirstySnapshot 
lowPriority:(BOOL)lowPriority;
+- (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)dirstySnapshot;
 - (void)allSnapshotsNeedUpdate;
 
 - (void)setPdfDocument:(nullable PDFDocument *)pdfDocument 
addAnnotationsWithProperties:(nullable NSArray<NSDictionary<NSString *, id> *> 
*)noteDicts;

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-06-11 16:41:12 UTC (rev 15444)
+++ trunk/SKMainWindowController.m      2025-06-11 22:24:10 UTC (rev 15445)
@@ -1019,7 +1019,7 @@
     [self updateThumbnailsAtPageIndexes:pageIndexes];
     for (SKSnapshotWindowController *wc in snapshots) {
         if ([wc isPageInIndexesVisible:pageIndexes])
-            [self snapshotNeedsUpdate:wc lowPriority:NO];
+            [self performSelectorOnce:@selector(snapshotNeedsUpdate:) 
withObject:wc afterDelay:0.0];
     }
     [pdfView resetPDFToolTipRects];
 }
@@ -2187,7 +2187,7 @@
         NSUInteger idx = [page pageIndex];
         for (SKSnapshotWindowController *wc in snapshots) {
             if ([wc isPageVisible:page]) {
-                [self snapshotNeedsUpdate:wc lowPriority:NO];
+                [self snapshotNeedsUpdate:wc];
                 [[wc pdfView] setNeedsDisplay:YES];
             }
         }
@@ -2257,7 +2257,7 @@
             [self updateThumbnailAtPageIndex:[page pageIndex]];
             for (SKSnapshotWindowController *wc in snapshots) {
                 if ([wc isPageVisible:page])
-                    [self snapshotNeedsUpdate:wc lowPriority:NO];
+                    [self performSelectorOnce:@selector(snapshotNeedsUpdate:) 
withObject:wc afterDelay:0.0];
             }
         }
         
@@ -2304,7 +2304,7 @@
             [self updateThumbnailAtPageIndex:[page pageIndex]];
             for (SKSnapshotWindowController *wc in snapshots) {
                 if ([wc isPageVisible:page])
-                    [self snapshotNeedsUpdate:wc lowPriority:NO];
+                    [self performSelectorOnce:@selector(snapshotNeedsUpdate:) 
withObject:wc afterDelay:0.0];
             }
         }
         
@@ -2326,7 +2326,7 @@
     [self updateThumbnailAtPageIndex:[newPage pageIndex]];
     for (SKSnapshotWindowController *wc in snapshots) {
         if ([wc isPageVisible:oldPage] || [wc isPageVisible:newPage])
-            [self snapshotNeedsUpdate:wc lowPriority:NO];
+            [self performSelectorOnce:@selector(snapshotNeedsUpdate:) 
withObject:wc afterDelay:0.0];
     }
     
     [secondaryPdfView removedAnnotation:annotation onPage:oldPage];
@@ -2449,7 +2449,7 @@
 
 - (void)snapshotControllerDidChange:(SKSnapshotWindowController *)controller {
     if (controller != presentationPreview) {
-        [self snapshotNeedsUpdate:controller lowPriority:NO];
+        [self snapshotNeedsUpdate:controller];
         [rightSideController.snapshotArrayController rearrangeObjects];
         [rightSideController.snapshotTableView reloadData];
         [[self document] setRecentInfoNeedsUpdate:YES];
@@ -2761,7 +2761,7 @@
                 
                 for (SKSnapshotWindowController *wc in snapshots) {
                     if ([wc isPageVisible:page]) {
-                        [self snapshotNeedsUpdate:wc lowPriority:NO];
+                        [self 
performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc 
afterDelay:0.0];
                         [[wc pdfView] updatedAnnotation:note];
                     }
                 }
@@ -3151,9 +3151,13 @@
     });
 }
 
+- (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)controller {
+    [self snapshotNeedsUpdate:controller lowPriority:NO];
+}
+
 - (void)allSnapshotsNeedUpdate {
     for (SKSnapshotWindowController *controller in [self snapshots])
-        [self snapshotNeedsUpdate:controller lowPriority:NO];
+        [self snapshotNeedsUpdate:controller];
     
 }
 

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



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to