diff options
-rw-r--r-- | Source/SPExportController.m | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Source/SPExportController.m b/Source/SPExportController.m index c13e4fc6..fa5e0e9b 100644 --- a/Source/SPExportController.m +++ b/Source/SPExportController.m @@ -72,6 +72,9 @@ static const NSString *SPSQLExportDropEnabled = @"SQLExportDropEnabled"; - (void)_resizeWindowForCustomFilenameViewByHeightDelta:(NSInteger)delta; - (void)_resizeWindowForAdvancedOptionsViewByHeightDelta:(NSInteger)delta; +- (void)_waitUntilQueueIsEmpty:(id)sender; +- (void)_queueIsEmpty:(id)sender; + @end @implementation SPExportController @@ -364,8 +367,20 @@ static const NSString *SPSQLExportDropEnabled = @"SQLExportDropEnabled"; [sender setEnabled:NO]; // Cancel all of the currently running operations - [operationQueue cancelAllOperations]; - + [operationQueue cancelAllOperations]; // async call + [NSThread detachNewThreadWithName:SPCtxt(@"SPExportController cancelExport: waiting for empty queue", tableDocumentInstance) target:self selector:@selector(_waitUntilQueueIsEmpty:) object:sender]; +} + +- (void)_waitUntilQueueIsEmpty:(id)sender +{ + [sender retain]; + [operationQueue waitUntilAllOperationsAreFinished]; + [self performSelectorOnMainThread:@selector(_queueIsEmpty:) withObject:sender waitUntilDone:NO]; + [sender release]; +} + +- (void)_queueIsEmpty:(id)sender +{ // Loop the cached export file paths and remove them from disk if they exist for (SPExportFile *file in exportFiles) { |