[Visualization] Tear down window vis when not open

When the visualization window is not open, it should not continue to run
the scene until the app is quit. Apparently, the windowed mode is really
slow on old Intel machines, too. Full screening it is enough to bodge
the entire system session until the machine is remotely rebooted.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
swiftingly
Christopher Snowhill 2022-05-22 18:39:32 -07:00
parent 84eadd1f33
commit c59d4d0215
2 changed files with 23 additions and 6 deletions

View File

@ -11,7 +11,7 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface SpectrumWindowController : NSWindowController { @interface SpectrumWindowController : NSWindowController <NSWindowDelegate> {
IBOutlet PlaybackController *playbackController; IBOutlet PlaybackController *playbackController;
} }

View File

@ -22,15 +22,33 @@
- (void)windowDidLoad { - (void)windowDidLoad {
[super windowDidLoad]; [super windowDidLoad];
self.spectrumView = [[SpectrumView alloc] initWithFrame:[[self window] frame]]; [self startRunning];
[[self window] setContentView:self.spectrumView]; }
[self.spectrumView enableCameraControl]; - (void)startRunning {
if(!self.spectrumView) {
self.spectrumView = [[SpectrumView alloc] initWithFrame:[[self window] frame]];
[[self window] setContentView:self.spectrumView];
[self.spectrumView enableCameraControl];
}
if(playbackController.playbackStatus == CogStatusPlaying) if(playbackController.playbackStatus == CogStatusPlaying)
[self.spectrumView startPlayback]; [self.spectrumView startPlayback];
} }
- (void)stopRunning {
[[self window] setContentView:nil];
self.spectrumView = nil;
}
- (void)windowWillClose:(NSNotification *)notification {
NSWindow *currentWindow = notification.object;
if([currentWindow isEqualTo:self.window]) {
[self stopRunning];
}
}
- (IBAction)toggleWindow:(id)sender { - (IBAction)toggleWindow:(id)sender {
if([[self window] isVisible]) if([[self window] isVisible])
[[self window] orderOut:self]; [[self window] orderOut:self];
@ -39,8 +57,7 @@
} }
- (IBAction)showWindow:(id)sender { - (IBAction)showWindow:(id)sender {
if(self.spectrumView && playbackController.playbackStatus == CogStatusPlaying) [self startRunning];
[self.spectrumView startPlayback];
return [super showWindow:sender]; return [super showWindow:sender];
} }