Add wx_ptr and use it instead of ScopeGuard in a lot of places.
[dcpomatic.git] / src / wx / content_menu.cc
index cae56283bbfde0673f2dd716bbfb8b0e57248aff..5957ac06df18d0985991759bc883b083fca26f24 100644 (file)
 #include "repeat_dialog.h"
 #include "timeline_video_content_view.h"
 #include "timeline_audio_content_view.h"
+#include "wx_ptr.h"
 #include "wx_util.h"
 #include "lib/audio_content.h"
 #include "lib/config.h"
 #include "lib/content_factory.h"
+#include "lib/constants.h"
 #include "lib/copy_dcp_details_to_film.h"
 #include "lib/dcp_content.h"
 #include "lib/dcp_examiner.h"
@@ -43,7 +45,6 @@
 #include "lib/image_content.h"
 #include "lib/job_manager.h"
 #include "lib/playlist.h"
-#include "lib/scope_guard.h"
 #include "lib/video_content.h"
 #include <dcp/cpl.h>
 #include <dcp/decrypted_kdm.h>
@@ -465,8 +466,7 @@ ContentMenu::advanced ()
        DCPOMATIC_ASSERT(!_content.empty());
 
        auto content = _content.front();
-       auto dialog = new ContentAdvancedDialog(_parent, content);
-       ScopeGuard sg = [dialog]() { dialog->Destroy(); };
+       auto dialog = make_wx<ContentAdvancedDialog>(_parent, content);
 
        if (dialog->ShowModal() == wxID_CANCEL) {
                return;
@@ -483,7 +483,9 @@ ContentMenu::advanced ()
        }
 
        if (dialog->video_frame_rate()) {
-               content->set_video_frame_rate(*dialog->video_frame_rate());
+               auto film = _film.lock();
+               DCPOMATIC_ASSERT(film);
+               content->set_video_frame_rate(film, *dialog->video_frame_rate());
        } else {
                content->unset_video_frame_rate();
        }