diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc index 425346ed36a1ef646bb5644b76034ccd307f773b..9b7b9ed7ab9f01025d67272e636b3a24f0666a33 100644 --- a/src/UI/DocumentViews/MpvContainer.cc +++ b/src/UI/DocumentViews/MpvContainer.cc @@ -19,6 +19,14 @@ MpvContainer::MpvContainer(QWidget *parent) setAttribute(Qt::WA_DontCreateNativeAncestors); setAttribute(Qt::WA_NativeWindow); +} + +void +MpvContainer::intializeMpv() +{ + if (isMpvAlreadyInitialized) + throw std::logic_error("MPV is already initialized!"); + isMpvAlreadyInitialized = true; quint64 wid = winId(); mpv_set_option(mpv, "wid", MPV_FORMAT_INT64, &wid); diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh index 760d5e4a32c75fc5ef6ab4d04abe4033bd4cb184..f44d2359b595720ba8c542f71d592c861146ef7c 100644 --- a/src/UI/DocumentViews/MpvContainer.hh +++ b/src/UI/DocumentViews/MpvContainer.hh @@ -29,6 +29,7 @@ class MpvContainer final : public QWidget { private: bool isPlaybackPaused{ true }; + bool isMpvAlreadyInitialized{ false }; mpv_handle *volatile mpv{ nullptr }; qint64 sid{ -1 }; std::function<void(double)> mpvTimeCallback{ nullptr }; @@ -36,6 +37,7 @@ private: public: explicit MpvContainer(QWidget *parent); + void intializeMpv(); ~MpvContainer() noexcept override; void loadFile(const QString &) noexcept; diff --git a/src/UI/DocumentViews/VideoView.cc b/src/UI/DocumentViews/VideoView.cc index 30eee0e0863deaac58c2187232336f20395939a0..2e45fcfdb9c6d354cef88da731a80c19d971122c 100644 --- a/src/UI/DocumentViews/VideoView.cc +++ b/src/UI/DocumentViews/VideoView.cc @@ -14,6 +14,8 @@ VideoView::VideoView(QWidget *parent) noexcept centralLayout->addWidget(new MpvControls(mpv, this)); setLayout(centralLayout); + + mpv->intializeMpv(); } void