[core] Create BackendScopes in Renderer, assert in Impl
This avoids a long series of reset() calls in the Impl.
This commit is contained in:
@@ -15,7 +15,10 @@ Renderer::Renderer(RendererBackend& backend,
|
||||
contextMode_, std::move(programCacheDir_))) {
|
||||
}
|
||||
|
||||
Renderer::~Renderer() = default;
|
||||
Renderer::~Renderer() {
|
||||
BackendScope guard { impl->backend };
|
||||
impl.reset();
|
||||
}
|
||||
|
||||
void Renderer::setObserver(RendererObserver* observer) {
|
||||
impl->setObserver(observer);
|
||||
@@ -72,6 +75,7 @@ void Renderer::dumpDebugLogs() {
|
||||
}
|
||||
|
||||
void Renderer::onLowMemory() {
|
||||
BackendScope guard { impl->backend };
|
||||
impl->onLowMemory();
|
||||
}
|
||||
|
||||
|
||||
@@ -64,13 +64,7 @@ Renderer::Impl::Impl(RendererBackend& backend_,
|
||||
}
|
||||
|
||||
Renderer::Impl::~Impl() {
|
||||
BackendScope guard { backend };
|
||||
glyphManager.reset();
|
||||
imageManager.reset();
|
||||
lineAtlas.reset();
|
||||
renderSources.reset();
|
||||
renderLayers.reset();
|
||||
staticData.reset();
|
||||
assert(BackendScope::exists());
|
||||
};
|
||||
|
||||
void Renderer::Impl::setObserver(RendererObserver* observer_) {
|
||||
@@ -670,7 +664,7 @@ std::vector<Feature> Renderer::Impl::querySourceFeatures(const std::string& sour
|
||||
}
|
||||
|
||||
void Renderer::Impl::onLowMemory() {
|
||||
BackendScope guard { backend };
|
||||
assert(BackendScope::exists());
|
||||
backend.getContext().performCleanup();
|
||||
for (const auto& entry : renderSources) {
|
||||
entry.second->onLowMemory();
|
||||
|
||||
Reference in New Issue
Block a user