Skip to content
This repository was archived by the owner on Jul 18, 2024. It is now read-only.

Commit 09acf9b

Browse files
committed
Defer Canon SDK calls until later in application launch
1 parent 848d7b1 commit 09acf9b

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

Camera Live/SyPCanonDSLR.m

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,14 +136,24 @@ @implementation SyPCanonDSLR
136136

137137
+ (void)load
138138
{
139-
EdsInitializeSDK();
140-
EdsSetCameraAddedHandler(SyPCanonDSLRHandleCameraAdded, NULL);
141-
SyPCanonDSLRHandleCameraAdded(NULL);
142-
}
143-
144-
__attribute__((destructor)) static void finalizer()
145-
{
146-
EdsTerminateSDK();
139+
[[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationDidFinishLaunchingNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
140+
EdsInitializeSDK();
141+
EdsSetCameraAddedHandler(SyPCanonDSLRHandleCameraAdded, NULL);
142+
SyPCanonDSLRHandleCameraAdded(NULL);
143+
}];
144+
[[NSNotificationCenter defaultCenter] addObserverForName:NSApplicationWillTerminateNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {
145+
NSMutableSet *remove = [NSMutableSet setWithCapacity:1];
146+
for (SyPCamera *camera in [SyPCamera cameras]) {
147+
if ([camera isKindOfClass:[SyPCanonDSLR class]])
148+
{
149+
[remove addObject:camera];
150+
}
151+
}
152+
for (SyPCamera *camera in remove) {
153+
[SyPCamera removeCamera:camera];
154+
}
155+
EdsTerminateSDK();
156+
}];
147157
}
148158

149159
+ (NSError *)errorForEDSError:(EdsError)code

0 commit comments

Comments
 (0)