[core] Create BackendScopes in Renderer, assert in Impl

This avoids a long series of reset() calls in the Impl.
This commit is contained in:
John Firebaugh
2017-08-12 13:13:45 -07:00
parent ad70cd30ef
commit 079ddfc8e4
2 changed files with 7 additions and 9 deletions

View File

@@ -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();
}

View File

@@ -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();