diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc index b689349e5cbb3c4f2aef696e9fc789155a1a7c75..864daf03b58f2c1eb2982e09f58c00580e54ae3b 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 70804554d68da8cb45e9a96b17e3c177103d3bea..677d945cf834a8dc2f80f1f4133d0c4566c9f3e6 100644 --- a/src/UI/DocumentViews/MpvContainer.hh +++ b/src/UI/DocumentViews/MpvContainer.hh @@ -32,6 +32,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 }; @@ -39,6 +40,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