diff options
| author | Carl Hetherington <cth@carlh.net> | 2025-01-26 01:13:49 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2025-01-26 01:13:49 +0100 |
| commit | 2d777cdbd6017463fe6bd62e2d982d273811d7de (patch) | |
| tree | a6ff0202143301810447c0a6d91c3e9681a18c66 | |
| parent | 04889748a0e78a163b2268e794144cd71e880264 (diff) | |
Fix the player again (crash with subs in OpenGL mode)v2.18.9
Once again the player subtitle alignment wasn't being set up, because
this happens on _viewer.set_film(). _viewer.set_film() must therefore
happen after film_changed(), but then some things in film_changed()
need to happen after _viewer.set_film() (notably the info update and
menu sensitivity update).
| -rw-r--r-- | src/tools/dcpomatic_player.cc | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc index 6accce7d2..e2c689209 100644 --- a/src/tools/dcpomatic_player.cc +++ b/src/tools/dcpomatic_player.cc @@ -464,9 +464,14 @@ public: void reset_film(shared_ptr<Film> film = std::make_shared<Film>(boost::none)) { _film = film; + film_changed(); + _viewer.set_film(_film); + _viewer.seek(DCPTime(), true); + _info->triggered_update(); + set_menu_sensitivity(); + _controls->set_film (_film); - film_changed(); } /* Update anything that depends on properties of the film or its contents */ @@ -517,11 +522,6 @@ public: } } - _viewer.seek(DCPTime(), true); - _info->triggered_update (); - - set_menu_sensitivity (); - auto old = _cpl_menu->GetMenuItems(); for (auto const& i: old) { _cpl_menu->Remove (i); @@ -731,7 +731,16 @@ private: dcp->add_ov (wx_to_std(c->GetPath())); auto job = make_shared<ExamineContentJob>(_film, dcp, true); - _examine_job_connection = job->Finished.connect(boost::bind(&DOMFrame::film_changed, this)); + + auto film_ready = [this]() { + film_changed(); + _viewer.set_film(_film); + _viewer.seek(DCPTime(), true); + _info->triggered_update(); + set_menu_sensitivity(); + }; + + _examine_job_connection = job->Finished.connect(boost::bind<void>(film_ready)); JobManager::instance()->add(job); display_progress(variant::wx::dcpomatic_player(), _("Loading content")); |
