diff options
Diffstat (limited to 'src/ImageViewer.cpp')
-rw-r--r-- | src/ImageViewer.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ImageViewer.cpp b/src/ImageViewer.cpp index a8e6041..fc7b758 100644 --- a/src/ImageViewer.cpp +++ b/src/ImageViewer.cpp @@ -35,11 +35,19 @@ namespace QuickMedia { has_size_vertical_cursor = size_vertical_cursor.loadFromSystem(sf::Cursor::SizeVertical); } + ImageViewer::~ImageViewer() { + // TODO: Remove + if(image_loader_thread.joinable()) + image_loader_thread.join(); + } + void ImageViewer::load_image_async(const Path &path, std::shared_ptr<ImageData> image_data) { image_data->image_status = ImageStatus::LOADING; image_data->texture.setSmooth(true); assert(!loading_image); loading_image = true; + if(image_loader_thread.joinable()) + image_loader_thread.join(); image_loader_thread = std::thread([this, image_data, path]() mutable { auto image = std::make_unique<sf::Image>(); if(image->loadFromFile(path.data)) { @@ -50,7 +58,6 @@ namespace QuickMedia { } loading_image = false; }); - image_loader_thread.detach(); } bool ImageViewer::render_page(sf::RenderWindow &window, int page, double offset_y) { |