Cleanup: use simpler ownership for FilmViewer.
[dcpomatic.git] / src / wx / markers_panel.cc
index aa6d8d4495080124890735050bbb45134b875bd2..9942dca8993d9d61d7beafc2733b059bd68bcf78 100644 (file)
@@ -53,7 +53,7 @@ enum {
 static constexpr auto line_to_label_gap = 2;
 
 
-MarkersPanel::MarkersPanel (wxWindow* parent, weak_ptr<FilmViewer> viewer)
+MarkersPanel::MarkersPanel(wxWindow* parent, FilmViewer& viewer)
        : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxSize(-1, 16))
        , _viewer (viewer)
 {
@@ -65,7 +65,7 @@ MarkersPanel::MarkersPanel (wxWindow* parent, weak_ptr<FilmViewer> viewer)
 
        Bind (wxEVT_MENU, boost::bind(&MarkersPanel::move_marker_to_current_position, this), ID_move_marker_to_current_position);
        Bind (wxEVT_MENU, boost::bind(&MarkersPanel::remove_marker, this), ID_remove_marker);
-       Bind (wxEVT_MENU, boost::bind(&MarkersPanel::add_marker, this, _1), ID_add_base, ID_add_base + all_markers().size());
+       Bind (wxEVT_MENU, boost::bind(&MarkersPanel::add_marker, this, _1), ID_add_base, ID_add_base + all_editable_markers().size());
 }
 
 
@@ -222,9 +222,7 @@ void
 MarkersPanel::mouse_left_down ()
 {
        if (_over) {
-               auto viewer = _viewer.lock ();
-               DCPOMATIC_ASSERT (viewer);
-               viewer->seek (_markers[*_over].time, true);
+               _viewer.seek(_markers[*_over].time, true);
        }
 }
 
@@ -239,7 +237,7 @@ MarkersPanel::mouse_right_down (wxMouseEvent& ev)
        }
 
        auto add_marker = new wxMenu ();
-       for (auto const& marker: all_markers()) {
+       for (auto const& marker: all_editable_markers()) {
                add_marker->Append (static_cast<int>(ID_add_base) + static_cast<int>(marker.second), marker.first);
        }
        menu.Append (ID_add_marker, _("Add or move marker to current position"), add_marker);
@@ -253,12 +251,11 @@ void
 MarkersPanel::move_marker_to_current_position ()
 {
        auto film = _film.lock ();
-       auto viewer = _viewer.lock ();
-       if (!film || !viewer || !_menu_marker) {
+       if (!film || !_menu_marker) {
                return;
        }
 
-       film->set_marker (*_menu_marker, viewer->position());
+       film->set_marker(*_menu_marker, _viewer.position());
 }
 
 
@@ -266,12 +263,11 @@ void
 MarkersPanel::remove_marker ()
 {
        auto film = _film.lock ();
-       auto viewer = _viewer.lock ();
-       if (!film || !viewer || !_menu_marker) {
+       if (!film || !_menu_marker) {
                return;
        }
 
-       film->unset_marker (*_menu_marker);
+       film->unset_marker(*_menu_marker);
 }
 
 
@@ -279,12 +275,11 @@ void
 MarkersPanel::add_marker (wxCommandEvent& ev)
 {
        auto film = _film.lock ();
-       auto viewer = _viewer.lock ();
-       if (!film || !viewer) {
+       if (!film) {
                return;
        }
 
        auto marker = static_cast<dcp::Marker>(ev.GetId() - ID_add_base);
-       film->set_marker (marker, viewer->position());
+       film->set_marker(marker, _viewer.position());
 }