Revision: 4332
http://skim-app.svn.sourceforge.net/skim-app/?rev=4332&view=rev
Author: hofman
Date: 2008-07-31 13:50:24 +0000 (Thu, 31 Jul 2008)
Log Message:
-----------
Remove aligned attribute. Lock task used for dvi conversion.
Modified Paths:
--------------
trunk/SKPSProgressController.h
trunk/SKPSProgressController.m
Modified: trunk/SKPSProgressController.h
===================================================================
--- trunk/SKPSProgressController.h 2008-07-31 13:22:52 UTC (rev 4331)
+++ trunk/SKPSProgressController.h 2008-07-31 13:50:24 UTC (rev 4332)
@@ -37,7 +37,6 @@
*/
#import <Cocoa/Cocoa.h>
-#import <libkern/OSAtomic.h>
@interface SKConversionProgressController : NSWindowController {
IBOutlet NSButton *cancelButton;
@@ -58,7 +57,7 @@
@interface SKDVIProgressController : SKPSProgressController {
NSTask *task;
- volatile int32_t convertingPS __attribute__ ((aligned (32)));
+ volatile int32_t convertingPS;
}
- (NSData *)PDFDataWithDVIFile:(NSString *)dviFile;
@end
Modified: trunk/SKPSProgressController.m
===================================================================
--- trunk/SKPSProgressController.m 2008-07-31 13:22:52 UTC (rev 4331)
+++ trunk/SKPSProgressController.m 2008-07-31 13:50:24 UTC (rev 4332)
@@ -41,6 +41,7 @@
#import "NSTask_SKExtensions.h"
#import "Files_SKExtensions.h"
#import "NSInvocation_SKExtensions.h"
+#import <libkern/OSAtomic.h>
static NSString *SKPSProgressProviderKey = @"provider";
static NSString *SKPSProgressConsumerKey = @"consumer";
@@ -61,6 +62,7 @@
- (void)stopModalOnMainThread:(BOOL)success;
- (void)conversionCompleted:(BOOL)didComplete;
- (void)conversionStarted;
+- (void)converterWasStopped;
- (NSString *)fileType;
@end
@@ -169,6 +171,13 @@
[invocation performSelectorOnMainThread:@selector(invoke) withObject:nil
waitUntilDone:NO];
}
+- (void)converterWasStopped {
+ NSBeep();
+ [textField setStringValue:NSLocalizedString(@"Converter already stopped.",
@"PS conversion progress message")];
+ [cancelButton setTitle:NSLocalizedString(@"Close", @"Button title")];
+ [cancelButton setAction:@selector(close:)];
+}
+
- (NSString *)fileType { return @""; }
- (void)conversionCompleted:(BOOL)didComplete;
@@ -199,12 +208,8 @@
- (IBAction)cancel:(id)sender
{
- if (CGPSConverterAbort(converter) == false) {
- NSBeep();
- [textField setStringValue:NSLocalizedString(@"Converter already
stopped.", @"PS conversion progress message")];
- [cancelButton setTitle:NSLocalizedString(@"Close", @"Button title")];
- [cancelButton setAction:@selector(close:)];
- }
+ if (CGPSConverterAbort(converter) == false)
+ [self converterWasStopped];
}
- (NSData *)PDFDataWithPostScriptData:(NSData *)psData
@@ -306,15 +311,18 @@
- (IBAction)cancel:(id)sender
{
+ OSMemoryBarrier();
if (convertingPS) {
[super cancel:sender];
- } else if ([task isRunning]) {
- [task terminate];
} else {
- NSBeep();
- [textField setStringValue:NSLocalizedString(@"Converter already
stopped.", @"PS conversion progress message")];
- [cancelButton setTitle:NSLocalizedString(@"Close", @"Button title")];
- [cancelButton setAction:@selector(close:)];
+ BOOL wasRunning = NO;
+ @synchronized(self) {
+ wasRunning = [[self task] isRunning];
+ if (wasRunning)
+ [[self task] terminate];
+ }
+ if (wasRunning == NO)
+ [self converterWasStopped];
}
}
@@ -361,7 +369,9 @@
if (success) {
- task = [[NSTask launchedTaskWithLaunchPath:commandPath
arguments:arguments currentDirectoryPath:[dviFile
stringByDeletingLastPathComponent]] retain];
+ @synchronized(self) {
+ task = [[NSTask launchedTaskWithLaunchPath:commandPath
arguments:arguments currentDirectoryPath:[dviFile
stringByDeletingLastPathComponent]] retain];
+ }
invocation = [NSInvocation invocationWithTarget:self
selector:@selector(conversionStarted)];
[invocation performSelectorOnMainThread:@selector(invoke)
withObject:nil waitUntilDone:NO];
@@ -373,8 +383,10 @@
}
}
- [task release];
- task = nil;
+ @synchronized(self) {
+ [task release];
+ task = nil;
+ }
NSData *outData = success ? [NSData dataWithContentsOfFile:outFile] : nil;
NSMutableData *pdfData = [info objectForKey:SKPSProgressPdfDataKey];
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit