summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Guerra Soto <fabian.guerra@mapbox.com>2018-02-27 12:04:20 -0500
committerGitHub <noreply@github.com>2018-02-27 12:04:20 -0500
commit6d2cbb0a403b9faada81a756afa111e35618500b (patch)
tree04cadc3f6126768725158719155872dc8a95987e
parentaacd55c64b0bfdba457af5444a6965386aad6045 (diff)
downloadqtlocation-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.mm19
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