Files
MuditaOS/module-services/service-gui/RenderCache.cpp
Piotr Tański 90c4a0a39f [EGD-6529] Fixed issues with gray colors
The issue occurred on multiple refreshes in the short period of time.
Sometimes, fast refresh was performed instead of the cached deep one.
2021-04-16 09:51:46 +02:00

41 lines
971 B
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "RenderCache.hpp"
namespace service::gui
{
std::optional<RenderReference> RenderCache::getCachedRender() const
{
return cachedRender;
}
bool RenderCache::isRenderCached() const noexcept
{
return cachedRender.has_value();
}
void RenderCache::cache(RenderReference render)
{
if (isRenderCached()) {
exchange(render);
}
else {
cachedRender = render;
}
}
void RenderCache::exchange(RenderReference render)
{
if (cachedRender->refreshMode == ::gui::RefreshModes::GUI_REFRESH_DEEP) {
render.refreshMode = cachedRender->refreshMode;
}
cachedRender = render;
}
void RenderCache::invalidate()
{
cachedRender = std::nullopt;
}
} // namespace service::gui