浏览代码

VLCMediaPlayer: Don't release equalizer on disable

Soomin Lee 7 年之前
父节点
当前提交
a2c58090f6
共有 2 个文件被更改,包括 9 次插入10 次删除
  1. 1 0
      Headers/Public/VLCMediaPlayer.h
  2. 8 10
      Sources/VLCMediaPlayer.m

+ 1 - 0
Headers/Public/VLCMediaPlayer.h

@@ -607,6 +607,7 @@ extern NSString *const VLCTitleDescriptionIsMenu;
 /**
  * Toggle equalizer state
  * param: bool value to enable/disable the equalizer
+ * \note this can fail, if failed the value will not be changed
  * \return current state */
 @property (readwrite) BOOL equalizerEnabled;
 

+ 8 - 10
Sources/VLCMediaPlayer.m

@@ -973,18 +973,16 @@ static void HandleMediaPlayerSnapshot(const libvlc_event_t * event, void * self)
 
 - (void)setEqualizerEnabled:(BOOL)equalizerEnabled
 {
-    _equalizerEnabled = equalizerEnabled;
-    if (!_equalizerEnabled) {
-        libvlc_media_player_set_equalizer(_playerInstance, NULL);
-
-        if (_equalizerInstance)
-            libvlc_audio_equalizer_release(_equalizerInstance);
-        return;
+    if (!_equalizerInstance) {
+        if (!(_equalizerInstance = libvlc_audio_equalizer_new())) {
+            NSAssert(_instance, @"equalizer failed to initialize");
+            return;
+        }
     }
 
-    if (!_equalizerInstance)
-        _equalizerInstance = libvlc_audio_equalizer_new();
-    libvlc_media_player_set_equalizer(_playerInstance, _equalizerInstance);
+    _equalizerEnabled = equalizerEnabled;
+    libvlc_media_player_set_equalizer(_playerInstance,
+                                      equalizerEnabled ? _equalizerInstance : NULL);
 }
 
 - (BOOL)equalizerEnabled