diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 56f0b2b8a2..b8624f14fd 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -1799,8 +1799,30 @@ static bool rgui_load_image(void *userdata, void *data, enum menu_image_type typ rgui_t *rgui = (rgui_t*)userdata; settings_t *settings = config_get_ptr(); - if (!rgui || !data || !settings) + if (!rgui || !settings) + { return false; + } + + if (!data) + { + /* This means we have a 'broken' image. There is no + * data, but we still have to decrement any thumbnail + * queues (otherwise further thumbnail processing will + * be blocked) */ + if (type == MENU_IMAGE_THUMBNAIL) + { + if (rgui->thumbnail_queue_size > 0) + rgui->thumbnail_queue_size--; + } + else if (type == MENU_IMAGE_LEFT_THUMBNAIL) + { + if (rgui->left_thumbnail_queue_size > 0) + rgui->left_thumbnail_queue_size--; + } + + return false; + } switch (type) {