diff options
Diffstat (limited to 'cv')
-rw-r--r-- | cv/camera-dialog.cpp | 13 | ||||
-rw-r--r-- | cv/camera-dialog.hpp | 8 |
2 files changed, 3 insertions, 18 deletions
diff --git a/cv/camera-dialog.cpp b/cv/camera-dialog.cpp index 1be54ece..c3e8f6fe 100644 --- a/cv/camera-dialog.cpp +++ b/cv/camera-dialog.cpp @@ -20,27 +20,19 @@ void camera_dialog::maybe_grab_frame(cv::VideoCapture& cap) } } -#ifdef _WIN32 -void camera_dialog::init_com_threading() -{ - HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); - if (FAILED(hr)) - qDebug() << "failed CoInitializeEx" << hr << "code" << GetLastError(); -} -#endif - camera_dialog::~camera_dialog() {} void camera_dialog::open_camera_settings(cv::VideoCapture* cap, const QString& camera_name, QMutex* camera_mtx) { #ifdef _WIN32 + init_com_threading(com_apartment); + if (cap) { QMutexLocker l(camera_mtx); if (cap->isOpened()) { - init_com_threading(); maybe_grab_frame(*cap); cap->set(cv::CAP_PROP_SETTINGS, 1); return; @@ -54,7 +46,6 @@ void camera_dialog::open_camera_settings(cv::VideoCapture* cap, const QString& c if (!t.isSingleShot()) QObject::connect(&t, &QTimer::timeout, [&]() -> void { delete_capture(); }); - init_com_threading(); fake_capture = cv::VideoCapture(camera_name_to_index(camera_name)); maybe_grab_frame(fake_capture); fake_capture.set(cv::CAP_PROP_SETTINGS, 1); diff --git a/cv/camera-dialog.hpp b/cv/camera-dialog.hpp index 15ae2bc9..3fd853c3 100644 --- a/cv/camera-dialog.hpp +++ b/cv/camera-dialog.hpp @@ -10,6 +10,7 @@ #include "opentrack-compat/camera-names.hpp" #include "opentrack-compat/sleep.hpp" +#include "opentrack-compat/win32-com.hpp" #ifdef __linux # include <QProcess> @@ -17,9 +18,6 @@ #ifdef _WIN32 # include <QTimer> -# include <objbase.h> -# include <winerror.h> -# include <windows.h> #endif #include <opencv2/videoio.hpp> @@ -28,10 +26,6 @@ class camera_dialog { static void maybe_grab_frame(cv::VideoCapture& cap); -#ifdef _WIN32 - static void init_com_threading(); -#endif - public: virtual ~camera_dialog(); void open_camera_settings(cv::VideoCapture*, const QString&, QMutex*); |