Further cleanup and memory leak fixes.
parent
97a278a143
commit
d5919bc93e
|
@ -192,7 +192,7 @@ escapeForLastFM(NSString *string)
|
||||||
|
|
||||||
- (void) processAudioScrobblerCommands:(AudioScrobbler *)myself
|
- (void) processAudioScrobblerCommands:(AudioScrobbler *)myself
|
||||||
{
|
{
|
||||||
NSAutoreleasePool *pool = nil;
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
AudioScrobblerClient *client = [[AudioScrobblerClient alloc] init];
|
AudioScrobblerClient *client = [[AudioScrobblerClient alloc] init];
|
||||||
mach_timespec_t timeout = { 5, 0 };
|
mach_timespec_t timeout = { 5, 0 };
|
||||||
NSEnumerator *enumerator = nil;
|
NSEnumerator *enumerator = nil;
|
||||||
|
@ -201,9 +201,7 @@ escapeForLastFM(NSString *string)
|
||||||
in_port_t port = 33367;
|
in_port_t port = 33367;
|
||||||
|
|
||||||
while([myself keepProcessingAudioScrobblerCommands]) {
|
while([myself keepProcessingAudioScrobblerCommands]) {
|
||||||
if (pool)
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
[pool release];
|
|
||||||
pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
// Get the first command to be sent
|
// Get the first command to be sent
|
||||||
@synchronized([myself queue]) {
|
@synchronized([myself queue]) {
|
||||||
|
@ -231,14 +229,14 @@ escapeForLastFM(NSString *string)
|
||||||
@catch(NSException *exception) {
|
@catch(NSException *exception) {
|
||||||
[client shutdown];
|
[client shutdown];
|
||||||
// NSLog(@"Exception: %@",exception);
|
// NSLog(@"Exception: %@",exception);
|
||||||
|
[pool release];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
semaphore_timedwait([myself semaphore], timeout);
|
semaphore_timedwait([myself semaphore], timeout);
|
||||||
}
|
|
||||||
|
|
||||||
[pool release];
|
[pool release];
|
||||||
|
}
|
||||||
|
|
||||||
// Send a final stop command to cleanup
|
// Send a final stop command to cleanup
|
||||||
@try {
|
@try {
|
||||||
|
|
|
@ -44,10 +44,11 @@
|
||||||
FSRef ref;
|
FSRef ref;
|
||||||
|
|
||||||
NSURL *url = [source url];
|
NSURL *url = [source url];
|
||||||
|
[source close]; //There's no room for your kind around here!
|
||||||
|
|
||||||
if (![[url scheme] isEqualToString:@"file"])
|
if (![[url scheme] isEqualToString:@"file"])
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
[source close]; //There's no room for your kind around here!
|
|
||||||
|
|
||||||
// Open the input file
|
// Open the input file
|
||||||
err = FSPathMakeRef((const UInt8 *)[[url path] UTF8String], &ref, NULL);
|
err = FSPathMakeRef((const UInt8 *)[[url path] UTF8String], &ref, NULL);
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[CoreAudioDecoder alloc] init];
|
decoder = [[CoreAudioDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,12 +98,12 @@
|
||||||
8E8D42360CBB0F9800135C1B /* CueSheetDecoder.m */,
|
8E8D42360CBB0F9800135C1B /* CueSheetDecoder.m */,
|
||||||
17F3BB660CBC560700864489 /* CueSheetPropertiesReader.h */,
|
17F3BB660CBC560700864489 /* CueSheetPropertiesReader.h */,
|
||||||
17F3BB670CBC560700864489 /* CueSheetPropertiesReader.m */,
|
17F3BB670CBC560700864489 /* CueSheetPropertiesReader.m */,
|
||||||
|
17DA346C0CC04FCD0003F6B2 /* CueSheetMetadataReader.h */,
|
||||||
|
17DA346D0CC04FCD0003F6B2 /* CueSheetMetadataReader.m */,
|
||||||
8E8D424B0CBB11C600135C1B /* CueSheet.h */,
|
8E8D424B0CBB11C600135C1B /* CueSheet.h */,
|
||||||
8E8D424C0CBB11C600135C1B /* CueSheet.m */,
|
8E8D424C0CBB11C600135C1B /* CueSheet.m */,
|
||||||
8E8D43550CBB1AE900135C1B /* CueSheetTrack.h */,
|
8E8D43550CBB1AE900135C1B /* CueSheetTrack.h */,
|
||||||
8E8D43560CBB1AE900135C1B /* CueSheetTrack.m */,
|
8E8D43560CBB1AE900135C1B /* CueSheetTrack.m */,
|
||||||
17DA346C0CC04FCD0003F6B2 /* CueSheetMetadataReader.h */,
|
|
||||||
17DA346D0CC04FCD0003F6B2 /* CueSheetMetadataReader.m */,
|
|
||||||
);
|
);
|
||||||
name = Classes;
|
name = Classes;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
decoder = [[CueSheetDecoder alloc] init];
|
decoder = [[CueSheetDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
NSLog(@"Could not open");
|
NSLog(@"Could not open");
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -240,6 +240,7 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
|
||||||
{
|
{
|
||||||
free(buffer);
|
free(buffer);
|
||||||
}
|
}
|
||||||
|
[self setSource:nil];
|
||||||
|
|
||||||
decoder = NULL;
|
decoder = NULL;
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[FlacDecoder alloc] init];
|
decoder = [[FlacDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
NSLog(@"Could not open");
|
NSLog(@"Could not open");
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -555,6 +555,12 @@ static inline signed int scale (mad_fixed_t sample)
|
||||||
_source = nil;
|
_source = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_outputBuffer)
|
||||||
|
{
|
||||||
|
free(_outputBuffer);
|
||||||
|
_outputBuffer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
mad_synth_finish(&_synth);
|
mad_synth_finish(&_synth);
|
||||||
mad_frame_finish(&_frame);
|
mad_frame_finish(&_frame);
|
||||||
mad_stream_finish(&_stream);
|
mad_stream_finish(&_stream);
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[MADDecoder alloc] init];
|
decoder = [[MADDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[MonkeysAudioDecoder alloc] init];
|
decoder = [[MonkeysAudioDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[MusepackDecoder alloc] init];
|
decoder = [[MusepackDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,11 +13,11 @@
|
||||||
- (BOOL)open:(id<CogSource>)source
|
- (BOOL)open:(id<CogSource>)source
|
||||||
{
|
{
|
||||||
NSURL *url = [source url];
|
NSURL *url = [source url];
|
||||||
|
[source close];
|
||||||
|
|
||||||
if (![[url scheme] isEqualToString:@"file"])
|
if (![[url scheme] isEqualToString:@"file"])
|
||||||
return NO;
|
return NO;
|
||||||
|
|
||||||
[source close];
|
|
||||||
|
|
||||||
decoder = new shn_reader;
|
decoder = new shn_reader;
|
||||||
|
|
||||||
if (!decoder)
|
if (!decoder)
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
|
|
||||||
totalRead = 0;
|
totalRead = 0;
|
||||||
|
|
||||||
//For some reason the busy loop is causing pops when output is set to 48000. Probably CPU starvation, since the SHN decoder seems to use a multithreaded approach.
|
//For some reason the busy loop is causing pops when output is set to 48000. Probably CPU starvation, since the SHN decoder seems to use a multithreaded nonblocking approach.
|
||||||
// while (totalRead < size) {
|
// while (totalRead < size) {
|
||||||
amountToRead = size - totalRead;
|
amountToRead = size - totalRead;
|
||||||
if (amountToRead > bufferSize) {
|
if (amountToRead > bufferSize) {
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[ShortenDecoder alloc] init];
|
decoder = [[ShortenDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
decoder = [[VorbisDecoder alloc] init];
|
decoder = [[VorbisDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +27,7 @@
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
[decoder release];
|
[decoder release];
|
||||||
|
NSLog(@"RELEASING");
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,6 +229,7 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount)
|
||||||
|
|
||||||
- (void)close
|
- (void)close
|
||||||
{
|
{
|
||||||
|
[source release];
|
||||||
WavpackCloseFile(wpc);
|
WavpackCloseFile(wpc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,12 +19,14 @@
|
||||||
decoder = [[WavPackDecoder alloc] init];
|
decoder = [[WavPackDecoder alloc] init];
|
||||||
if (![decoder open:source])
|
if (![decoder open:source])
|
||||||
{
|
{
|
||||||
|
[decoder release];
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
properties = [decoder properties];
|
properties = [decoder properties];
|
||||||
|
|
||||||
[decoder close];
|
[decoder close];
|
||||||
|
[decoder release];
|
||||||
|
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue