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

Reply via email to