summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-10-15 23:09:36 +0200
committerCarl Hetherington <cth@carlh.net>2026-02-16 01:20:37 +0100
commit2c6fbbf9043e61ca4492f0fba919f0927b7b6874 (patch)
tree559452a86c1215cf344948dc67192ecc7d60947e
parent290672d7b4b3c454f02a42d95df3ddfae307542f (diff)
Move responsibility for reading the content store into the applications.
-rw-r--r--src/tools/dcpomatic_player.cc4
-rw-r--r--src/tools/dcpomatic_playlist.cc2
-rw-r--r--src/wx/content_view.cc21
-rw-r--r--src/wx/playlist_controls.cc1
-rw-r--r--src/wx/wx_util.cc20
-rw-r--r--src/wx/wx_util.h1
6 files changed, 28 insertions, 21 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index 5f6d44704..30a8d1071 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -261,6 +261,10 @@ public:
Bind(wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1));
+ if (Config::instance()->player_mode() == Config::PlayerMode::DUAL || Config::instance()->enable_player_http_server()) {
+ update_content_store();
+ }
+
if (Config::instance()->player_mode() == Config::PlayerMode::DUAL) {
auto pc = new PlaylistControls(_overall_panel, _viewer);
_controls = pc;
diff --git a/src/tools/dcpomatic_playlist.cc b/src/tools/dcpomatic_playlist.cc
index 46b6dbdb6..053927232 100644
--- a/src/tools/dcpomatic_playlist.cc
+++ b/src/tools/dcpomatic_playlist.cc
@@ -690,6 +690,8 @@ private:
*/
Config::drop();
+ update_content_store();
+
_frame = new DOMFrame(variant::wx::dcpomatic_playlist_editor());
SetTopWindow(_frame);
_frame->Maximize();
diff --git a/src/wx/content_view.cc b/src/wx/content_view.cc
index 552df6fd7..ba47e8c9f 100644
--- a/src/wx/content_view.cc
+++ b/src/wx/content_view.cc
@@ -81,28 +81,9 @@ ContentView::selected () const
void
ContentView::update ()
{
- auto dir = Config::instance()->player_content_directory();
- if (!dir || !dcp::filesystem::is_directory(*dir)) {
- dir = home_directory ();
- }
-
- wxProgressDialog progress(variant::wx::dcpomatic(), _("Reading content directory"));
-
- auto store = ShowPlaylistContentStore::instance();
-
- auto errors = store->update([&progress]() {
- return progress.Pulse();
- });
-
- DeleteAllItems();
- _content.clear();
- for (auto content: store->all()) {
+ for (auto content: ShowPlaylistContentStore::instance()->all()) {
add(content);
}
-
- for (auto error: errors) {
- error_dialog(this, std_to_wx(error.first), std_to_wx(error.second));
- }
}
diff --git a/src/wx/playlist_controls.cc b/src/wx/playlist_controls.cc
index 1b949349d..2d86b5227 100644
--- a/src/wx/playlist_controls.cc
+++ b/src/wx/playlist_controls.cc
@@ -121,7 +121,6 @@ PlaylistControls::PlaylistControls(wxWindow* parent, FilmViewer& viewer)
_refresh_spl_view->Bind(wxEVT_BUTTON, boost::bind(&PlaylistControls::update_playlist_directory, this));
_refresh_content_view->Bind(wxEVT_BUTTON, boost::bind(&ContentView::update, _content_view));
- _content_view->update();
update_playlist_directory();
}
diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc
index 71f5c092d..0014a6e33 100644
--- a/src/wx/wx_util.cc
+++ b/src/wx/wx_util.cc
@@ -35,6 +35,7 @@
#include "lib/cross.h"
#include "lib/job.h"
#include "lib/job_manager.h"
+#include "lib/show_playlist_content_store.h"
#include "lib/util.h"
#include "lib/variant.h"
#include "lib/version.h"
@@ -781,3 +782,22 @@ dcpomatic::wx::link_bitmap_path()
return bitmap_path(gui_is_dark() ? "link_white.png" : "link_black.png");
}
+
+void
+update_content_store()
+{
+ auto dir = Config::instance()->player_content_directory();
+ if (!dir || !dcp::filesystem::is_directory(*dir)) {
+ dir = home_directory ();
+ }
+
+ wxProgressDialog progress(variant::wx::dcpomatic(), _("Reading content directory"));
+
+ auto store = ShowPlaylistContentStore::instance();
+
+ auto errors = store->update([&progress]() { return progress.Pulse(); });
+
+ for (auto error: errors) {
+ error_dialog(nullptr, std_to_wx(error.first), std_to_wx(error.second));
+ }
+}
diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h
index 76d2f8ea7..cb81d0683 100644
--- a/src/wx/wx_util.h
+++ b/src/wx/wx_util.h
@@ -124,6 +124,7 @@ extern double dpi_scale_factor (wxWindow* window);
extern int search_ctrl_height ();
extern void report_config_load_failure(wxWindow* parent, Config::LoadFailure what);
extern bool layout_for_short_screen(wxWindow* reference);
+extern void update_content_store();
struct Offset