summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-12-14 20:15:24 +0100
committerCarl Hetherington <cth@carlh.net>2025-02-02 15:46:34 +0100
commit87f14a309bdf6be7471ddb8c2970d1cd7aab2890 (patch)
tree65ddf716b1d84ba5d4d6560eff9251a9dc589413
parentf4190b283fc65fa21ce87c7b492eff954dece91b (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.cc19
-rw-r--r--src/wx/playlist_controls.cc1
-rw-r--r--src/wx/wx_util.cc23
-rw-r--r--src/wx/wx_util.h1
6 files changed, 31 insertions, 19 deletions
diff --git a/src/tools/dcpomatic_player.cc b/src/tools/dcpomatic_player.cc
index 0a45988a7..5bd042db8 100644
--- a/src/tools/dcpomatic_player.cc
+++ b/src/tools/dcpomatic_player.cc
@@ -252,6 +252,10 @@ public:
Bind(wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1));
+ if (Config::instance()->player_mode() == Config::PLAYER_MODE_DUAL || Config::instance()->enable_player_http_server()) {
+ update_content_store();
+ }
+
if (Config::instance()->player_mode() == Config::PLAYER_MODE_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 11d162365..4f6ea59e7 100644
--- a/src/tools/dcpomatic_playlist.cc
+++ b/src/tools/dcpomatic_playlist.cc
@@ -665,6 +665,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 fb0afd976..f3c11fa04 100644
--- a/src/wx/content_view.cc
+++ b/src/wx/content_view.cc
@@ -78,28 +78,11 @@ 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 = ContentStore::instance();
-
- auto errors = store->update([&progress]() {
- return progress.Pulse();
- });
-
DeleteAllItems ();
_content_digests.clear();
- for (auto content: store->all()) {
+ for (auto content: ContentStore::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 454f441dc..0f88f2881 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 b1cd873fc..bc2d593f1 100644
--- a/src/wx/wx_util.cc
+++ b/src/wx/wx_util.cc
@@ -33,6 +33,7 @@
#include "wx_util.h"
#include "wx_variant.h"
#include "lib/config.h"
+#include "lib/content_store.h"
#include "lib/cross.h"
#include "lib/job.h"
#include "lib/job_manager.h"
@@ -842,3 +843,25 @@ layout_for_short_screen(wxWindow* reference)
return sn >= 0 && wxDisplay(sn).GetClientArea().height <= 800;
}
+
+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 = ContentStore::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 a101a8498..6c3f12ef2 100644
--- a/src/wx/wx_util.h
+++ b/src/wx/wx_util.h
@@ -126,6 +126,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