diff options
author | dynaflash <[email protected]> | 2010-07-19 17:02:43 +0000 |
---|---|---|
committer | dynaflash <[email protected]> | 2010-07-19 17:02:43 +0000 |
commit | 33532ab4f7954a70823156eaa067fce02ef3724b (patch) | |
tree | 2c2134e502f6da89876ecf040775ad7efbfbcd10 | |
parent | bf7630ea1e2b0f07f9fd22db5c05dcbd66490425 (diff) |
MacGui: Fix how we get the current instances pid number since NSRunningApplication is a 10.6 only api and therefore breaks 10.5 compatibility (which also borked the nightly build).
- Many thanks to ritsuka for pointing this out.
- Also adds ability to get the full path to each running instance if we need it in the future.
- Note: Adds additional logging to hbInstances which can be removed when we see fit. But for now imho could be useful since we are early in multi-instance queue encoding.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3450 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r-- | macosx/Controller.h | 4 | ||||
-rw-r--r-- | macosx/Controller.m | 42 | ||||
-rw-r--r-- | macosx/HBQueueController.h | 1 | ||||
-rw-r--r-- | macosx/HBQueueController.mm | 7 |
4 files changed, 39 insertions, 15 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h index 662563e7f..b8cebbbee 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -265,7 +265,8 @@ BOOL fIsDragging; hb_handle_t * fHandle; /* Queue variables */ - hb_handle_t * fQueueEncodeLibhb; // libhb for HB Encoding + int hbInstanceNum; //stores the number of HandBrake instances currently running + hb_handle_t * fQueueEncodeLibhb; // libhb for HB Encoding hb_title_t * fTitle; hb_title_t * fQueueEncodeTitle; int fEncodingQueueItem; // corresponds to the index of fJobGroups encoding item @@ -291,7 +292,6 @@ BOOL fIsDragging; double dockIconProgress; } -- (int) getThisHBInstancePID; - (IBAction) showAboutPanel:(id)sender; - (void) writeToActivityLog:(const char *) format, ...; diff --git a/macosx/Controller.m b/macosx/Controller.m index 66d7674a5..d9122b587 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -86,9 +86,9 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It [self writeToActivityLog: "%s", [versionStringFull UTF8String]]; /* Get the PID number for this hb instance, used in multi instance encoding */ - pidNum = [self getThisHBInstancePID]; + //pidNum = [self getThisHBInstancePID]; /* Report this pid to the activity log */ - [self writeToActivityLog: "Pid for this instance:%d", pidNum]; + //[self writeToActivityLog: "Pid for this instance:%d", pidNum]; return self; } @@ -130,6 +130,9 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It /* Init QueueFile .plist */ [self loadQueueFile]; + /* Run hbInstances to get any info on other instances as well as set the + * pid number for this instance in the case of multi-instance encoding. */ + hbInstanceNum = [self hbInstances]; /* Call UpdateUI every 1/2 sec */ @@ -177,7 +180,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It /* We check to see if there is already another instance of hb running. * Note: hbInstances == 1 means we are the only instance of HandBrake.app */ - if ([self hbInstances] > 1) + if (hbInstanceNum > 1) { alertTitle = [NSString stringWithFormat: NSLocalizedString(@"There is already an instance of HandBrake running.", @"")]; @@ -234,28 +237,45 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It #pragma mark - #pragma mark Multiple Instances + +/* hbInstances checks to see if other instances of HB are running and also sets the pid for this instance for multi-instance queue encoding */ + + /* Note for now since we are in early phases of multi-instance I have put in quite a bit of logging. Can be removed as we see fit. */ - (int) hbInstances { /* check to see if another instance of HandBrake.app is running */ NSArray *runningAppDictionaries = [[NSWorkspace sharedWorkspace] launchedApplications]; NSDictionary *runningAppsDictionary; int hbInstances = 0; + NSString * thisInstanceAppPath = [[NSBundle mainBundle] bundlePath]; + NSString * runningInstanceAppPath; + int runningInstancePidNum; + [self writeToActivityLog: "hbInstances path to this instance: %s", [thisInstanceAppPath UTF8String]]; for (runningAppsDictionary in runningAppDictionaries) { if ([[runningAppsDictionary valueForKey:@"NSApplicationName"] isEqualToString:@"HandBrake"]) { hbInstances++; + /*Report the path to each active instances app path */ + runningInstancePidNum = [[runningAppsDictionary valueForKey:@"NSApplicationProcessIdentifier"] intValue]; + runningInstanceAppPath = [runningAppsDictionary valueForKey:@"NSApplicationPath"]; + [self writeToActivityLog: "hbInstance found instance pidnum:%d at path: %s", runningInstancePidNum, [runningInstanceAppPath UTF8String]]; + /* see if this is us by comparing the app path */ + if ([runningInstanceAppPath isEqualToString: thisInstanceAppPath]) + { + /* If so this is our pidnum */ + [self writeToActivityLog: "hbInstance MATCH FOUND, our pidnum is:%d", runningInstancePidNum]; + /* Get the PID number for this hb instance, used in multi instance encoding */ + pidNum = runningInstancePidNum; + /* Report this pid to the activity log */ + [self writeToActivityLog: "Pid for this instance:%d", pidNum]; + /* Tell fQueueController what our pidNum is */ + [fQueueController setPidNum:pidNum]; + } } } return hbInstances; } -/* Gets the Process Identifer (PID) for this instance and returns it as an integer */ -- (int) getThisHBInstancePID -{ - /* Get the PID of this HB instance */ - int hbInstancePID = [[NSRunningApplication currentApplication] processIdentifier]; - return hbInstancePID; -} #pragma mark - @@ -1934,7 +1954,7 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It else { /* ONLY clear out encoded items if we are single instance */ - if ([self hbInstances] == 1) + if (hbInstanceNum == 1) { [self clearQueueEncodedItems]; } diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h index 8f1268e53..f08415fc4 100644 --- a/macosx/HBQueueController.h +++ b/macosx/HBQueueController.h @@ -107,6 +107,7 @@ BOOL fIsDragging; #endif } +- (void)setPidNum: (int)myPidnum; - (void)setHandle: (hb_handle_t *)handle; - (void)setHBController: (HBController *)controller; diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 451d96ee0..09719e96d 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -226,8 +226,11 @@ static NSString* HBQueuePauseResumeToolbarIdentifier = @"HBQueuePauseRe - (void)setHBController: (HBController *)controller { fHBController = controller; - /* Now get this pidnum from HBController */ - pidNum = [fHBController getThisHBInstancePID]; +} + +- (void)setPidNum: (int)myPidnum +{ + pidNum = myPidnum; [fHBController writeToActivityLog: "HBQueueController : My Pidnum is %d", pidNum]; } |