[macOS] Frequent leaks seen under WebCore::gpuIDForDisplayMask
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Sep 2018 18:30:02 +0000 (18:30 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Sep 2018 18:30:02 +0000 (18:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=189685
<rdar://problem/44541974>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2018-09-18
Reviewed by Per Arne Vollan.

* platform/mac/PlatformScreenMac.mm:
(WebCore::gpuIDForDisplayMask):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@236148 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/platform/mac/PlatformScreenMac.mm

index d16731e..3467a20 100644 (file)
@@ -1,3 +1,14 @@
+2018-09-18  Joseph Pecoraro  <pecoraro@apple.com>
+
+        [macOS] Frequent leaks seen under WebCore::gpuIDForDisplayMask
+        https://bugs.webkit.org/show_bug.cgi?id=189685
+        <rdar://problem/44541974>
+
+        Reviewed by Per Arne Vollan.
+
+        * platform/mac/PlatformScreenMac.mm:
+        (WebCore::gpuIDForDisplayMask):
+
 2018-09-18  Youenn Fablet  <youenn@apple.com>
 
         Implement RTCRtpReceiver getContributingSources/getSynchronizationSources
 2018-09-18  Youenn Fablet  <youenn@apple.com>
 
         Implement RTCRtpReceiver getContributingSources/getSynchronizationSources
index 8e72657..0402319 100644 (file)
@@ -209,20 +209,27 @@ IORegistryGPUID gpuIDForDisplayMask(GLuint displayMask)
     // The 0th renderer should not be the software renderer.
     GLint isAccelerated;
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPAccelerated, &isAccelerated);
     // The 0th renderer should not be the software renderer.
     GLint isAccelerated;
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPAccelerated, &isAccelerated);
-    if (!isAccelerated || error != kCGLNoError)
+    if (!isAccelerated || error != kCGLNoError) {
+        CGLDestroyRendererInfo(rendererInfo);
         return 0;
         return 0;
+    }
 
     GLint gpuIDLow = 0;
     GLint gpuIDHigh = 0;
 
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPRegistryIDLow, &gpuIDLow);
 
     GLint gpuIDLow = 0;
     GLint gpuIDHigh = 0;
 
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPRegistryIDLow, &gpuIDLow);
-    if (error != kCGLNoError)
+    if (error != kCGLNoError) {
+        CGLDestroyRendererInfo(rendererInfo);
         return 0;
         return 0;
+    }
 
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPRegistryIDHigh, &gpuIDHigh);
 
     error = CGLDescribeRenderer(rendererInfo, 0, kCGLRPRegistryIDHigh, &gpuIDHigh);
-    if (error != kCGLNoError)
+    if (error != kCGLNoError) {
+        CGLDestroyRendererInfo(rendererInfo);
         return 0;
         return 0;
+    }
 
 
+    CGLDestroyRendererInfo(rendererInfo);
     return (IORegistryGPUID) gpuIDHigh << 32 | gpuIDLow;
 }
 #endif // !__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300
     return (IORegistryGPUID) gpuIDHigh << 32 | gpuIDLow;
 }
 #endif // !__MAC_OS_X_VERSION_MIN_REQUIRED >= 101300