diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2018-02-27 12:04:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-27 12:04:20 -0500 |
commit | 6d2cbb0a403b9faada81a756afa111e35618500b (patch) | |
tree | 04cadc3f6126768725158719155872dc8a95987e | |
parent | aacd55c64b0bfdba457af5444a6965386aad6045 (diff) | |
download | qtlocation-mapboxgl-6d2cbb0a403b9faada81a756afa111e35618500b.tar.gz |
[ios, macos] Fix a memory leak when creating an EAGLContext in MGLMapSnapshotter. (#11193)
-rw-r--r-- | platform/darwin/src/headless_backend_eagl.mm | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/platform/darwin/src/headless_backend_eagl.mm b/platform/darwin/src/headless_backend_eagl.mm index 1daaeaf54c..f291c0805a 100644 --- a/platform/darwin/src/headless_backend_eagl.mm +++ b/platform/darwin/src/headless_backend_eagl.mm @@ -7,9 +7,13 @@ namespace mbgl { struct EAGLImpl : public HeadlessBackend::Impl { - EAGLImpl(EAGLContext* glContext_) : glContext(glContext_) { - [reinterpret_cast<EAGLContext*>(glContext) retain]; - reinterpret_cast<EAGLContext*>(glContext).multiThreaded = YES; + EAGLImpl() { + glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; + + if (glContext == nil) { + throw std::runtime_error("Error creating GL context object"); + } + glContext.multiThreaded = YES; } ~EAGLImpl() { @@ -45,12 +49,9 @@ bool HeadlessBackend::hasDisplay() { } void HeadlessBackend::createContext() { - EAGLContext* glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; - if (glContext == nil) { - throw std::runtime_error("Error creating GL context object"); - } - - impl.reset(new EAGLImpl(glContext)); + impl.reset(); + impl = std::make_unique<EAGLImpl>(); + } } // namespace mbgl |