Fix debug assertion when adding a KDM.
[dcpomatic.git] / src / wx / markers_panel.cc
index a110da105f5cb36318365b4119f2408e6b1af710..463f06758f1aae7575f82f9a54eb88767012e90a 100644 (file)
@@ -23,6 +23,7 @@
 #include "markers.h"
 #include "markers_panel.h"
 #include "wx_util.h"
+#include "lib/film.h"
 #include <dcp/warnings.h>
 LIBDCP_DISABLE_WARNINGS
 #include <wx/graphics.h>
@@ -53,7 +54,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)
 {
@@ -82,7 +83,7 @@ MarkersPanel::set_film (weak_ptr<Film> weak_film)
 
 
 void
-MarkersPanel::film_changed (ChangeType type, Film::Property property)
+MarkersPanel::film_changed(ChangeType type, FilmProperty property)
 {
        if (type != ChangeType::DONE) {
                return;
@@ -93,7 +94,7 @@ MarkersPanel::film_changed (ChangeType type, Film::Property property)
                return;
        }
 
-       if (property == Film::Property::MARKERS || property == Film::Property::CONTENT || property == Film::Property::CONTENT_ORDER || property == Film::Property::VIDEO_FRAME_RATE) {
+       if (property == FilmProperty::MARKERS || property == FilmProperty::CONTENT || property == FilmProperty::CONTENT_ORDER || property == FilmProperty::VIDEO_FRAME_RATE) {
                update_from_film (film);
        }
 }
@@ -222,9 +223,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);
        }
 }
 
@@ -253,12 +252,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 +264,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 +276,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());
 }