_viewer.set_coalesce_player_changes(true);
for (auto path: dialog.paths()) {
dcp->add_kdm(dcp::EncryptedKDM(dcp::file_to_string(path)));
+ _kdms.push_back(path);
}
examine_content();
}
_viewer.set_pad_black(_mode != Config::PLAYER_MODE_WINDOW);
if (_mode == Config::PLAYER_MODE_DUAL) {
+ std::cout << "Set up dual screen mode: " << wxDisplay::GetCount() << " displays.\n";
_dual_screen = new wxFrame (this, wxID_ANY, wxT(""));
_dual_screen->SetBackgroundColour (wxColour(0, 0, 0));
_dual_screen->ShowFullScreen (true);
_viewer.panel()->Reparent(_dual_screen);
_viewer.panel()->SetFocus();
_dual_screen->Show ();
+ for (auto index = 0U; index < wxDisplay::GetCount(); ++index) {
+ auto client = wxDisplay(index).GetClientArea();
+ auto mode = wxDisplay(index).GetCurrentMode();
+ auto geometry = wxDisplay(index).GetGeometry();
+ std::cout << "Display " << index << "\n";
+ std::cout << " ClientArea (" << client.GetX() << ", " << client.GetY() << ") (" << client.GetWidth() << ", " << client.GetHeight() << ")\n";
+ std::cout << " Geometry (" << geometry.GetX() << ", " << geometry.GetY() << ") (" << geometry.GetWidth() << ", " << geometry.GetHeight() << ")\n";
+ std::cout << " Mode (" << mode.GetWidth() << ", " << mode.GetHeight() << ")\n";
+ std::cout << " Primary? " << wxDisplay(index).IsPrimary() << "\n";
+ }
if (wxDisplay::GetCount() > 1) {
- switch (Config::instance()->image_display()) {
- case 0:
- _dual_screen->Move (0, 0);
- Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
- break;
- case 1:
- _dual_screen->Move (wxDisplay(0U).GetClientArea().GetWidth(), 0);
- // (0, 0) doesn't seem to work for some strange reason
- Move (8, 8);
- break;
- }
+ wxRect geometry[2] = {
+ wxDisplay(0U).GetGeometry(),
+ wxDisplay(1U).GetGeometry()
+ };
+ auto const image_display = Config::instance()->image_display();
+ _dual_screen->Move(geometry[image_display].GetX(), geometry[image_display].GetY());
+ _viewer.panel()->SetSize(geometry[image_display].GetWidth(), geometry[image_display].GetHeight());
+ Move(geometry[1 - image_display].GetX(), geometry[1 - image_display].GetY());
}
_dual_screen->Bind(wxEVT_CHAR_HOOK, boost::bind(&DOMFrame::dual_screen_key_press, this, _1));
} else {
auto dcp = std::dynamic_pointer_cast<DCPContent>(_film->content().front());
DCPOMATIC_ASSERT (dcp);
- auto job = make_shared<VerifyDCPJob>(dcp->directories());
+ auto job = make_shared<VerifyDCPJob>(dcp->directories(), _kdms);
VerifyDCPProgressDialog progress(this, _("DCP-o-matic Player"));
bool const completed = progress.run(job);
progress.Close();
wxMenuItem* _view_dual_screen = nullptr;
wxSizer* _main_sizer = nullptr;
PlayerStressTester _stress;
+ /** KDMs that have been loaded, so that we can pass them to the verifier */
+ std::vector<boost::filesystem::path> _kdms;
};
static const wxCmdLineEntryDesc command_line_description[] = {