Further cleanup and memory leak fixes.
parent
97a278a143
commit
d5919bc93e
|
@ -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,14 +229,14 @@ escapeForLastFM(NSString *string)
|
|||
@catch(NSException *exception) {
|
||||
[client shutdown];
|
||||
// NSLog(@"Exception: %@",exception);
|
||||
[pool release];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
semaphore_timedwait([myself semaphore], timeout);
|
||||
}
|
||||
|
||||
[pool release];
|
||||
}
|
||||
|
||||
// Send a final stop command to cleanup
|
||||
@try {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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>";
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
decoder = [[CueSheetDecoder alloc] init];
|
||||
if (![decoder open:source])
|
||||
{
|
||||
[decoder release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
if (![decoder open:source])
|
||||
{
|
||||
NSLog(@"Could not open");
|
||||
[decoder release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
|
|
@ -240,6 +240,7 @@ void ErrorCallback(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorS
|
|||
{
|
||||
free(buffer);
|
||||
}
|
||||
[self setSource:nil];
|
||||
|
||||
decoder = NULL;
|
||||
buffer = NULL;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
if (![decoder open:source])
|
||||
{
|
||||
NSLog(@"Could not open");
|
||||
[decoder release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
|
|
|
@ -555,6 +555,12 @@ static inline signed int scale (mad_fixed_t sample)
|
|||
_source = nil;
|
||||
}
|
||||
|
||||
if (_outputBuffer)
|
||||
{
|
||||
free(_outputBuffer);
|
||||
_outputBuffer = NULL;
|
||||
}
|
||||
|
||||
mad_synth_finish(&_synth);
|
||||
mad_frame_finish(&_frame);
|
||||
mad_stream_finish(&_stream);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -229,6 +229,7 @@ int32_t WriteBytesProc(void *ds, void *data, int32_t bcount)
|
|||
|
||||
- (void)close
|
||||
{
|
||||
[source release];
|
||||
WavpackCloseFile(wpc);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue