Ensure no GL commands are executed after pause
This commit is contained in:
@@ -360,7 +360,7 @@ void NativeMapView::createSurface(ANativeWindow *window_) {
|
||||
void NativeMapView::destroySurface() {
|
||||
mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::destroySurface");
|
||||
|
||||
pause(true);
|
||||
pause();
|
||||
|
||||
if (surface != EGL_NO_SURFACE) {
|
||||
if (!eglDestroySurface(display, surface)) {
|
||||
@@ -674,12 +674,11 @@ void loadExtensions() {
|
||||
}
|
||||
}
|
||||
|
||||
void NativeMapView::pause(bool waitForPause) {
|
||||
mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::pause %s",
|
||||
(waitForPause) ? "true" : "false");
|
||||
void NativeMapView::pause() {
|
||||
mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::pause");
|
||||
|
||||
if ((display != EGL_NO_DISPLAY) && (context != EGL_NO_CONTEXT)) {
|
||||
map.pause(waitForPause);
|
||||
map.pause();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
void destroySurface();
|
||||
|
||||
void resume();
|
||||
void pause(bool waitForPause = false);
|
||||
void pause();
|
||||
|
||||
void enableFps(bool enable);
|
||||
void updateFps();
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
~Map();
|
||||
|
||||
// Pauses the render thread. The render thread will stop running but will not be terminated and will not lose state until resumed.
|
||||
void pause(bool waitForPause = false);
|
||||
void pause();
|
||||
|
||||
// Resumes a paused render thread
|
||||
void resume();
|
||||
|
||||
@@ -20,15 +20,12 @@ Map::~Map() {
|
||||
resume();
|
||||
}
|
||||
|
||||
void Map::pause(bool waitForPause) {
|
||||
void Map::pause() {
|
||||
assert(data->mode == MapMode::Continuous);
|
||||
|
||||
std::unique_lock<std::mutex> lockPause(data->mutexPause);
|
||||
context->invoke(&MapContext::pause);
|
||||
|
||||
if (waitForPause) {
|
||||
data->condPaused.wait(lockPause);
|
||||
}
|
||||
data->condPaused.wait(lockPause);
|
||||
}
|
||||
|
||||
void Map::resume() {
|
||||
|
||||
@@ -77,6 +77,8 @@ MapContext::~MapContext() {
|
||||
}
|
||||
|
||||
void MapContext::pause() {
|
||||
MBGL_CHECK_ERROR(glFinish());
|
||||
|
||||
view.deactivate();
|
||||
|
||||
std::unique_lock<std::mutex> lockPause(data.mutexPause);
|
||||
|
||||
Reference in New Issue
Block a user