int BEE::Sound::effect_add(int new_sound_effects) { if (is_loaded) { int old_sound_effects = sound_effects; sound_effects = new_sound_effects; if (is_music) { effect_remove_post(old_sound_effects ^ sound_effects); effect_set_post(sound_effects); } else { std::list<int> tmp_channels = current_channels; for (auto i=tmp_channels.begin(); i != tmp_channels.end(); ++i) { effect_remove(*i, old_sound_effects ^ sound_effects); effect_set(*i, sound_effects); } } return 0; } return 1; }
static void effect_enable (PluginHandle * plugin, EffectPlugin * ep, bool_t enable) { if (ep->preserves_format) { pthread_mutex_lock (& mutex); if (enable) effect_insert (plugin, ep); else effect_remove (plugin); pthread_mutex_unlock (& mutex); } else { AUDDBG ("Reset to add/remove %s.\n", plugin_get_name (plugin)); output_reset (OUTPUT_RESET_EFFECTS_ONLY); } }
static void effect_enable (PluginHandle * plugin, EffectPlugin * ep, bool_t enable) { if (ep->preserves_format) { pthread_mutex_lock (& mutex); if (enable) effect_insert (plugin, ep); else effect_remove (plugin); pthread_mutex_unlock (& mutex); } else { AUDDBG ("Reset to add/remove %s.\n", plugin_get_name (plugin)); int time = playback_get_time (); bool_t paused = playback_get_paused (); playback_stop (); playback_play (time, paused); } }