diff --git a/src/activities/reader/EpubReaderActivity.cpp b/src/activities/reader/EpubReaderActivity.cpp index f867dc80..b74d147c 100644 --- a/src/activities/reader/EpubReaderActivity.cpp +++ b/src/activities/reader/EpubReaderActivity.cpp @@ -477,10 +477,11 @@ void EpubReaderActivity::onReaderMenuConfirm(EpubReaderMenuActivity::MenuAction } BookmarkStore::addBookmark(epub->getCachePath(), currentSpineIndex, page, snippet); - xSemaphoreTake(renderingMutex, portMAX_DELAY); - GUI.drawPopup(renderer, tr(STR_BOOKMARK_ADDED)); - renderer.displayBuffer(HalDisplay::FAST_REFRESH); - xSemaphoreGive(renderingMutex); + { + RenderLock lock(*this); + GUI.drawPopup(renderer, tr(STR_BOOKMARK_ADDED)); + renderer.displayBuffer(HalDisplay::FAST_REFRESH); + } vTaskDelay(750 / portTICK_PERIOD_MS); // Exit the menu and return to reading — the bookmark indicator will show on re-render, // and next menu open will reflect the updated state. @@ -492,10 +493,11 @@ void EpubReaderActivity::onReaderMenuConfirm(EpubReaderMenuActivity::MenuAction case EpubReaderMenuActivity::MenuAction::REMOVE_BOOKMARK: { const int page = section ? section->currentPage : 0; BookmarkStore::removeBookmark(epub->getCachePath(), currentSpineIndex, page); - xSemaphoreTake(renderingMutex, portMAX_DELAY); - GUI.drawPopup(renderer, tr(STR_BOOKMARK_REMOVED)); - renderer.displayBuffer(HalDisplay::FAST_REFRESH); - xSemaphoreGive(renderingMutex); + { + RenderLock lock(*this); + GUI.drawPopup(renderer, tr(STR_BOOKMARK_REMOVED)); + renderer.displayBuffer(HalDisplay::FAST_REFRESH); + } vTaskDelay(750 / portTICK_PERIOD_MS); exitActivity(); pagesUntilFullRefresh = 1; @@ -564,15 +566,17 @@ void EpubReaderActivity::onReaderMenuConfirm(EpubReaderMenuActivity::MenuAction case EpubReaderMenuActivity::MenuAction::DELETE_DICT_CACHE: { if (Dictionary::cacheExists()) { Dictionary::deleteCache(); - xSemaphoreTake(renderingMutex, portMAX_DELAY); - GUI.drawPopup(renderer, tr(STR_DICT_CACHE_DELETED)); - renderer.displayBuffer(HalDisplay::FAST_REFRESH); - xSemaphoreGive(renderingMutex); + { + RenderLock lock(*this); + GUI.drawPopup(renderer, tr(STR_DICT_CACHE_DELETED)); + renderer.displayBuffer(HalDisplay::FAST_REFRESH); + } } else { - xSemaphoreTake(renderingMutex, portMAX_DELAY); - GUI.drawPopup(renderer, tr(STR_NO_CACHE_TO_DELETE)); - renderer.displayBuffer(HalDisplay::FAST_REFRESH); - xSemaphoreGive(renderingMutex); + { + RenderLock lock(*this); + GUI.drawPopup(renderer, tr(STR_NO_CACHE_TO_DELETE)); + renderer.displayBuffer(HalDisplay::FAST_REFRESH); + } } vTaskDelay(1500 / portTICK_PERIOD_MS); break;