highgui: fix trackbar value pointer handling
authorAlexander Alekhin <alexander.alekhin@intel.com>
Fri, 28 May 2021 01:58:58 +0000 (01:58 +0000)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Fri, 28 May 2021 01:58:58 +0000 (01:58 +0000)
modules/highgui/src/window_QT.cpp
modules/highgui/src/window_winrt_bridge.cpp

index d77975f9babd715d3385fa6372a68373bf523a3f..68289eb876206b62008b83efd0179d693627f0ea 100644 (file)
@@ -1219,9 +1219,6 @@ void GuiReceiver::addSlider2(QString bar_name, QString window_name, void* value,
     if (t) //trackbar exists
         return;
 
-    if (!value)
-        CV_Error(CV_StsNullPtr, "NULL value pointer" );
-
     if (count <= 0) //count is the max value of the slider, so must be bigger than 0
         CV_Error(CV_StsNullPtr, "Max value of the slider must be bigger than 0" );
 
@@ -1342,7 +1339,8 @@ void CvTrackbar::create(CvWindow* arg, QString name, int* value, int _count)
     slider->setMinimum(0);
     slider->setMaximum(_count);
     slider->setPageStep(5);
-    slider->setValue(*value);
+    if (dataSlider)
+        slider->setValue(*dataSlider);
     slider->setTickPosition(QSlider::TicksBelow);
 
 
@@ -1409,7 +1407,8 @@ void CvTrackbar::update(int myvalue)
 {
     setLabel(myvalue);
 
-    *dataSlider = myvalue;
+    if (dataSlider)
+        *dataSlider = myvalue;
     if (callback)
     {
         callback(myvalue);
index 13edbe5b83d283524992e2195bc9e7e2eb54b144..6057f2d5b4ba650d557184b58d43f98b77dfcb06 100644 (file)
@@ -271,7 +271,7 @@ void CvWindow::createSlider(cv::String name, int* val, int count, CvTrackbarCall
         // Image control is loaded. See callback implementation in CvWindow ctor.
         slider->Width = sliderDefaultWidth;
     }
-    slider->Value = *val;
+    slider->Value = val ? *val : 0;
     slider->Maximum = count;
     slider->Visibility = Windows::UI::Xaml::Visibility::Visible;
     slider->Margin = Windows::UI::Xaml::ThicknessHelper::FromLengths(10, 10, 10, 0);