diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-09-12 00:11:23 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-09-12 00:11:23 +0100 |
| commit | ec5d4f7f0525a39dab9d26d360c2c931cdc3d0f6 (patch) | |
| tree | cebf73fd8db06abfb95e7c11c997ee9eaad8ccaf /src | |
| parent | 52eedc719d0d59d685af321ea268458e87a58da3 (diff) | |
Add context menu option to re-examine content (#339).
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/audio_decoder.cc | 7 | ||||
| -rw-r--r-- | src/wx/content_menu.cc | 17 | ||||
| -rw-r--r-- | src/wx/content_menu.h | 2 |
3 files changed, 26 insertions, 0 deletions
diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc index bd9dff8c9..756192286 100644 --- a/src/lib/audio_decoder.cc +++ b/src/lib/audio_decoder.cc @@ -173,6 +173,13 @@ AudioDecoder::audio (shared_ptr<const AudioBuffers> data, ContentTime time) void AudioDecoder::add (shared_ptr<const AudioBuffers> data) { + if (!_audio_position) { + /* This should only happen when there is a seek followed by a flush, but + we need to cope with it. + */ + return; + } + /* Resize _decoded_audio to fit the new data */ int new_size = 0; if (_decoded_audio.audio->frames() == 0) { diff --git a/src/wx/content_menu.cc b/src/wx/content_menu.cc index 741fc8283..3e3c462b2 100644 --- a/src/wx/content_menu.cc +++ b/src/wx/content_menu.cc @@ -41,6 +41,7 @@ enum { ID_repeat = 1, ID_join, ID_find_missing, + ID_re_examine, ID_kdm, ID_remove }; @@ -52,6 +53,7 @@ ContentMenu::ContentMenu (wxWindow* p) _repeat = _menu->Append (ID_repeat, _("Repeat...")); _join = _menu->Append (ID_join, _("Join")); _find_missing = _menu->Append (ID_find_missing, _("Find missing...")); + _re_examine = _menu->Append (ID_re_examine, _("Re-examine...")); _kdm = _menu->Append (ID_kdm, _("Add KDM...")); _menu->AppendSeparator (); _remove = _menu->Append (ID_remove, _("Remove")); @@ -59,6 +61,7 @@ ContentMenu::ContentMenu (wxWindow* p) _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::repeat, this), ID_repeat); _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::join, this), ID_join); _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::find_missing, this), ID_find_missing); + _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::re_examine, this), ID_re_examine); _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::kdm, this), ID_kdm); _parent->Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&ContentMenu::remove, this), ID_remove); } @@ -85,6 +88,7 @@ ContentMenu::popup (weak_ptr<Film> f, ContentList c, wxPoint p) _join->Enable (n > 1); _find_missing->Enable (_content.size() == 1 && !_content.front()->paths_valid ()); + _re_examine->Enable (!_content.empty ()); if (_content.size() == 1) { shared_ptr<DCPContent> dcp = dynamic_pointer_cast<DCPContent> (_content.front ()); @@ -219,6 +223,19 @@ ContentMenu::find_missing () } void +ContentMenu::re_examine () +{ + shared_ptr<Film> film = _film.lock (); + if (!film) { + return; + } + + for (ContentList::iterator i = _content.begin(); i != _content.end(); ++i) { + film->examine_content (*i); + } +} + +void ContentMenu::maybe_found_missing (weak_ptr<Job> j, weak_ptr<Content> oc, weak_ptr<Content> nc) { shared_ptr<Job> job = j.lock (); diff --git a/src/wx/content_menu.h b/src/wx/content_menu.h index fccd5f38a..77cf29a30 100644 --- a/src/wx/content_menu.h +++ b/src/wx/content_menu.h @@ -39,6 +39,7 @@ private: void repeat (); void join (); void find_missing (); + void re_examine (); void kdm (); void remove (); void maybe_found_missing (boost::weak_ptr<Job>, boost::weak_ptr<Content>, boost::weak_ptr<Content>); @@ -51,6 +52,7 @@ private: wxMenuItem* _repeat; wxMenuItem* _join; wxMenuItem* _find_missing; + wxMenuItem* _re_examine; wxMenuItem* _kdm; wxMenuItem* _remove; }; |
