This seals up a major memory leak of the playback state whenever a chain is released on stop or on manual track change. CogAudioMulti was retaining the input node due to its listeners, and InputNode was not releasing the listeners when asked to stop running. This is fixed now. Fixes #221 Signed-off-by: Christopher Snowhill <kode54@gmail.com>
51 lines
925 B
Objective-C
51 lines
925 B
Objective-C
//
|
|
// InputNode.h
|
|
// Cog
|
|
//
|
|
// Created by Vincent Spader on 8/2/05.
|
|
// Copyright 2005 Vincent Spader. All rights reserved.
|
|
//
|
|
|
|
#import <Cocoa/Cocoa.h>
|
|
|
|
#import <CoreAudio/AudioHardware.h>
|
|
#import <AudioToolbox/AudioToolbox.h>
|
|
#import <AudioUnit/AudioUnit.h>
|
|
|
|
#import "AudioDecoder.h"
|
|
#import "Node.h"
|
|
#import "Plugin.h"
|
|
|
|
#define INPUT_NODE_SEEK
|
|
|
|
@interface InputNode : Node {
|
|
id<CogDecoder> decoder;
|
|
|
|
int bytesPerSample;
|
|
int bytesPerFrame;
|
|
BOOL floatingPoint;
|
|
BOOL swapEndian;
|
|
|
|
BOOL shouldSeek;
|
|
long seekFrame;
|
|
|
|
BOOL observersAdded;
|
|
|
|
Semaphore *exitAtTheEndOfTheStream;
|
|
}
|
|
@property(readonly) Semaphore *exitAtTheEndOfTheStream;
|
|
|
|
- (BOOL)openWithSource:(id<CogSource>)source;
|
|
- (BOOL)openWithDecoder:(id<CogDecoder>) d;
|
|
|
|
- (void)process;
|
|
- (NSDictionary *) properties;
|
|
- (void)seek:(long)frame;
|
|
|
|
- (void)registerObservers;
|
|
|
|
- (BOOL)setTrack:(NSURL *)track;
|
|
|
|
- (id<CogDecoder>) decoder;
|
|
|
|
@end
|