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);  | 
