From 720ee8c3095ade447978fc9ff0384e80f260613d Mon Sep 17 00:00:00 2001 From: Niels Martin Hansen Date: Thu, 16 Aug 2007 22:45:29 +0000 Subject: [PATCH] Add some better error catching+reporting in audio loading/unloading. (Don't just crash.) Originally committed to SVN as r1499. --- aegisub/audio_display.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/aegisub/audio_display.cpp b/aegisub/audio_display.cpp index c5ae895c8..8f4c12e89 100644 --- a/aegisub/audio_display.cpp +++ b/aegisub/audio_display.cpp @@ -810,14 +810,24 @@ void AudioDisplay::SetFile(wxString file) { // Unload if (file.IsEmpty()) { wxLogDebug(_T("AudioDisplay::SetFile: file is empty, just closing audio")); - if (player) player->CloseStream(); + try { + if (player) player->CloseStream(); + } + catch (const wxChar *e) { + wxLogError(e); + } delete provider; delete player; delete spectrumRenderer; provider = NULL; player = NULL; spectrumRenderer = NULL; - Reset(); + try { + Reset(); + } + catch (const wxChar *e) { + wxLogError(e); + } loaded = false; temporary = false; @@ -865,6 +875,11 @@ void AudioDisplay::SetFile(wxString file) { // Update UpdateImage(); } + catch (const wxChar *e) { + if (player) delete player; + if (provider) delete provider; + wxLogError(e); + } catch (wxString &err) { if (player) delete player; if (provider) delete provider;