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