Don't require that subtitles passed to SubtitlesProvider::LoadSubtitles be a copy that can be deleted

Originally committed to SVN as r4477.
This commit is contained in:
Thomas Goyne 2010-06-11 02:25:28 +00:00
parent 72cbf4939f
commit 4ef9d41601
3 changed files with 2 additions and 5 deletions

View file

@ -94,7 +94,6 @@ void CSRISubtitlesProvider::LoadSubtitles(AssFile *subs) {
if (!renderer) { if (!renderer) {
renderer = csri_renderer_default(); renderer = csri_renderer_default();
if (!renderer) { if (!renderer) {
delete subs;
throw _T("No CSRI renderer available, cannot show subtitles. Try installing one or switch to another subtitle provider."); throw _T("No CSRI renderer available, cannot show subtitles. Try installing one or switch to another subtitle provider.");
} }
} }
@ -103,7 +102,6 @@ void CSRISubtitlesProvider::LoadSubtitles(AssFile *subs) {
if (canOpenMem) { if (canOpenMem) {
std::vector<char> data; std::vector<char> data;
subs->SaveMemory(data,_T("UTF-8")); subs->SaveMemory(data,_T("UTF-8"));
delete subs;
instance = csri_open_mem(renderer,&data[0],data.size(),NULL); instance = csri_open_mem(renderer,&data[0],data.size(),NULL);
} }
@ -111,7 +109,6 @@ void CSRISubtitlesProvider::LoadSubtitles(AssFile *subs) {
else { else {
wxString subsFileName = VideoContext::Get()->GetTempWorkFile(); wxString subsFileName = VideoContext::Get()->GetTempWorkFile();
subs->Save(subsFileName,false,false,_T("UTF-8")); subs->Save(subsFileName,false,false,_T("UTF-8"));
delete subs;
instance = csri_open_file(renderer,subsFileName.mb_str(wxConvUTF8),NULL); instance = csri_open_file(renderer,subsFileName.mb_str(wxConvUTF8),NULL);
} }
} }

View file

@ -133,7 +133,6 @@ void LibassSubtitlesProvider::LoadSubtitles(AssFile *subs) {
// Prepare subtitles // Prepare subtitles
std::vector<char> data; std::vector<char> data;
subs->SaveMemory(data,_T("UTF-8")); subs->SaveMemory(data,_T("UTF-8"));
delete subs;
// Load file // Load file
if (ass_track) ass_free_track(ass_track); if (ass_track) ass_free_track(ass_track);

View file

@ -350,7 +350,8 @@ void VideoContext::Refresh (bool video, bool subtitles) {
AssExporter exporter(grid->ass); AssExporter exporter(grid->ass);
exporter.AddAutoFilters(); exporter.AddAutoFilters();
try { try {
subsProvider->LoadSubtitles(exporter.ExportTransform()); std::auto_ptr<AssFile> exported(exporter.ExportTransform());
subsProvider->LoadSubtitles(exported.get());
} }
catch (wxString err) { wxMessageBox(_T("Error while invoking subtitles provider: ") + err,_T("Subtitles provider")); } catch (wxString err) { wxMessageBox(_T("Error while invoking subtitles provider: ") + err,_T("Subtitles provider")); }
catch (const wchar_t *err) { wxMessageBox(_T("Error while invoking subtitles provider: ") + wxString(err),_T("Subtitles provider")); } catch (const wchar_t *err) { wxMessageBox(_T("Error while invoking subtitles provider: ") + wxString(err),_T("Subtitles provider")); }