diff options
Diffstat (limited to 'src/AsyncImageLoader.cpp')
-rw-r--r-- | src/AsyncImageLoader.cpp | 17 |
1 files changed, 2 insertions, 15 deletions
diff --git a/src/AsyncImageLoader.cpp b/src/AsyncImageLoader.cpp index 1a1e120..9e8d090 100644 --- a/src/AsyncImageLoader.cpp +++ b/src/AsyncImageLoader.cpp @@ -87,7 +87,7 @@ namespace QuickMedia { loading_image[i] = false; } - load_image_thread = std::thread([this]() mutable { + load_image_thread = AsyncTask<void>([this]() mutable { std::optional<ThumbnailLoadData> thumbnail_load_data_opt; while(true) { thumbnail_load_data_opt = image_load_queue.pop_wait(); @@ -126,17 +126,6 @@ namespace QuickMedia { AsyncImageLoader::~AsyncImageLoader() { image_load_queue.close(); - if(load_image_thread.joinable()) { - program_kill_in_thread(load_image_thread.get_id()); - load_image_thread.join(); - } - - for(size_t i = 0; i < NUM_IMAGE_LOAD_THREADS; ++i) { - if(download_image_thread[i].joinable()) { - program_kill_in_thread(download_image_thread[i].get_id()); - download_image_thread[i].join(); - } - } } void AsyncImageLoader::load_thumbnail(const std::string &url, bool local, sf::Vector2i resize_target_size, std::shared_ptr<ThumbnailData> thumbnail_data) { @@ -178,11 +167,9 @@ namespace QuickMedia { loading_image[free_index] = true; thumbnail_data->loading_state = LoadingState::LOADING; - if(download_image_thread[free_index].joinable()) - download_image_thread[free_index].join(); // TODO: Keep the thread running and use conditional variable instead to sleep until a new image should be loaded. Same in ImageViewer. - download_image_thread[free_index] = std::thread([this, free_index, thumbnail_path, url, resize_target_size, thumbnail_data]() mutable { + download_image_thread[free_index] = AsyncTask<void>([this, free_index, thumbnail_path, url, resize_target_size, thumbnail_data]() mutable { thumbnail_data->image = std::make_unique<sf::Image>(); Path thumbnail_path_resized = thumbnail_path; |