Further cleanup and memory leak fixes.

CQTexperiment
vspader 2007-10-13 07:51:42 +00:00
parent 97a278a143
commit d5919bc93e
18 changed files with 40 additions and 14 deletions

View File

@ -192,7 +192,7 @@ escapeForLastFM(NSString *string)
- (void) processAudioScrobblerCommands:(AudioScrobbler *)myself
{
NSAutoreleasePool *pool = nil;
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
AudioScrobblerClient *client = [[AudioScrobblerClient alloc] init];
mach_timespec_t timeout = { 5, 0 };
NSEnumerator *enumerator = nil;
@ -201,9 +201,7 @@ escapeForLastFM(NSString *string)
in_port_t port = 33367;
while([myself keepProcessingAudioScrobblerCommands]) {
if (pool)
[pool release];
pool = [[NSAutoreleasePool alloc] init];
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Get the first command to be sent
@synchronized([myself queue]) {
@ -231,15 +229,15 @@ escapeForLastFM(NSString *string)
@catch(NSException *exception) {
[client shutdown];
// NSLog(@"Exception: %@",exception);
[pool release];
continue;
}
}
semaphore_timedwait([myself semaphore], timeout);
[pool release];
}
[pool release];
// Send a final stop command to cleanup
@try {
if([client connectToHost:@"localhost" port:port]) {
@ -259,7 +257,7 @@ escapeForLastFM(NSString *string)
[client release];
[myself setAudioScrobblerThreadCompleted:YES];
[pool release];
}

View File

@ -44,10 +44,11 @@
FSRef ref;
NSURL *url = [source url];
[source close]; //There's no room for your kind around here!
if (![[url scheme] isEqualToString:@"file"])
return NO;
[source close]; //There's no room for your kind around here!
// Open the input file
err = FSPathMakeRef((const UInt8 *)[[url path] UTF8String], &ref, NULL);

View File

@ -19,12 +19,14 @@
decoder = [[CoreAudioDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -98,12 +98,12 @@
8E8D42360CBB0F9800135C1B /* CueSheetDecoder.m */,
17F3BB660CBC560700864489 /* CueSheetPropertiesReader.h */,
17F3BB670CBC560700864489 /* CueSheetPropertiesReader.m */,
17DA346C0CC04FCD0003F6B2 /* CueSheetMetadataReader.h */,
17DA346D0CC04FCD0003F6B2 /* CueSheetMetadataReader.m */,
8E8D424B0CBB11C600135C1B /* CueSheet.h */,
8E8D424C0CBB11C600135C1B /* CueSheet.m */,
8E8D43550CBB1AE900135C1B /* CueSheetTrack.h */,
8E8D43560CBB1AE900135C1B /* CueSheetTrack.m */,
17DA346C0CC04FCD0003F6B2 /* CueSheetMetadataReader.h */,
17DA346D0CC04FCD0003F6B2 /* CueSheetMetadataReader.m */,
);
name = Classes;
sourceTree = "<group>";

View File

@ -19,6 +19,7 @@
decoder = [[CueSheetDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}

View File

@ -20,6 +20,7 @@
if (![decoder open:source])
{
NSLog(@"Could not open");
[decoder release];
return nil;
}

View File

@ -240,6 +240,7 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
{
free(buffer);
}
[self setSource:nil];
decoder = NULL;
buffer = NULL;

View File

@ -19,12 +19,14 @@
decoder = [[FlacDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -20,6 +20,7 @@
if (![decoder open:source])
{
NSLog(@"Could not open");
[decoder release];
return nil;
}

View File

@ -554,6 +554,12 @@ static inline signed int scale (mad_fixed_t sample)
[_source release];
_source = nil;
}
if (_outputBuffer)
{
free(_outputBuffer);
_outputBuffer = NULL;
}
mad_synth_finish(&_synth);
mad_frame_finish(&_frame);

View File

@ -19,12 +19,14 @@
decoder = [[MADDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -19,12 +19,14 @@
decoder = [[MonkeysAudioDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -19,12 +19,14 @@
decoder = [[MusepackDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -13,11 +13,11 @@
- (BOOL)open:(id<CogSource>)source
{
NSURL *url = [source url];
[source close];
if (![[url scheme] isEqualToString:@"file"])
return NO;
[source close];
decoder = new shn_reader;
if (!decoder)
@ -50,7 +50,7 @@
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) {
amountToRead = size - totalRead;
if (amountToRead > bufferSize) {

View File

@ -19,12 +19,14 @@
decoder = [[ShortenDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}

View File

@ -19,6 +19,7 @@
decoder = [[VorbisDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
@ -26,6 +27,7 @@
[decoder close];
[decoder release];
NSLog(@"RELEASING");
return properties;
}

View File

@ -229,6 +229,7 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount)
- (void)close
{
[source release];
WavpackCloseFile(wpc);
}

View File

@ -19,12 +19,14 @@
decoder = [[WavPackDecoder alloc] init];
if (![decoder open:source])
{
[decoder release];
return nil;
}
properties = [decoder properties];
[decoder close];
[decoder release];
return properties;
}