[Spectrum Visualizer] Add crash check for SceneKit
The SceneKit visualizer now has a crash check, which will trigger if an exception is thrown by the app. Signed-off-by: Christopher Snowhill <kode54@gmail.com>swiftingly
parent
fda16cc401
commit
cbcbdf893d
|
@ -20,6 +20,11 @@
|
|||
AppController *_appController;
|
||||
}
|
||||
|
||||
- (void)reportException:(NSException *)exception {
|
||||
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"sceneKitCrashed"];
|
||||
[super reportException:exception];
|
||||
}
|
||||
|
||||
- (void)finishLaunching {
|
||||
[super finishLaunching];
|
||||
_appController = (AppController *)[self delegate];
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
83293070277886250010C07E /* OpenMPTOld.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8329306D277885790010C07E /* OpenMPTOld.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
832C1253180BD1E2005507C1 /* Cog.help in Resources */ = {isa = PBXBuildFile; fileRef = 832C1252180BD1E2005507C1 /* Cog.help */; };
|
||||
832CFC4F2851AA1A002AC26F /* NSView+Visibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 832CFC4E2851AA1A002AC26F /* NSView+Visibility.m */; };
|
||||
832CFC562851AA8B002AC26F /* SpectrumViewLegacy.m in Sources */ = {isa = PBXBuildFile; fileRef = 832CFC552851AA8B002AC26F /* SpectrumViewLegacy.m */; };
|
||||
832CFC562851AA8B002AC26F /* SpectrumViewCG.m in Sources */ = {isa = PBXBuildFile; fileRef = 832CFC552851AA8B002AC26F /* SpectrumViewCG.m */; };
|
||||
833D0C2527C4ABB80060E16A /* ScriptAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 833D0C2427C4ABB80060E16A /* ScriptAdditions.m */; };
|
||||
83489C6B2782F78700BDCEA2 /* libvgmPlayer.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 83489C542782F2DF00BDCEA2 /* libvgmPlayer.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
8349270C27B4EFFC0009AB2B /* duplicateItemsTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 8349270127B4EFFC0009AB2B /* duplicateItemsTemplate.pdf */; };
|
||||
|
@ -149,7 +149,7 @@
|
|||
8370D73F2775AE1300245CE0 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8370D73E2775AE1300245CE0 /* libsqlite3.tbd */; };
|
||||
83717825285D685800DE781D /* FirebaseAppCheck in Frameworks */ = {isa = PBXBuildFile; productRef = 83717824285D685800DE781D /* FirebaseAppCheck */; };
|
||||
8372C93D27C7895300E250C9 /* MAD.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 8372C93027C785BE00E250C9 /* MAD.bundle */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
8377C66327B8CF6300E8BC0F /* SpectrumView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8377C66127B8CF6300E8BC0F /* SpectrumView.m */; };
|
||||
8377C66327B8CF6300E8BC0F /* SpectrumViewSK.m in Sources */ = {isa = PBXBuildFile; fileRef = 8377C66127B8CF6300E8BC0F /* SpectrumViewSK.m */; };
|
||||
8377C6B927B900F000E8BC0F /* SpectrumItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 8377C6B827B900F000E8BC0F /* SpectrumItem.m */; };
|
||||
837DC92B285B05710005C58A /* CoreData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 837DC92A285B05710005C58A /* CoreData.framework */; };
|
||||
837DC931285B3F790005C58A /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 837DC92F285B3F790005C58A /* DataModel.xcdatamodeld */; };
|
||||
|
@ -927,8 +927,8 @@
|
|||
832C1252180BD1E2005507C1 /* Cog.help */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Cog.help; sourceTree = "<group>"; };
|
||||
832CFC4E2851AA1A002AC26F /* NSView+Visibility.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSView+Visibility.m"; sourceTree = "<group>"; };
|
||||
832CFC532851AA37002AC26F /* NSView+Visibility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSView+Visibility.h"; sourceTree = "<group>"; };
|
||||
832CFC542851AA8B002AC26F /* SpectrumViewLegacy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpectrumViewLegacy.h; sourceTree = SOURCE_ROOT; };
|
||||
832CFC552851AA8B002AC26F /* SpectrumViewLegacy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpectrumViewLegacy.m; sourceTree = SOURCE_ROOT; };
|
||||
832CFC542851AA8B002AC26F /* SpectrumViewCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpectrumViewCG.h; sourceTree = SOURCE_ROOT; };
|
||||
832CFC552851AA8B002AC26F /* SpectrumViewCG.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SpectrumViewCG.m; sourceTree = SOURCE_ROOT; };
|
||||
833D0C2027C4ABA00060E16A /* ScriptAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScriptAdditions.h; sourceTree = "<group>"; };
|
||||
833D0C2427C4ABB80060E16A /* ScriptAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScriptAdditions.m; sourceTree = "<group>"; };
|
||||
833F681E1CDBCAA700AFB9F0 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
|
@ -989,8 +989,8 @@
|
|||
8370D73E2775AE1300245CE0 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
|
||||
8372C92A27C785BD00E250C9 /* MAD.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MAD.xcodeproj; path = Plugins/MAD/MAD.xcodeproj; sourceTree = "<group>"; };
|
||||
8375B05117FFEA400092A79F /* OpusPlugin.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OpusPlugin.xcodeproj; path = Plugins/Opus/OpusPlugin.xcodeproj; sourceTree = "<group>"; };
|
||||
8377C66127B8CF6300E8BC0F /* SpectrumView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpectrumView.m; path = Visualization/SpectrumView.m; sourceTree = "<group>"; };
|
||||
8377C66227B8CF6300E8BC0F /* SpectrumView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpectrumView.h; path = Visualization/SpectrumView.h; sourceTree = "<group>"; };
|
||||
8377C66127B8CF6300E8BC0F /* SpectrumViewSK.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SpectrumViewSK.m; path = Visualization/SpectrumViewSK.m; sourceTree = "<group>"; };
|
||||
8377C66227B8CF6300E8BC0F /* SpectrumViewSK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpectrumViewSK.h; path = Visualization/SpectrumViewSK.h; sourceTree = "<group>"; };
|
||||
8377C66427B8CF7A00E8BC0F /* VisualizationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VisualizationController.h; path = Audio/Visualization/VisualizationController.h; sourceTree = "<group>"; };
|
||||
8377C6B727B900F000E8BC0F /* SpectrumItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SpectrumItem.h; path = Visualization/SpectrumItem.h; sourceTree = "<group>"; };
|
||||
8377C6B827B900F000E8BC0F /* SpectrumItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SpectrumItem.m; path = Visualization/SpectrumItem.m; sourceTree = "<group>"; };
|
||||
|
@ -1841,10 +1841,10 @@
|
|||
children = (
|
||||
830C37EF27B9956C00E02BB0 /* ThirdParty */,
|
||||
8377C66427B8CF7A00E8BC0F /* VisualizationController.h */,
|
||||
8377C66227B8CF6300E8BC0F /* SpectrumView.h */,
|
||||
8377C66127B8CF6300E8BC0F /* SpectrumView.m */,
|
||||
832CFC542851AA8B002AC26F /* SpectrumViewLegacy.h */,
|
||||
832CFC552851AA8B002AC26F /* SpectrumViewLegacy.m */,
|
||||
8377C66227B8CF6300E8BC0F /* SpectrumViewSK.h */,
|
||||
8377C66127B8CF6300E8BC0F /* SpectrumViewSK.m */,
|
||||
832CFC542851AA8B002AC26F /* SpectrumViewCG.h */,
|
||||
832CFC552851AA8B002AC26F /* SpectrumViewCG.m */,
|
||||
8377C6B727B900F000E8BC0F /* SpectrumItem.h */,
|
||||
8377C6B827B900F000E8BC0F /* SpectrumItem.m */,
|
||||
83229C9C283B0095004626A8 /* SpectrumWindowController.h */,
|
||||
|
@ -2615,7 +2615,7 @@
|
|||
1770429E0B8BC53600B86321 /* PlaybackController.m in Sources */,
|
||||
1766C6930B911DF1004A7AE4 /* AudioScrobbler.m in Sources */,
|
||||
8355D6B6180612F300D05687 /* NSData+MD5.m in Sources */,
|
||||
8377C66327B8CF6300E8BC0F /* SpectrumView.m in Sources */,
|
||||
8377C66327B8CF6300E8BC0F /* SpectrumViewSK.m in Sources */,
|
||||
1766C6950B911DF1004A7AE4 /* AudioScrobblerClient.m in Sources */,
|
||||
1755E1F90BA0D2B600CA3560 /* PlaylistLoader.m in Sources */,
|
||||
8E9A30160BA792DC0091081B /* NSFileHandle+CreateFile.m in Sources */,
|
||||
|
@ -2628,7 +2628,7 @@
|
|||
5604D4F60D60726E004F5C5D /* SpotlightPlaylistEntry.m in Sources */,
|
||||
56462EAF0D6341F6000AB68C /* SpotlightTransformers.m in Sources */,
|
||||
830C37A527B95EB300E02BB0 /* EqualizerWindowController.m in Sources */,
|
||||
832CFC562851AA8B002AC26F /* SpectrumViewLegacy.m in Sources */,
|
||||
832CFC562851AA8B002AC26F /* SpectrumViewCG.m in Sources */,
|
||||
56462EB20D634206000AB68C /* SpotlightPlaylistController.m in Sources */,
|
||||
07E18DF30D62B38400BB0E11 /* NSArray+ShuffleUtils.m in Sources */,
|
||||
56C63D910D647DF300EAE25A /* NSComparisonPredicate+CogPredicate.m in Sources */,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// SpectrumViewLegacy.h
|
||||
// SpectrumViewCG.h
|
||||
// Cog
|
||||
//
|
||||
// Created by Christopher Snowhill on 2/12/22.
|
||||
|
@ -11,7 +11,7 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SpectrumViewLegacy : NSView
|
||||
@interface SpectrumViewCG : NSView
|
||||
@property(nonatomic) BOOL isListening;
|
||||
|
||||
- (void)startPlayback;
|
|
@ -1,11 +1,11 @@
|
|||
//
|
||||
// SpectrumViewLegacy.m
|
||||
// SpectrumViewCG.m
|
||||
// Cog
|
||||
//
|
||||
// Created by Christopher Snowhill on 2/12/22.
|
||||
//
|
||||
|
||||
#import "SpectrumViewLegacy.h"
|
||||
#import "SpectrumViewCG.h"
|
||||
|
||||
#import "NSView+Visibility.h"
|
||||
|
||||
|
@ -13,14 +13,14 @@
|
|||
|
||||
#define LOWER_BOUND -80
|
||||
|
||||
static void *kSpectrumViewLegacyContext = &kSpectrumViewLegacyContext;
|
||||
static void *kSpectrumViewCGContext = &kSpectrumViewCGContext;
|
||||
|
||||
extern NSString *CogPlaybackDidBeginNotficiation;
|
||||
extern NSString *CogPlaybackDidPauseNotficiation;
|
||||
extern NSString *CogPlaybackDidResumeNotficiation;
|
||||
extern NSString *CogPlaybackDidStopNotficiation;
|
||||
|
||||
@interface SpectrumViewLegacy () {
|
||||
@interface SpectrumViewCG () {
|
||||
VisualizationController *visController;
|
||||
NSTimer *timer;
|
||||
float saLowerBound;
|
||||
|
@ -42,7 +42,7 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
}
|
||||
@end
|
||||
|
||||
@implementation SpectrumViewLegacy
|
||||
@implementation SpectrumViewCG
|
||||
|
||||
@synthesize isListening;
|
||||
|
||||
|
@ -103,7 +103,7 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
ofObject:(id)object
|
||||
change:(NSDictionary<NSKeyValueChangeKey, id> *)change
|
||||
context:(void *)context {
|
||||
if(context == kSpectrumViewLegacyContext) {
|
||||
if(context == kSpectrumViewCGContext) {
|
||||
if([keyPath isEqualToString:@"self.window.visible"]) {
|
||||
[self updateVisListening];
|
||||
} else {
|
||||
|
@ -116,10 +116,10 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
|
||||
- (void)addObservers {
|
||||
if(!observersAdded) {
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumBarColor" options:0 context:kSpectrumViewLegacyContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumDotColor" options:0 context:kSpectrumViewLegacyContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumBarColor" options:0 context:kSpectrumViewCGContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumDotColor" options:0 context:kSpectrumViewCGContext];
|
||||
|
||||
[self addObserver:self forKeyPath:@"self.window.visible" options:0 context:kSpectrumViewLegacyContext];
|
||||
[self addObserver:self forKeyPath:@"self.window.visible" options:0 context:kSpectrumViewCGContext];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(colorsDidChange:)
|
||||
|
@ -154,10 +154,10 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
|
||||
- (void)removeObservers {
|
||||
if(observersAdded) {
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumBarColor" context:kSpectrumViewLegacyContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumDotColor" context:kSpectrumViewLegacyContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumBarColor" context:kSpectrumViewCGContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumDotColor" context:kSpectrumViewCGContext];
|
||||
|
||||
[self removeObserver:self forKeyPath:@"self.window.visible" context:kSpectrumViewLegacyContext];
|
||||
[self removeObserver:self forKeyPath:@"self.window.visible" context:kSpectrumViewCGContext];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self
|
||||
name:NSSystemColorsDidChangeNotification
|
|
@ -7,12 +7,12 @@
|
|||
|
||||
#import "SpectrumWindowController.h"
|
||||
|
||||
#import "SpectrumView.h"
|
||||
#import "SpectrumViewLegacy.h"
|
||||
#import "SpectrumViewSK.h"
|
||||
#import "SpectrumViewCG.h"
|
||||
|
||||
@interface SpectrumWindowController ()
|
||||
@property SpectrumView *spectrumView;
|
||||
@property SpectrumViewLegacy *spectrumViewLegacy;
|
||||
@property SpectrumViewSK *spectrumViewSK;
|
||||
@property SpectrumViewCG *spectrumViewCG;
|
||||
@end
|
||||
|
||||
@implementation SpectrumWindowController
|
||||
|
@ -28,35 +28,35 @@
|
|||
}
|
||||
|
||||
- (void)startRunning {
|
||||
if(!self.spectrumView && !self.spectrumViewLegacy) {
|
||||
if(!self.spectrumViewSK && !self.spectrumViewCG) {
|
||||
NSRect frame = [[self window] frame];
|
||||
self.spectrumView = [[SpectrumView alloc] initWithFrame:frame];
|
||||
if(self.spectrumView) {
|
||||
[[self window] setContentView:self.spectrumView];
|
||||
self.spectrumViewSK = [SpectrumViewSK createGuardWithFrame:frame];
|
||||
if(self.spectrumViewSK) {
|
||||
[[self window] setContentView:self.spectrumViewSK];
|
||||
|
||||
[self.spectrumView enableCameraControl];
|
||||
[self.spectrumViewSK enableCameraControl];
|
||||
} else {
|
||||
self.spectrumViewLegacy = [[SpectrumViewLegacy alloc] initWithFrame:frame];
|
||||
if(self.spectrumViewLegacy) {
|
||||
[[self window] setContentView:self.spectrumViewLegacy];
|
||||
self.spectrumViewCG = [[SpectrumViewCG alloc] initWithFrame:frame];
|
||||
if(self.spectrumViewCG) {
|
||||
[[self window] setContentView:self.spectrumViewCG];
|
||||
|
||||
[self.spectrumViewLegacy enableFullView];
|
||||
[self.spectrumViewCG enableFullView];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(playbackController.playbackStatus == CogStatusPlaying) {
|
||||
if(self.spectrumView)
|
||||
[self.spectrumView startPlayback];
|
||||
else if(self.spectrumViewLegacy)
|
||||
[self.spectrumViewLegacy startPlayback];
|
||||
if(self.spectrumViewSK)
|
||||
[self.spectrumViewSK startPlayback];
|
||||
else if(self.spectrumViewCG)
|
||||
[self.spectrumViewCG startPlayback];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)stopRunning {
|
||||
[[self window] setContentView:nil];
|
||||
self.spectrumView = nil;
|
||||
self.spectrumViewLegacy = nil;
|
||||
self.spectrumViewSK = nil;
|
||||
self.spectrumViewCG = nil;
|
||||
}
|
||||
|
||||
- (void)windowWillClose:(NSNotification *)notification {
|
||||
|
|
|
@ -7,15 +7,18 @@
|
|||
|
||||
#import "SpectrumItem.h"
|
||||
|
||||
#import "SpectrumView.h"
|
||||
#import "SpectrumViewLegacy.h"
|
||||
#import "SpectrumViewSK.h"
|
||||
#import "SpectrumViewCG.h"
|
||||
|
||||
#import "Logging.h"
|
||||
|
||||
@implementation SpectrumItem
|
||||
|
||||
- (void)awakeFromNib {
|
||||
NSRect frame = NSMakeRect(0, 0, 64, 26);
|
||||
NSView *view = [[SpectrumView alloc] initWithFrame:frame];
|
||||
if(!view) view = [[SpectrumViewLegacy alloc] initWithFrame:frame];
|
||||
NSView *view = nil;
|
||||
if(self.toolbar) view = [SpectrumViewSK createGuardWithFrame:frame];
|
||||
if(!view) view = [[SpectrumViewCG alloc] initWithFrame:frame];
|
||||
[self setView:view];
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
//
|
||||
// SpectrumView.h
|
||||
// SpectrumViewSK.h
|
||||
// Cog
|
||||
//
|
||||
// Created by Christopher Snowhill on 2/12/22.
|
||||
|
@ -13,8 +13,11 @@
|
|||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface SpectrumView : SCNView
|
||||
@interface SpectrumViewSK : SCNView
|
||||
@property(nonatomic) BOOL isListening;
|
||||
@property(nonatomic) BOOL isWorking;
|
||||
|
||||
+ (SpectrumViewSK *)createGuardWithFrame:(NSRect)frame;
|
||||
|
||||
- (void)enableCameraControl;
|
||||
- (void)startPlayback;
|
|
@ -1,11 +1,11 @@
|
|||
//
|
||||
// SpectrumView.m
|
||||
// SpectrumViewSK.m
|
||||
// Cog
|
||||
//
|
||||
// Created by Christopher Snowhill on 2/12/22.
|
||||
//
|
||||
|
||||
#import "SpectrumView.h"
|
||||
#import "SpectrumViewSK.h"
|
||||
|
||||
#import "NSView+Visibility.h"
|
||||
|
||||
|
@ -15,19 +15,20 @@
|
|||
|
||||
#define LOWER_BOUND -80
|
||||
|
||||
static void *kSpectrumViewContext = &kSpectrumViewContext;
|
||||
static void *kSpectrumViewSKContext = &kSpectrumViewSKContext;
|
||||
|
||||
extern NSString *CogPlaybackDidBeginNotficiation;
|
||||
extern NSString *CogPlaybackDidPauseNotficiation;
|
||||
extern NSString *CogPlaybackDidResumeNotficiation;
|
||||
extern NSString *CogPlaybackDidStopNotficiation;
|
||||
|
||||
@interface SpectrumView () {
|
||||
@interface SpectrumViewSK () {
|
||||
VisualizationController *visController;
|
||||
NSTimer *timer;
|
||||
BOOL paused;
|
||||
BOOL stopped;
|
||||
BOOL isListening;
|
||||
BOOL isWorking;
|
||||
BOOL bandsReset;
|
||||
BOOL cameraControlEnabled;
|
||||
BOOL observersAdded;
|
||||
|
@ -43,9 +44,17 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
}
|
||||
@end
|
||||
|
||||
@implementation SpectrumView
|
||||
@implementation SpectrumViewSK
|
||||
|
||||
+ (SpectrumViewSK *)createGuardWithFrame:(NSRect)frame {
|
||||
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"sceneKitCrashed"]) {
|
||||
return [[SpectrumViewSK alloc] initWithFrame:frame];
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
@synthesize isListening;
|
||||
@synthesize isWorking;
|
||||
|
||||
- (id)initWithFrame:(NSRect)frame {
|
||||
id<MTLDevice> device = MTLCreateSystemDefaultDevice();
|
||||
|
@ -79,7 +88,7 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
ofObject:(id)object
|
||||
change:(NSDictionary<NSKeyValueChangeKey, id> *)change
|
||||
context:(void *)context {
|
||||
if(context == kSpectrumViewContext) {
|
||||
if(context == kSpectrumViewSKContext) {
|
||||
if([keyPath isEqualToString:@"self.window.visible"]) {
|
||||
[self updateVisListening];
|
||||
} else {
|
||||
|
@ -144,6 +153,7 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
paused = NO;
|
||||
isListening = NO;
|
||||
cameraControlEnabled = NO;
|
||||
isWorking = NO;
|
||||
|
||||
[self setBackgroundColor:[NSColor clearColor]];
|
||||
|
||||
|
@ -185,11 +195,11 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
|
||||
- (void)addObservers {
|
||||
if(!observersAdded) {
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumProjectionMode" options:0 context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumBarColor" options:0 context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumDotColor" options:0 context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumProjectionMode" options:0 context:kSpectrumViewSKContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumBarColor" options:0 context:kSpectrumViewSKContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.spectrumDotColor" options:0 context:kSpectrumViewSKContext];
|
||||
|
||||
[self addObserver:self forKeyPath:@"self.window.visible" options:0 context:kSpectrumViewContext];
|
||||
[self addObserver:self forKeyPath:@"self.window.visible" options:0 context:kSpectrumViewSKContext];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(playbackDidBegin:)
|
||||
|
@ -221,11 +231,11 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
|
||||
- (void)removeObservers {
|
||||
if(observersAdded) {
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumProjectionMode" context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumBarColor" context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumDotColor" context:kSpectrumViewContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumProjectionMode" context:kSpectrumViewSKContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumBarColor" context:kSpectrumViewSKContext];
|
||||
[[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.spectrumDotColor" context:kSpectrumViewSKContext];
|
||||
|
||||
[self removeObserver:self forKeyPath:@"self.window.visible" context:kSpectrumViewContext];
|
||||
[self removeObserver:self forKeyPath:@"self.window.visible" context:kSpectrumViewSKContext];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self
|
||||
name:CogPlaybackDidBeginNotficiation
|
||||
|
@ -246,6 +256,11 @@ extern NSString *CogPlaybackDidStopNotficiation;
|
|||
|
||||
- (void)repaint {
|
||||
[self updateVisListening];
|
||||
|
||||
if(!isWorking) {
|
||||
isWorking = YES;
|
||||
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"sceneKitCrashed"];
|
||||
}
|
||||
|
||||
if(stopped) {
|
||||
[self drawBaseBands];
|
Loading…
Reference in New Issue