diff options
author | Max <post@wickenrode.com> | 2015-08-02 21:29:59 +0200 |
---|---|---|
committer | Max <post@wickenrode.com> | 2015-09-12 22:36:54 +0200 |
commit | 9a1541e55336b1833ba8ee403b99d20ea1ecce5f (patch) | |
tree | 52cd51bffcee941d163b50c0e03027b3fa7e213b /Source/SPExportController.m | |
parent | 940b515a1abf58a81f7de8697bdec54d43064664 (diff) | |
download | sequelpro-9a1541e55336b1833ba8ee403b99d20ea1ecce5f.tar.gz sequelpro-9a1541e55336b1833ba8ee403b99d20ea1ecce5f.tar.bz2 sequelpro-9a1541e55336b1833ba8ee403b99d20ea1ecce5f.zip |
Fix a crash that could occur when cancelling an export (fixes #2192)
Diffstat (limited to 'Source/SPExportController.m')
-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) { |