Title: [225946] trunk/Source/WebCore
Revision
225946
Author
simon.fra...@apple.com
Date
2017-12-14 17:01:47 -0800 (Thu, 14 Dec 2017)

Log Message

Fix Windows build after r225915.

Windows doens't have dispatch_once with blocks. Switch to use lambda functions instead.

* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::sRGBColorSpaceRef):
(WebCore::linearRGBColorSpaceRef):
(WebCore::extendedSRGBColorSpaceRef):
(WebCore::displayP3ColorSpaceRef):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (225945 => 225946)


--- trunk/Source/WebCore/ChangeLog	2017-12-15 01:00:04 UTC (rev 225945)
+++ trunk/Source/WebCore/ChangeLog	2017-12-15 01:01:47 UTC (rev 225946)
@@ -1,3 +1,15 @@
+2017-12-14  Simon Fraser  <simon.fra...@apple.com>
+
+        Fix Windows build after r225915.
+
+        Windows doens't have dispatch_once with blocks. Switch to use lambda functions instead.
+
+        * platform/graphics/cg/GraphicsContextCG.cpp:
+        (WebCore::sRGBColorSpaceRef):
+        (WebCore::linearRGBColorSpaceRef):
+        (WebCore::extendedSRGBColorSpaceRef):
+        (WebCore::displayP3ColorSpaceRef):
+
 2017-12-14  Devin Rousso  <web...@devinrousso.com>
 
         Web Inspector: replace HTMLCanvasElement with CanvasRenderingContext for instrumentation logic

Modified: trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp (225945 => 225946)


--- trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2017-12-15 01:00:04 UTC (rev 225945)
+++ trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2017-12-15 01:01:47 UTC (rev 225946)
@@ -74,19 +74,22 @@
 
 CGColorSpaceRef sRGBColorSpaceRef()
 {
-    static CGColorSpaceRef sRGBColorSpace;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
-        sRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
+    auto createColorSpace = []() {
 #if PLATFORM(WIN)
         // Out-of-date CG installations will not honor kCGColorSpaceSRGB. This logic avoids
         // causing a crash under those conditions. Since the default color space in Windows
         // is sRGB, this all works out nicely.
         // FIXME: Is this still needed? rdar://problem/15213515 was fixed.
-        if (!sRGBColorSpace)
-            sRGBColorSpace = CGColorSpaceCreateDeviceRGB();
+        CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
+        if (!colorSpace)
+            colorSpace = CGColorSpaceCreateDeviceRGB();
+        return colorSpace;
+#else
+        return CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
 #endif // PLATFORM(WIN)
-    });
+    };
+
+    static CGColorSpaceRef sRGBColorSpace = createColorSpace();
     return sRGBColorSpace;
 }
 
@@ -94,17 +97,16 @@
 // See GraphicsContextCocoa for the pre-10.12 implementation.
 CGColorSpaceRef linearRGBColorSpaceRef()
 {
-    static CGColorSpaceRef linearRGBColorSpace;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
+    auto createColorSpace = []() {
 #if PLATFORM(WIN)
         // FIXME: Windows should be able to use linear sRGB, this is tracked by http://webkit.org/b/80000.
-        linearRGBColorSpace = sRGBColorSpaceRef();
+        return sRGBColorSpaceRef();
 #else
-        linearRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceLinearSRGB);
+        return CGColorSpaceCreateWithName(kCGColorSpaceLinearSRGB);
 #endif
-    });
-
+    };
+        
+    static CGColorSpaceRef linearRGBColorSpace = createColorSpace();
     return linearRGBColorSpace;
 }
 #endif
@@ -111,30 +113,32 @@
 
 CGColorSpaceRef extendedSRGBColorSpaceRef()
 {
-    static CGColorSpaceRef extendedSRGBColorSpace;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
+    auto createColorSpace = []() {
 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200)
-        extendedSRGBColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceExtendedSRGB);
+        CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceExtendedSRGB);
 #endif
         // If there is no support for extended sRGB, fall back to sRGB.
-        if (!extendedSRGBColorSpace)
-            extendedSRGBColorSpace = sRGBColorSpaceRef();
-    });
+        if (!colorSpace)
+            colorSpace = sRGBColorSpaceRef();
+        
+        return colorSpace;
+    };
+        
+    static CGColorSpaceRef extendedSRGBColorSpace = createColorSpace();
     return extendedSRGBColorSpace;
 }
 
 CGColorSpaceRef displayP3ColorSpaceRef()
 {
-    static CGColorSpaceRef displayP3ColorSpace;
-    static dispatch_once_t onceToken;
-    dispatch_once(&onceToken, ^{
+    auto createColorSpace = []() {
 #if PLATFORM(IOS) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED > 101100)
-        displayP3ColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceDisplayP3);
+        return CGColorSpaceCreateWithName(kCGColorSpaceDisplayP3);
 #else
-        displayP3ColorSpace = sRGBColorSpaceRef();
+        return sRGBColorSpaceRef();
 #endif
-    });
+    };
+
+    static CGColorSpaceRef displayP3ColorSpace = createColorSpace();
     return displayP3ColorSpace;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to