From 00d861efc0176a1a6d81ef6e5da61b62b956cd74 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Thu, 27 Feb 2025 14:39:10 -0800 Subject: [PATCH] Bug Fix: Unregister observer correctly Only unregister it if it was actually registered. Signed-off-by: Christopher Snowhill --- Audio/Chain/ChunkList.h | 1 + Audio/Chain/ChunkList.m | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Audio/Chain/ChunkList.h b/Audio/Chain/ChunkList.h index 34fea432a..8f24ec06a 100644 --- a/Audio/Chain/ChunkList.h +++ b/Audio/Chain/ChunkList.h @@ -40,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN #endif BOOL halveDSDVolume; + BOOL observersAdded; void *hdcd_decoder; diff --git a/Audio/Chain/ChunkList.m b/Audio/Chain/ChunkList.m index 1e61ecdf5..52c59c4aa 100644 --- a/Audio/Chain/ChunkList.m +++ b/Audio/Chain/ChunkList.m @@ -402,6 +402,8 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes halveDSDVolume = NO; [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.halveDSDVolume" options:(NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew) context:kChunkListContext]; + + observersAdded = YES; } return self; @@ -429,8 +431,10 @@ static void convert_be_to_le(uint8_t *buffer, size_t bitsPerSample, size_t bytes if(tempData) { free(tempData); } - - [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.halveDSDVolume" context:kChunkListContext]; + if(observersAdded) { + [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:@"values.halveDSDVolume" context:kChunkListContext]; + observersAdded = NO; + } } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {