Author: rmottola
Date: Fri Dec  4 15:41:17 2015
New Revision: 39217

URL: http://svn.gna.org/viewcvs/gnustep?rev=39217&view=rev
Log:
removeThumbnails, makeThumbnails: execute work in separate thread. Add 
pathsInProcessing to keep track of which paths are in process and do not allow 
to make/remove thumbnails on them

Modified:
    apps/gworkspace/trunk/ChangeLog
    apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.h
    apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.m

Modified: apps/gworkspace/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/ChangeLog?rev=39217&r1=39216&r2=39217&view=diff
==============================================================================
--- apps/gworkspace/trunk/ChangeLog     (original)
+++ apps/gworkspace/trunk/ChangeLog     Fri Dec  4 15:41:17 2015
@@ -1,3 +1,9 @@
+2015-12-04 Riccardo Mottola <[email protected]>
+
+       * GWorkspace/Thumbnailer/GWThumbnailer.h
+       * GWorkspace/Thumbnailer/GWThumbnailer.m
+       removeThumbnails, makeThumbnails: execute work in separate thread. Add 
pathsInProcessing to keep track of which paths are in process and do not allow 
to make/remove thumbnails on them.
+
 2015-12-04 Riccardo Mottola <[email protected]>
 
        * GWorkspace/Thumbnailer/GWThumbnailer.h

Modified: apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.h
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.h?rev=39217&r1=39216&r2=39217&view=diff
==============================================================================
--- apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.h        
(original)
+++ apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.h        Fri Dec 
 4 15:41:17 2015
@@ -52,6 +52,7 @@
   NSConnection *conn;
   NSFileManager *fm;
   NSLock *dictLock;
+  NSMutableArray *pathsInProcessing;
 }
 
 + (Thumbnailer *)sharedThumbnailer;

Modified: apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.m?rev=39217&r1=39216&r2=39217&view=diff
==============================================================================
--- apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.m        
(original)
+++ apps/gworkspace/trunk/GWorkspace/Thumbnailer/GWThumbnailer.m        Fri Dec 
 4 15:41:17 2015
@@ -49,14 +49,12 @@
 {
   if (nil == sharedThumbnailerInstance)
     {
-      NSLog(@"first shared instance");
       sharedThumbnailerInstance = [[Thumbnailer allocWithZone:NULL] init];
       countInstances = 1;
     }
   else
     {
       countInstances++;
-      NSLog(@"returning existing instance, %lu", (long)countInstances);
     }
   return sharedThumbnailerInstance;
 }
@@ -82,6 +80,7 @@
       RELEASE (thumbsDict);
       DESTROY (conn);
       DESTROY (dictLock);
+      RELEASE (pathsInProcessing);
       sharedThumbnailerInstance = nil;
       [super dealloc];
     }
@@ -98,6 +97,8 @@
 
     if (!dictLock)
       dictLock = [[NSLock alloc] init];
+
+    pathsInProcessing = [[NSMutableArray alloc] init];
 
     fm = [NSFileManager defaultManager];
     extProviders = [NSMutableDictionary new];
@@ -152,7 +153,7 @@
 - (void)writeDictToFile
 {
   [dictLock lock];
-  NSLog(@"writing to: %@", dictPath);
+  NSLog(@"(%d) writing to: %@", (int)countInstances, dictPath);
   [thumbsDict writeToFile: dictPath atomically: YES];
   [dictLock unlock];
 }
@@ -304,7 +305,7 @@
   return [NSString stringWithFormat: @"%lx", thumbref];
 }
 
-- (void)makeThumbnails:(NSString *)path
+- (void)_makeThumbnails:(NSString *)path
 {
   NSData *data;
   NSMutableArray *added;
@@ -312,6 +313,7 @@
   NSUInteger i;
 
 
+  NSLog(@"_makeThumbnails (%u): %@", (int)countInstances, path);
   added = [NSMutableArray array];
 
   if ([fm fileExistsAtPath: path isDirectory: &isdir] && isdir)
@@ -355,9 +357,18 @@
        object: nil 
        userInfo: info];
     }
-}
-
-- (void)removeThumbnails:(NSString *)path
+  [pathsInProcessing removeObject:path];
+}
+
+- (void)makeThumbnails:(NSString *)path
+{
+  if ([pathsInProcessing containsObject:path])
+    return;
+  [pathsInProcessing addObject:path];
+  [NSThread detachNewThreadSelector:@selector(_makeThumbnails:) toTarget:self 
withObject:path];
+}
+
+- (void)_removeThumbnails:(NSString *)path
 {
   NSMutableArray *deleted;
   BOOL isdir;
@@ -404,8 +415,18 @@
                           object: nil 
                         userInfo: info];
       }
-}
-
+
+  [pathsInProcessing removeObject:path];
+}
+
+
+- (void)removeThumbnails:(NSString *)path
+{
+  if ([pathsInProcessing containsObject:path])
+    return;
+  [pathsInProcessing addObject:path];
+  [NSThread detachNewThreadSelector:@selector(_removeThumbnails:) 
toTarget:self withObject:path];
+}
 
 - (BOOL)registerThumbnailData:(NSData *)data 
                       forPath:(NSString *)path


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to