diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2016-10-01 16:41:20 +0200 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2016-10-01 16:41:20 +0200 |
commit | 29406db336d00a223fec9035044a5ca46ade1d3f (patch) | |
tree | 2193fab5bf301e5106d05ef86c225f419c5bd6f7 /cv | |
parent | f3d16459b19098ec4c1269a527867270c19c9e98 (diff) |
camera settings: disable for all A4 TECH cameras
We've had two reported crashes.
Issue: #468
Diffstat (limited to 'cv')
-rw-r--r-- | cv/video-property-page.cpp | 29 | ||||
-rw-r--r-- | cv/video-property-page.hpp | 4 |
2 files changed, 31 insertions, 2 deletions
diff --git a/cv/video-property-page.cpp b/cv/video-property-page.cpp index 08ac00d0..e5f1a9f0 100644 --- a/cv/video-property-page.cpp +++ b/cv/video-property-page.cpp @@ -10,7 +10,7 @@ #ifdef _WIN32 #include <cstring> -#include <QString> +#include <QRegularExpression> #include <QDebug> #define CHECK(expr) if (FAILED(hr = (expr))) { qDebug() << QStringLiteral(#expr) << hr; goto done; } @@ -22,6 +22,24 @@ bool video_property_page::show_from_capture(cv::VideoCapture& cap, int) return true; } +bool video_property_page::should_show_dialog(const QString& camera_name) +{ + using re = QRegularExpression; + static const re regexen[] = + { + re("^PS3Eye Camera$"), + re("^A4 TECH "), + }; + bool avail = true; + for (const re& r : regexen) + { + avail &= !r.match(camera_name).hasMatch(); + if (!avail) + break; + } + return avail; +} + bool video_property_page::show(int id) { IBaseFilter* filter = NULL; @@ -135,6 +153,11 @@ done: # include <QProcess> # include "compat/camera-names.hpp" +bool video_property_page::should_show_dialog(const QString& camera_name) +{ + return true; +} + bool video_property_page::show(int idx) { const QList<QString> camera_names(get_camera_names()); @@ -152,4 +175,8 @@ bool video_property_page::show_from_capture(cv::VideoCapture&, int idx) #else bool video_property_page::show(int) { return false; } bool video_property_page::show_from_capture(cv::VideoCapture&, int) { return false; } +bool video_property_page::should_show_dialog(const QString& camera_name) +{ + return false; +} #endif diff --git a/cv/video-property-page.hpp b/cv/video-property-page.hpp index 7c51f111..4e53e2ab 100644 --- a/cv/video-property-page.hpp +++ b/cv/video-property-page.hpp @@ -1,5 +1,7 @@ #pragma once +#include <QString> + #ifdef _WIN32 # include <windows.h> # include <dshow.h> @@ -12,7 +14,7 @@ struct video_property_page final video_property_page() = delete; static bool show(int id); static bool show_from_capture(cv::VideoCapture& cap, int idx); - + static bool should_show_dialog(const QString& camera_name); private: #ifdef _WIN32 static HRESULT ShowFilterPropertyPages(IBaseFilter* filter); |