X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fcontrols.cc;h=71af4e8cf28f53f7e1a09561616918a04aaf6d43;hb=b33437685e43427459e7ea752f3cd3d621878573;hp=473ad8cb343e40ab1413f570dfdf3df8172b0185;hpb=d5c8fb9b826aaac2acab58f8a7b2eec4fcce99a6;p=dcpomatic.git diff --git a/src/wx/controls.cc b/src/wx/controls.cc index 473ad8cb3..71af4e8cf 100644 --- a/src/wx/controls.cc +++ b/src/wx/controls.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018 Carl Hetherington + Copyright (C) 2018-2019 Carl Hetherington This file is part of DCP-o-matic. @@ -52,13 +52,13 @@ using boost::optional; using boost::shared_ptr; using boost::weak_ptr; using boost::dynamic_pointer_cast; +using namespace dcpomatic; Controls::Controls (wxWindow* parent, shared_ptr viewer, bool editor_controls) : wxPanel (parent) , _slider (new wxSlider (this, wxID_ANY, 0, 0, 4096)) , _viewer (viewer) , _slider_being_moved (false) - , _was_running_before_slider (false) , _outline_content (0) , _eye (0) , _jump_to_selected (0) @@ -67,6 +67,7 @@ Controls::Controls (wxWindow* parent, shared_ptr viewer, bool editor , _forward_button (new Button (this, wxT(">"))) , _frame_number (new StaticText (this, wxT(""))) , _timecode (new StaticText (this, wxT(""))) + , _timer (this) { _v_sizer = new wxBoxSizer (wxVERTICAL); SetSizer (_v_sizer); @@ -93,8 +94,8 @@ Controls::Controls (wxWindow* parent, shared_ptr viewer, bool editor time_sizer->Add (_timecode, 0, wxEXPAND); h_sizer->Add (_rewind_button, 0, wxALL, 2); - h_sizer->Add (_back_button, 0, wxALL, 2); h_sizer->Add (time_sizer, 0, wxEXPAND); + h_sizer->Add (_back_button, 0, wxALL, 2); h_sizer->Add (_forward_button, 0, wxALL, 2); _button_sizer = new wxBoxSizer (wxHORIZONTAL); @@ -137,10 +138,12 @@ Controls::Controls (wxWindow* parent, shared_ptr viewer, bool editor _jump_to_selected->SetValue (Config::instance()->jump_to_selected ()); } - _viewer->PositionChanged.connect (boost::bind(&Controls::position_changed, this)); _viewer->Started.connect (boost::bind(&Controls::started, this)); _viewer->Stopped.connect (boost::bind(&Controls::stopped, this)); + Bind (wxEVT_TIMER, boost::bind(&Controls::update_position, this)); + _timer.Start (80, wxTIMER_CONTINUOUS); + set_film (_viewer->film()); setup_sensitivity (); @@ -172,7 +175,7 @@ Controls::stopped () } void -Controls::position_changed () +Controls::update_position () { if (!_slider_being_moved) { update_position_label (); @@ -202,7 +205,7 @@ Controls::slider_moved (bool page) if (!page && !_slider_being_moved) { /* This is the first event of a drag; stop playback for the duration of the drag */ - _was_running_before_slider = _viewer->stop (); + _viewer->suspend (); _slider_being_moved = true; } @@ -229,10 +232,8 @@ Controls::slider_moved (bool page) void Controls::slider_released () { - if (_was_running_before_slider) { - /* Restart after a drag */ - _viewer->start (); - } + /* Restart after a drag */ + _viewer->resume (); _slider_being_moved = false; }