summaryrefslogtreecommitdiffhomepage
path: root/cv
diff options
context:
space:
mode:
Diffstat (limited to 'cv')
-rw-r--r--cv/camera-dialog.cpp13
-rw-r--r--cv/camera-dialog.hpp8
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*);