summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-01-26 01:13:49 +0100
committerCarl Hetherington <cth@carlh.net>2025-01-26 01:13:49 +0100
commit2d777cdbd6017463fe6bd62e2d982d273811d7de (patch)
treea6ff0202143301810447c0a6d91c3e9681a18c66
parent04889748a0e78a163b2268e794144cd71e880264 (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.cc23
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"));