Fix crash while updating RGB parade and waveform

Closes #6349.
This commit is contained in:
Lawrence Lee
2021-09-02 21:52:59 -07:00
parent 38f15e1852
commit 0db17f99dd
2 changed files with 6 additions and 1 deletions

View File

@@ -1181,7 +1181,8 @@ void HistogramArea::update(
bhistRaw = histBlueRaw;
break;
case ScopeType::PARADE:
case ScopeType::WAVEFORM:
case ScopeType::WAVEFORM: {
MyWriterLock wave_lock(wave_mutex);
waveform_scale = waveformScale;
rwave = waveformRed;
gwave = waveformGreen;
@@ -1189,6 +1190,7 @@ void HistogramArea::update(
lwave = waveformLuma;
parade_buffer_r_dirty = parade_buffer_g_dirty = parade_buffer_b_dirty = wave_buffer_dirty = wave_buffer_luma_dirty = true;
break;
}
case ScopeType::VECTORSCOPE_HS:
vectorscope_scale = vectorscopeScale;
vect_hs = vectorscopeHS;
@@ -1313,6 +1315,7 @@ void HistogramArea::updateBackBuffer ()
cr->unset_dash();
MyReaderLock wave_lock(wave_mutex);
if (valid && (scopeType == ScopeType::HISTOGRAM || scopeType == ScopeType::HISTOGRAM_RAW)) {
bool rawMode = scopeType == ScopeType::HISTOGRAM_RAW;
@@ -1429,6 +1432,7 @@ void HistogramArea::updateBackBuffer ()
} else if (scopeType == ScopeType::VECTORSCOPE_HC || scopeType == ScopeType::VECTORSCOPE_HS) {
drawVectorscope(cr, w, h);
}
wave_lock.release();
// Draw the frame's border
style->render_frame(cr, 0, 0, surface->get_width(), surface->get_height());

View File

@@ -169,6 +169,7 @@ protected:
bool vect_hc_buffer_dirty, vect_hs_buffer_dirty;
int waveform_scale;
array2D<int> rwave, gwave, bwave, lwave;
MyRWMutex wave_mutex;
std::vector<unsigned char> parade_buffer_r;
std::vector<unsigned char> parade_buffer_g;
std::vector<unsigned char> parade_buffer_b;