[android] schedule work on the gl thread using GLSurfaceView#queueEvent

This commit is contained in:
Ivo van Dongen
2017-09-11 11:04:53 +03:00
committed by Ivo van Dongen
parent 347d7c19c0
commit 15a47d116a
9 changed files with 124 additions and 49 deletions

View File

@@ -58,10 +58,11 @@ AndroidRendererFrontend::AndroidRendererFrontend(float pixelRatio,
FileSource& fileSource,
Scheduler& scheduler,
std::string programCacheDir,
InvalidateCallback invalidate)
RequestRenderCallback requestRender,
RequestProcessingCallback requestProcessing)
: backend(std::make_unique<AndroidRendererBackend>())
, glThread(std::make_unique<AndroidGLThread>(
invalidate,
std::move(requestProcessing),
*backend,
pixelRatio,
fileSource,
@@ -69,8 +70,8 @@ AndroidRendererFrontend::AndroidRendererFrontend(float pixelRatio,
GLContextMode::Unique,
programCacheDir
))
, asyncInvalidate([=]() {
invalidate();
, asyncInvalidate([requestRender=std::move(requestRender)]() {
requestRender();
})
, mapRunLoop(util::RunLoop::Get()) {
}
@@ -112,9 +113,6 @@ void AndroidRendererFrontend::render() {
params = updateParameters;
}
// Process the gl thread mailbox
glThread->process();
// Activate the backend
BackendScope backendGuard { *backend };
@@ -130,6 +128,11 @@ void AndroidRendererFrontend::render() {
glThread->renderer->render(*params);
}
void AndroidRendererFrontend::process() {
// Process the gl thread mailbox
glThread->process();
}
void AndroidRendererFrontend::onLowMemory() {
assert (glThread);
glThread->actor().invoke(&Renderer::onLowMemory);