forked from mia/Aegisub
Reload audio when the player or provider is changed
Originally committed to SVN as r5892.
This commit is contained in:
parent
43d41def4f
commit
236ea4261d
2 changed files with 37 additions and 0 deletions
|
@ -151,6 +151,9 @@ AudioController::AudioController(agi::Context *context)
|
||||||
Bind(wxEVT_POWER_SUSPENDED, &AudioController::OnComputerSuspending, this);
|
Bind(wxEVT_POWER_SUSPENDED, &AudioController::OnComputerSuspending, this);
|
||||||
Bind(wxEVT_POWER_RESUME, &AudioController::OnComputerResuming, this);
|
Bind(wxEVT_POWER_RESUME, &AudioController::OnComputerResuming, this);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
OPT_SUB("Audio/Player", &AudioController::OnAudioPlayerChanged, this);
|
||||||
|
OPT_SUB("Audio/Provider", &AudioController::OnAudioProviderChanged, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -193,6 +196,34 @@ void AudioController::OnComputerResuming(wxPowerEvent &event)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void AudioController::OnAudioPlayerChanged()
|
||||||
|
{
|
||||||
|
if (!IsAudioOpen()) return;
|
||||||
|
|
||||||
|
Stop();
|
||||||
|
|
||||||
|
delete player;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
player = AudioPlayerFactory::GetAudioPlayer();
|
||||||
|
player->SetProvider(provider);
|
||||||
|
player->OpenStream();
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
CloseAudio();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AudioController::OnAudioProviderChanged()
|
||||||
|
{
|
||||||
|
if (IsAudioOpen())
|
||||||
|
// url is cloned because CloseAudio clears it and OpenAudio takes a const reference
|
||||||
|
OpenAudio(audio_url.Clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void AudioController::OpenAudio(const wxString &url)
|
void AudioController::OpenAudio(const wxString &url)
|
||||||
{
|
{
|
||||||
|
|
|
@ -248,6 +248,12 @@ class AudioController : public wxEvtHandler, public AudioMarkerProvider, public
|
||||||
/// Subtitles save slot which adds the audio uri to the subtitles
|
/// Subtitles save slot which adds the audio uri to the subtitles
|
||||||
void OnSubtitlesSave();
|
void OnSubtitlesSave();
|
||||||
|
|
||||||
|
/// Handler for the current audio player changing
|
||||||
|
void OnAudioPlayerChanged();
|
||||||
|
|
||||||
|
/// Handler for the current audio provider changing
|
||||||
|
void OnAudioProviderChanged();
|
||||||
|
|
||||||
#ifdef wxHAS_POWER_EVENTS
|
#ifdef wxHAS_POWER_EVENTS
|
||||||
/// Handle computer going into suspend mode by stopping audio and closing device
|
/// Handle computer going into suspend mode by stopping audio and closing device
|
||||||
void OnComputerSuspending(wxPowerEvent &event);
|
void OnComputerSuspending(wxPowerEvent &event);
|
||||||
|
|
Loading…
Reference in a new issue