Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Fix a crash that could occur when cancelling an export (fixes #2192)
- Loading branch information
Showing
with
17 additions
and
2 deletions.
-
+17
−2
Source/SPExportController.m
|
@@ -72,6 +72,9 @@ - (void)_toggleExportButtonWithBool:(NSNumber *)enable; |
|
|
- (void)_resizeWindowForCustomFilenameViewByHeightDelta:(NSInteger)delta; |
|
|
- (void)_resizeWindowForAdvancedOptionsViewByHeightDelta:(NSInteger)delta; |
|
|
|
|
|
- (void)_waitUntilQueueIsEmpty:(id)sender; |
|
|
- (void)_queueIsEmpty:(id)sender; |
|
|
|
|
|
@end |
|
|
|
|
|
@implementation SPExportController |
|
@@ -364,8 +367,20 @@ - (IBAction)cancelExport:(id)sender |
|
|
[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) |
|
|
{ |
|
|