fix potential double lock of jpeg mutex

This commit is contained in:
Isaac Connor 2022-02-18 17:11:02 -05:00
parent 1a54a96c04
commit fc541ac57d
1 changed files with 4 additions and 2 deletions

View File

@ -1090,14 +1090,16 @@ bool Image::WriteJpeg(const std::string &filename,
const int &quality_override, const int &quality_override,
SystemTimePoint timestamp, SystemTimePoint timestamp,
bool on_blocking_abort) const { bool on_blocking_abort) const {
// jpeg libs are not thread safe
std::unique_lock<std::mutex> lck(jpeg_mutex);
if (config.colour_jpeg_files && (colours == ZM_COLOUR_GRAY8)) { if (config.colour_jpeg_files && (colours == ZM_COLOUR_GRAY8)) {
Image temp_image(*this); Image temp_image(*this);
temp_image.Colourise(ZM_COLOUR_RGB24, ZM_SUBPIX_ORDER_RGB); temp_image.Colourise(ZM_COLOUR_RGB24, ZM_SUBPIX_ORDER_RGB);
return temp_image.WriteJpeg(filename, quality_override, timestamp, on_blocking_abort); return temp_image.WriteJpeg(filename, quality_override, timestamp, on_blocking_abort);
} }
// jpeg libs are not thread safe
std::unique_lock<std::mutex> lck(jpeg_mutex);
int quality = quality_override ? quality_override : config.jpeg_file_quality; int quality = quality_override ? quality_override : config.jpeg_file_quality;
jpeg_compress_struct *cinfo = writejpg_ccinfo[quality]; jpeg_compress_struct *cinfo = writejpg_ccinfo[quality];