diff --git a/src/libOpenImageIO/imageinput.cpp b/src/libOpenImageIO/imageinput.cpp index 12566ae2f3..4d16ab6dbd 100644 --- a/src/libOpenImageIO/imageinput.cpp +++ b/src/libOpenImageIO/imageinput.cpp @@ -81,7 +81,11 @@ ImageInput::ImageInput() -ImageInput::~ImageInput() {} +ImageInput::~ImageInput() { + // Erase any leftover errors from this thread + // TODO: can we clear other threads' errors? + input_error_messages.erase(this); +} diff --git a/src/libOpenImageIO/imageoutput.cpp b/src/libOpenImageIO/imageoutput.cpp index 6e2936950b..0157da239b 100644 --- a/src/libOpenImageIO/imageoutput.cpp +++ b/src/libOpenImageIO/imageoutput.cpp @@ -84,7 +84,11 @@ ImageOutput::ImageOutput() -ImageOutput::~ImageOutput() {} +ImageOutput::~ImageOutput() { + // Erase any leftover errors from this thread + // TODO: can we clear other threads' errors? + output_error_messages.erase(this); +} diff --git a/src/libtexture/imagecache.cpp b/src/libtexture/imagecache.cpp index cafd6fea5c..32b5ddb2b3 100644 --- a/src/libtexture/imagecache.cpp +++ b/src/libtexture/imagecache.cpp @@ -1722,6 +1722,9 @@ ImageCacheImpl::~ImageCacheImpl() spin_lock lock(m_perthread_info_mutex); m_all_perthread_info.clear(); } + // Erase any leftover errors from this thread + // TODO: can we clear other threads' errors? + imcache_error_messages.erase(this); } diff --git a/src/libtexture/texturesys.cpp b/src/libtexture/texturesys.cpp index 2fc0798845..fbfaf725fc 100644 --- a/src/libtexture/texturesys.cpp +++ b/src/libtexture/texturesys.cpp @@ -351,8 +351,16 @@ TextureSystemImpl::init() } +static thread_local tsl::robin_map + txsys_error_messages; -TextureSystemImpl::~TextureSystemImpl() { printstats(); } + +TextureSystemImpl::~TextureSystemImpl() { + printstats(); + // Erase any leftover errors from this thread + // TODO: can we clear other threads' errors? + txsys_error_messages.erase(this); +} @@ -893,9 +901,6 @@ TextureSystemImpl::get_texels(TextureHandle* texture_handle_, return ok; } -static thread_local tsl::robin_map - txsys_error_messages; - bool TextureSystemImpl::has_error() const {