From d4df044ffe2234e3d14d1d86727372cd8e4953d8 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Tue, 13 Feb 2018 14:33:07 -0800 Subject: [PATCH] [ios] Release cached tiles on entering background. Retain current render tiles for fast restart. Waiting for a memory warning doesn't work because we can't make GL release calls once we're in the background. --- platform/ios/src/MGLMapView.mm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index e6712ba5e..6f2d5039b 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -1158,6 +1158,13 @@ public: - (void)sleepGL:(__unused NSNotification *)notification { MGLAssertIsMainThread(); + + // Ideally we would wait until we actually received a memory warning but the bulk of the memory + // we have to release is tied up in GL buffers that we can't touch once we're in the background. + // Compromise position: release everything but currently rendering tiles + // A possible improvement would be to store a copy of the GL buffers that we could use to rapidly + // restart, but that we could also discard in response to a memory warning. + _rendererFrontend->reduceMemoryUse(); if ( ! self.dormant) {