WebKit Bugzilla
Attachment 341971 Details for
Bug 186198
: Move OpenGL display mask to screen data struct.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-186198-20180605093251.patch (text/plain), 43.35 KB, created by
Per Arne Vollan
on 2018-06-05 09:32:52 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Per Arne Vollan
Created:
2018-06-05 09:32:52 PDT
Size:
43.35 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 232511) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,62 @@ >+2018-06-05 Per Arne Vollan <pvollan@apple.com> >+ >+ Move OpenGL display mask to screen data struct. >+ https://bugs.webkit.org/show_bug.cgi?id=186198 >+ <rdar://problem/40724854> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Currently, the OpenGL display mask is a global in the WebContent process. This is not correct in all cases, since >+ it is possible to have two Web views in the same WebContent process, displayed on different displays. This can be >+ resolved by moving the OpenGL display mask to a new ScreenData struct, containing information specific to each >+ display. The display ID of the host window is used to find the OpenGL display mask when needed. This patch makes >+ the host window available when creating an IOSurface, in order to find the right OpenGL display mask. If no host >+ window is available, the OpenGL display mask of the main display is used. >+ >+ No new tests, since testing this requires two Web views in the same WebContent process, displayed on >+ two different monitors. >+ >+ * html/HTMLCanvasElement.cpp: >+ (WebCore::HTMLCanvasElement::createImageBuffer const): >+ * platform/PlatformScreen.h: >+ * platform/ScreenProperties.h: >+ (WebCore::ScreenProperties::encode const): >+ (WebCore::ScreenProperties::decode): >+ (WebCore::ScreenData::encode const): >+ (WebCore::ScreenData::decode): >+ * platform/graphics/GraphicsContext3D.h: >+ * platform/graphics/ImageBuffer.cpp: >+ (WebCore::ImageBuffer::create): >+ * platform/graphics/ImageBuffer.h: >+ * platform/graphics/cg/ImageBufferCG.cpp: >+ (WebCore::ImageBuffer::createCompatibleBuffer): >+ (WebCore::ImageBuffer::ImageBuffer): >+ * platform/graphics/cocoa/GraphicsContext3DCocoa.mm: >+ (WebCore::GraphicsContext3D::GraphicsContext3D): >+ (WebCore::GraphicsContext3D::allowOfflineRenderers const): >+ (WebCore::GraphicsContext3D::setOpenGLDisplayMask): Deleted. >+ (WebCore::GraphicsContext3D::getOpenGLDisplayMask): Deleted. >+ * platform/graphics/cocoa/IOSurface.h: >+ * platform/graphics/cocoa/IOSurface.mm: >+ (WebCore::IOSurface::ensurePlatformContext): >+ * platform/mac/PlatformScreenMac.mm: >+ (WebCore::screenProperties): >+ (WebCore::collectScreenProperties): >+ (WebCore::setScreenProperties): >+ (WebCore::screenData): >+ (WebCore::primaryOpenGLDisplayMask): >+ (WebCore::displayMaskForDisplay): >+ (WebCore::getScreenProperties): >+ (WebCore::screenIsMonochrome): >+ (WebCore::screenHasInvertedColors): >+ (WebCore::screenDepth): >+ (WebCore::screenDepthPerComponent): >+ (WebCore::screenRectForDisplay): >+ (WebCore::screenRect): >+ (WebCore::screenAvailableRect): >+ (WebCore::screenColorSpace): >+ (WebCore::screenSupportsExtendedColor): >+ > 2018-06-05 Antoine Quint <graouts@apple.com> > > Fix the iOS build after r232496 >Index: Source/WebCore/html/HTMLCanvasElement.cpp >=================================================================== >--- Source/WebCore/html/HTMLCanvasElement.cpp (revision 232511) >+++ Source/WebCore/html/HTMLCanvasElement.cpp (working copy) >@@ -913,7 +913,8 @@ void HTMLCanvasElement::createImageBuffe > > RenderingMode renderingMode = shouldAccelerate(size()) ? Accelerated : Unaccelerated; > >- setImageBuffer(ImageBuffer::create(size(), renderingMode)); >+ auto hostWindow = (document().view() && document().view()->root()) ? document().view()->root()->hostWindow() : nullptr; >+ setImageBuffer(ImageBuffer::create(size(), renderingMode, 1, ColorSpaceSRGB, hostWindow)); > if (!m_imageBuffer) > return; > m_imageBuffer->context().setShadowsIgnoreTransforms(true); >Index: Source/WebCore/platform/PlatformScreen.h >=================================================================== >--- Source/WebCore/platform/PlatformScreen.h (revision 232511) >+++ Source/WebCore/platform/PlatformScreen.h (working copy) >@@ -80,6 +80,7 @@ WEBCORE_EXPORT CGColorSpaceRef screenCol > > #if PLATFORM(MAC) > struct ScreenProperties; >+struct ScreenData; > > WEBCORE_EXPORT PlatformDisplayID displayID(NSScreen *); > >@@ -95,12 +96,11 @@ WEBCORE_EXPORT NSRect toDeviceSpace(cons > > NSPoint flipScreenPoint(const NSPoint&, NSScreen *); > >-typedef HashMap<PlatformDisplayID, ScreenProperties> ScreenPropertiesMap; >- >-WEBCORE_EXPORT std::pair<PlatformDisplayID, ScreenPropertiesMap> getScreenProperties(); >-WEBCORE_EXPORT void setScreenProperties(PlatformDisplayID primaryScreenID, const ScreenPropertiesMap&); >-ScreenProperties screenProperties(PlatformDisplayID); >+WEBCORE_EXPORT ScreenProperties collectScreenProperties(); >+WEBCORE_EXPORT void setScreenProperties(const ScreenProperties&); > >+uint32_t primaryOpenGLDisplayMask(); >+uint32_t displayMaskForDisplay(PlatformDisplayID); > #endif > > #if PLATFORM(IOS) >Index: Source/WebCore/platform/ScreenProperties.h >=================================================================== >--- Source/WebCore/platform/ScreenProperties.h (revision 232511) >+++ Source/WebCore/platform/ScreenProperties.h (working copy) >@@ -28,6 +28,7 @@ > #if PLATFORM(MAC) > > #include "FloatRect.h" >+#include "PlatformScreen.h" > #include <wtf/RetainPtr.h> > #include <wtf/text/WTFString.h> > >@@ -35,7 +36,7 @@ typedef struct CGColorSpace *CGColorSpac > > namespace WebCore { > >-struct ScreenProperties { >+struct ScreenData { > FloatRect screenAvailableRect; > FloatRect screenRect; > RetainPtr<CGColorSpaceRef> colorSpace; >@@ -44,6 +45,7 @@ struct ScreenProperties { > bool screenSupportsExtendedColor { false }; > bool screenHasInvertedColors { false }; > bool screenIsMonochrome { false }; >+ uint32_t displayMask { 0 }; > > enum EncodedColorSpaceDataType { > Null, >@@ -52,13 +54,53 @@ struct ScreenProperties { > }; > > template<class Encoder> void encode(Encoder&) const; >+ template<class Decoder> static std::optional<ScreenData> decode(Decoder&); >+}; >+ >+typedef HashMap<PlatformDisplayID, ScreenData> ScreenDataMap; >+ >+struct ScreenProperties { >+ PlatformDisplayID primaryDisplayID { 0 }; >+ uint32_t primaryOpenGLDisplayMask { 0 }; >+ ScreenDataMap screenDataMap; >+ >+ template<class Encoder> void encode(Encoder&) const; > template<class Decoder> static std::optional<ScreenProperties> decode(Decoder&); > }; > > template<class Encoder> > void ScreenProperties::encode(Encoder& encoder) const > { >- encoder << screenAvailableRect << screenRect << screenDepth << screenDepthPerComponent << screenSupportsExtendedColor << screenHasInvertedColors << screenIsMonochrome; >+ encoder << primaryDisplayID; >+ encoder << primaryOpenGLDisplayMask; >+ encoder << screenDataMap; >+} >+ >+template<class Decoder> >+std::optional<ScreenProperties> ScreenProperties::decode(Decoder& decoder) >+{ >+ std::optional<PlatformDisplayID> primaryDisplayID; >+ decoder >> primaryDisplayID; >+ if (!primaryDisplayID) >+ return std::nullopt; >+ >+ std::optional<uint32_t> primaryOpenGLDisplayMask; >+ decoder >> primaryOpenGLDisplayMask; >+ if (!primaryOpenGLDisplayMask) >+ return std::nullopt; >+ >+ std::optional<ScreenDataMap> screenDataMap; >+ decoder >> screenDataMap; >+ if (!screenDataMap) >+ return std::nullopt; >+ >+ return { { *primaryDisplayID, *primaryOpenGLDisplayMask, WTFMove(*screenDataMap) } }; >+} >+ >+template<class Encoder> >+void ScreenData::encode(Encoder& encoder) const >+{ >+ encoder << screenAvailableRect << screenRect << screenDepth << screenDepthPerComponent << screenSupportsExtendedColor << screenHasInvertedColors << screenIsMonochrome << displayMask; > > if (colorSpace) { > // Try to encode the name. >@@ -85,7 +127,7 @@ void ScreenProperties::encode(Encoder& e > } > > template<class Decoder> >-std::optional<ScreenProperties> ScreenProperties::decode(Decoder& decoder) >+std::optional<ScreenData> ScreenData::decode(Decoder& decoder) > { > std::optional<FloatRect> screenAvailableRect; > decoder >> screenAvailableRect; >@@ -122,6 +164,11 @@ std::optional<ScreenProperties> ScreenPr > if (!screenIsMonochrome) > return std::nullopt; > >+ std::optional<uint32_t> displayMask; >+ decoder >> displayMask; >+ if (!displayMask) >+ return std::nullopt; >+ > EncodedColorSpaceDataType dataType; > if (!decoder.decodeEnum(dataType)) > return std::nullopt; >@@ -157,7 +204,7 @@ std::optional<ScreenProperties> ScreenPr > } > } > >- return { { WTFMove(*screenAvailableRect), WTFMove(*screenRect), WTFMove(cgColorSpace), WTFMove(*screenDepth), WTFMove(*screenDepthPerComponent), WTFMove(*screenSupportsExtendedColor), WTFMove(*screenHasInvertedColors), WTFMove(*screenIsMonochrome) } }; >+ return { { WTFMove(*screenAvailableRect), WTFMove(*screenRect), WTFMove(cgColorSpace), WTFMove(*screenDepth), WTFMove(*screenDepthPerComponent), WTFMove(*screenSupportsExtendedColor), WTFMove(*screenHasInvertedColors), WTFMove(*screenIsMonochrome), WTFMove(*displayMask) } }; > } > > } // namespace WebCore >Index: Source/WebCore/platform/graphics/GraphicsContext3D.h >=================================================================== >--- Source/WebCore/platform/graphics/GraphicsContext3D.h (revision 232511) >+++ Source/WebCore/platform/graphics/GraphicsContext3D.h (working copy) >@@ -1282,11 +1282,6 @@ public: > GC3Denum currentBoundTarget() const { return m_state.currentBoundTarget(); } > unsigned textureSeed(GC3Duint texture) { return m_state.textureSeedCount.count(texture); } > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- WEBCORE_EXPORT static void setOpenGLDisplayMask(CGOpenGLDisplayMask); >- WEBCORE_EXPORT static CGOpenGLDisplayMask getOpenGLDisplayMask(); >-#endif >- > private: > GraphicsContext3D(GraphicsContext3DAttributes, HostWindow*, RenderStyle = RenderOffscreen, GraphicsContext3D* sharedContext = nullptr); > >@@ -1501,10 +1496,6 @@ private: > #if USE(CAIRO) > Platform3DObject m_vao { 0 }; > #endif >- >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- static std::optional<CGOpenGLDisplayMask> m_displayMask; >-#endif > }; > > } // namespace WebCore >Index: Source/WebCore/platform/graphics/ImageBuffer.cpp >=================================================================== >--- Source/WebCore/platform/graphics/ImageBuffer.cpp (revision 232511) >+++ Source/WebCore/platform/graphics/ImageBuffer.cpp (working copy) >@@ -38,10 +38,10 @@ namespace WebCore { > static const float MaxClampedLength = 4096; > static const float MaxClampedArea = MaxClampedLength * MaxClampedLength; > >-std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace) >+std::unique_ptr<ImageBuffer> ImageBuffer::create(const FloatSize& size, RenderingMode renderingMode, float resolutionScale, ColorSpace colorSpace, const HostWindow* hostWindow) > { > bool success = false; >- std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, success)); >+ std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(size, resolutionScale, colorSpace, renderingMode, hostWindow, success)); > if (!success) > return nullptr; > return buffer; >Index: Source/WebCore/platform/graphics/ImageBuffer.h >=================================================================== >--- Source/WebCore/platform/graphics/ImageBuffer.h (revision 232511) >+++ Source/WebCore/platform/graphics/ImageBuffer.h (working copy) >@@ -49,7 +49,8 @@ class Image; > class ImageData; > class IntPoint; > class IntRect; >- >+class HostWindow; >+ > enum BackingStoreCopy { > CopyBackingStore, // Guarantee subsequent draws don't affect the copy. > DontCopyBackingStore // Subsequent draws may affect the copy. >@@ -65,7 +66,7 @@ class ImageBuffer { > friend class IOSurface; > public: > // Will return a null pointer on allocation failure. >- WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB); >+ WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, RenderingMode, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB, const HostWindow* = nullptr); > #if USE(DIRECT2D) > WEBCORE_EXPORT static std::unique_ptr<ImageBuffer> create(const FloatSize&, RenderingMode, const GraphicsContext*, float resolutionScale = 1, ColorSpace = ColorSpaceSRGB); > #endif >@@ -164,9 +165,9 @@ private: > > // This constructor will place its success into the given out-variable > // so that create() knows when it should return failure. >- WEBCORE_EXPORT ImageBuffer(const FloatSize&, float resolutionScale, ColorSpace, RenderingMode, bool& success); >+ WEBCORE_EXPORT ImageBuffer(const FloatSize&, float resolutionScale, ColorSpace, RenderingMode, const HostWindow*, bool& success); > #if USE(CG) >- ImageBuffer(const FloatSize&, float resolutionScale, CGColorSpaceRef, RenderingMode, bool& success); >+ ImageBuffer(const FloatSize&, float resolutionScale, CGColorSpaceRef, RenderingMode, const HostWindow*, bool& success); > RetainPtr<CFDataRef> toCFData(const String& mimeType, std::optional<double> quality, PreserveResolution) const; > #elif USE(DIRECT2D) > ImageBuffer(const FloatSize&, float resolutionScale, ColorSpace, RenderingMode, const GraphicsContext*, bool& success); >Index: Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp >=================================================================== >--- Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp (revision 232511) >+++ Source/WebCore/platform/graphics/cairo/ImageBufferCairo.cpp (working copy) >@@ -204,7 +204,7 @@ void ImageBufferData::createCairoGLSurfa > } > #endif > >-ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, ColorSpace, RenderingMode renderingMode, bool& success) >+ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, ColorSpace, RenderingMode renderingMode, const HostWindow*, bool& success) > : m_data(IntSize(size), renderingMode) > , m_logicalSize(size) > , m_resolutionScale(resolutionScale) >Index: Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp >=================================================================== >--- Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp (revision 232511) >+++ Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp (working copy) >@@ -96,7 +96,7 @@ std::unique_ptr<ImageBuffer> ImageBuffer > RenderingMode renderingMode = context.renderingMode(); > IntSize scaledSize = ImageBuffer::compatibleBufferSize(size, context); > bool success = false; >- std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(scaledSize, 1, colorSpace.get(), renderingMode, success)); >+ std::unique_ptr<ImageBuffer> buffer(new ImageBuffer(scaledSize, 1, colorSpace.get(), renderingMode, nullptr, success)); > > if (!success) > return nullptr; >@@ -106,7 +106,7 @@ std::unique_ptr<ImageBuffer> ImageBuffer > return buffer; > } > >-ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, CGColorSpaceRef colorSpace, RenderingMode renderingMode, bool& success) >+ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, CGColorSpaceRef colorSpace, RenderingMode renderingMode, const HostWindow* hostWindow, bool& success) > : m_logicalSize(size) > , m_resolutionScale(resolutionScale) > { >@@ -152,7 +152,7 @@ ImageBuffer::ImageBuffer(const FloatSize > FloatSize userBounds = sizeForDestinationSize(FloatSize(width.unsafeGet(), height.unsafeGet())); > m_data.surface = IOSurface::create(m_data.backingStoreSize, IntSize(userBounds), colorSpace); > if (m_data.surface) { >- cgContext = m_data.surface->ensurePlatformContext(); >+ cgContext = m_data.surface->ensurePlatformContext(hostWindow); > if (cgContext) > CGContextClearRect(cgContext.get(), FloatRect(FloatPoint(), userBounds)); > else >@@ -193,8 +193,8 @@ ImageBuffer::ImageBuffer(const FloatSize > success = true; > } > >-ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, ColorSpace imageColorSpace, RenderingMode renderingMode, bool& success) >- : ImageBuffer(size, resolutionScale, cachedCGColorSpace(imageColorSpace), renderingMode, success) >+ImageBuffer::ImageBuffer(const FloatSize& size, float resolutionScale, ColorSpace imageColorSpace, RenderingMode renderingMode, const HostWindow* hostWindow, bool& success) >+ : ImageBuffer(size, resolutionScale, cachedCGColorSpace(imageColorSpace), renderingMode, hostWindow, success) > { > } > >Index: Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm >=================================================================== >--- Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm (revision 232511) >+++ Source/WebCore/platform/graphics/cocoa/GraphicsContext3DCocoa.mm (working copy) >@@ -36,6 +36,7 @@ > #import "Extensions3DOpenGL.h" > #import "GraphicsContext.h" > #import "HTMLCanvasElement.h" >+#import "HostWindow.h" > #import "ImageBuffer.h" > #import "Logging.h" > #import "WebGLLayer.h" >@@ -60,14 +61,14 @@ > #import <OpenGL/gl.h> > #endif > >+#if PLATFORM(MAC) >+#import "ScreenProperties.h" >+#endif >+ > namespace WebCore { > > static const unsigned statusCheckThreshold = 5; > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >-std::optional<CGOpenGLDisplayMask> GraphicsContext3D::m_displayMask; >-#endif >- > #if HAVE(APPLE_GRAPHICS_CONTROL) > > enum { >@@ -424,7 +425,7 @@ static void identifyAndSetCurrentGPU(CGL > } > #endif > >-GraphicsContext3D::GraphicsContext3D(GraphicsContext3DAttributes attrs, HostWindow*, GraphicsContext3D::RenderStyle, GraphicsContext3D* sharedContext) >+GraphicsContext3D::GraphicsContext3D(GraphicsContext3DAttributes attrs, HostWindow* hostWindow, GraphicsContext3D::RenderStyle, GraphicsContext3D* sharedContext) > : m_attrs(attrs) > #if PLATFORM(IOS) > , m_compiler(SH_ESSL_OUTPUT) >@@ -432,6 +433,7 @@ GraphicsContext3D::GraphicsContext3D(Gra > , m_private(std::make_unique<GraphicsContext3DPrivate>(this)) > { > #if USE(OPENGL_ES) >+ UNUSED_PARAM(hostWindow); > EAGLRenderingAPI api = m_attrs.useGLES3 ? kEAGLRenderingAPIOpenGLES3 : kEAGLRenderingAPIOpenGLES2; > if (!sharedContext) > m_contextObj = [[EAGLContext alloc] initWithAPI:api]; >@@ -492,8 +494,13 @@ GraphicsContext3D::GraphicsContext3D(Gra > CGLSetParameter(m_contextObj, kCGLCPAbortOnGPURestartStatusBlacklisted, &abortOnBlacklist); > > #if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- if (m_displayMask.has_value()) >- identifyAndSetCurrentGPU(pixelFormatObj, numPixelFormats, m_displayMask.value(), m_contextObj); >+ if (auto displayMask = primaryOpenGLDisplayMask()) { >+ if (hostWindow && hostWindow->displayID()) >+ displayMask = displayMaskForDisplay(hostWindow->displayID()); >+ identifyAndSetCurrentGPU(pixelFormatObj, numPixelFormats, displayMask, m_contextObj); >+ } >+#else >+ UNUSED_PARAM(hostWindow); > #endif > > CGLDestroyPixelFormat(pixelFormatObj); >@@ -789,20 +796,6 @@ void GraphicsContext3D::simulateContextC > manager().updateAllContexts(); > } > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >-void GraphicsContext3D::setOpenGLDisplayMask(CGOpenGLDisplayMask displayMask) >-{ >- m_displayMask = displayMask; >-} >- >-CGOpenGLDisplayMask GraphicsContext3D::getOpenGLDisplayMask() >-{ >- if (m_displayMask.has_value()) >- return m_displayMask.value(); >- return 0; >-} >-#endif >- > bool GraphicsContext3D::allowOfflineRenderers() const > { > #if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >@@ -812,7 +805,7 @@ bool GraphicsContext3D::allowOfflineRend > // all offline renderers need to be considered when finding a pixel format. > // In WebKit legacy, there will still be a WindowServer connection, and > // m_displayMask will not be set in this case. >- if (m_displayMask.has_value()) >+ if (primaryOpenGLDisplayMask()) > return true; > #endif > >Index: Source/WebCore/platform/graphics/cocoa/IOSurface.h >=================================================================== >--- Source/WebCore/platform/graphics/cocoa/IOSurface.h (revision 232511) >+++ Source/WebCore/platform/graphics/cocoa/IOSurface.h (working copy) >@@ -38,6 +38,8 @@ class TextStream; > > namespace WebCore { > >+class HostWindow; >+ > class IOSurface final { > WTF_MAKE_FAST_ALLOCATED; > public: >@@ -107,7 +109,7 @@ public: > #endif > IOSurfaceRef surface() const { return m_surface.get(); } > WEBCORE_EXPORT GraphicsContext& ensureGraphicsContext(); >- WEBCORE_EXPORT CGContextRef ensurePlatformContext(); >+ WEBCORE_EXPORT CGContextRef ensurePlatformContext(const HostWindow* = nullptr); > > enum class SurfaceState { > Valid, >Index: Source/WebCore/platform/graphics/cocoa/IOSurface.mm >=================================================================== >--- Source/WebCore/platform/graphics/cocoa/IOSurface.mm (revision 232511) >+++ Source/WebCore/platform/graphics/cocoa/IOSurface.mm (working copy) >@@ -272,7 +272,7 @@ void IOSurface::setContextSize(IntSize c > m_contextSize = contextSize; > } > >-CGContextRef IOSurface::ensurePlatformContext() >+CGContextRef IOSurface::ensurePlatformContext(const HostWindow* hostWindow) > { > if (m_cgContext) > return m_cgContext.get(); >@@ -301,8 +301,13 @@ CGContextRef IOSurface::ensurePlatformCo > m_cgContext = adoptCF(CGIOSurfaceContextCreate(m_surface.get(), m_contextSize.width(), m_contextSize.height(), bitsPerComponent, bitsPerPixel, m_colorSpace.get(), bitmapInfo)); > > #if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- if (uint32_t mask = GraphicsContext3D::getOpenGLDisplayMask()) >- CGIOSurfaceContextSetDisplayMask(m_cgContext.get(), mask); >+ if (auto displayMask = primaryOpenGLDisplayMask()) { >+ if (hostWindow && hostWindow->displayID()) >+ displayMask = displayMaskForDisplay(hostWindow->displayID()); >+ CGIOSurfaceContextSetDisplayMask(m_cgContext.get(), displayMask); >+ } >+#else >+ UNUSED_PARAM(hostWindow); > #endif > > return m_cgContext.get(); >Index: Source/WebCore/platform/mac/PlatformScreenMac.mm >=================================================================== >--- Source/WebCore/platform/mac/PlatformScreenMac.mm (revision 232511) >+++ Source/WebCore/platform/mac/PlatformScreenMac.mm (working copy) >@@ -96,9 +96,9 @@ static NSScreen *screen(Widget* widget) > return screen(displayID(widget)); > } > >-static ScreenPropertiesMap& screenProperties() >+static ScreenProperties& screenProperties() > { >- static NeverDestroyed<ScreenPropertiesMap> screenProperties; >+ static NeverDestroyed<ScreenProperties> screenProperties; > return screenProperties; > } > >@@ -108,12 +108,11 @@ static PlatformDisplayID& primaryScreenD > return primaryScreenDisplayID; > } > >-std::pair<PlatformDisplayID, ScreenPropertiesMap> getScreenProperties() >+ScreenProperties collectScreenProperties() > { > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); > >- ScreenPropertiesMap screenProperties; >- std::optional<PlatformDisplayID> firstScreen; >+ ScreenProperties screenProperties; > > for (NSScreen *screen in [NSScreen screens]) { > auto displayID = WebCore::displayID(screen); >@@ -128,46 +127,63 @@ std::pair<PlatformDisplayID, ScreenPrope > bool screenSupportsExtendedColor = [screen canRepresentDisplayGamut:NSDisplayGamutP3]; > bool screenHasInvertedColors = CGDisplayUsesInvertedPolarity(); > bool screenIsMonochrome = CGDisplayUsesForceToGray(); >+ uint32_t displayMask = CGDisplayIDToOpenGLDisplayMask(displayID); > >- screenProperties.set(displayID, ScreenProperties { screenAvailableRect, screenRect, colorSpace, screenDepth, screenDepthPerComponent, screenSupportsExtendedColor, screenHasInvertedColors, screenIsMonochrome }); >+ screenProperties.screenDataMap.set(displayID, ScreenData { screenAvailableRect, screenRect, colorSpace, screenDepth, screenDepthPerComponent, screenSupportsExtendedColor, screenHasInvertedColors, screenIsMonochrome, displayMask }); > >- if (!firstScreen) >- firstScreen = displayID; >+ if (!screenProperties.primaryDisplayID) >+ screenProperties.primaryDisplayID = displayID; >+ >+ if (!screenProperties.primaryOpenGLDisplayMask) >+ screenProperties.primaryOpenGLDisplayMask = displayMask; > } > >- return { WTFMove(*firstScreen), WTFMove(screenProperties) }; >+ return screenProperties; > } > >-void setScreenProperties(PlatformDisplayID primaryScreenID, const ScreenPropertiesMap& properties) >+void setScreenProperties(const ScreenProperties& properties) > { >- primaryScreenDisplayID() = primaryScreenID; > screenProperties() = properties; > } > >-ScreenProperties screenProperties(PlatformDisplayID screendisplayID) >+static ScreenData screenData(PlatformDisplayID screendisplayID) > { >- RELEASE_ASSERT(!screenProperties().isEmpty()); >+ RELEASE_ASSERT(!screenProperties().screenDataMap.isEmpty()); > > // Return property of the first screen if the screen is not found in the map. > auto displayID = screendisplayID ? screendisplayID : primaryScreenDisplayID(); > if (displayID) { >- auto screenPropertiesForDisplay = screenProperties().find(displayID); >- if (screenPropertiesForDisplay != screenProperties().end()) >+ auto screenPropertiesForDisplay = screenProperties().screenDataMap.find(displayID); >+ if (screenPropertiesForDisplay != screenProperties().screenDataMap.end()) > return screenPropertiesForDisplay->value; > } > > // Last resort: use the first item in the screen list. >- return screenProperties().begin()->value; >+ return screenProperties().screenDataMap.begin()->value; >+} >+ >+uint32_t primaryOpenGLDisplayMask() >+{ >+ return screenProperties().primaryOpenGLDisplayMask; >+} >+ >+uint32_t displayMaskForDisplay(PlatformDisplayID displayID) >+{ >+ if (!screenProperties().screenDataMap.isEmpty()) >+ return screenData(displayID).displayMask; >+ >+ ASSERT_NOT_REACHED(); >+ return 0; > } > >-static ScreenProperties getScreenProperties(Widget* widget) >+static ScreenData getScreenProperties(Widget* widget) > { >- return screenProperties(displayID(widget)); >+ return screenData(displayID(widget)); > } > > bool screenIsMonochrome(Widget* widget) > { >- if (!screenProperties().isEmpty()) >+ if (!screenProperties().screenDataMap.isEmpty()) > return getScreenProperties(widget).screenIsMonochrome; > > // This is a system-wide accessibility setting, same on all screens. >@@ -177,8 +193,8 @@ bool screenIsMonochrome(Widget* widget) > > bool screenHasInvertedColors() > { >- if (!screenProperties().isEmpty()) >- return screenProperties(primaryScreenDisplayID()).screenHasInvertedColors; >+ if (!screenProperties().screenDataMap.isEmpty()) >+ return screenData(primaryScreenDisplayID()).screenHasInvertedColors; > > // This is a system-wide accessibility setting, same on all screens. > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); >@@ -187,7 +203,7 @@ bool screenHasInvertedColors() > > int screenDepth(Widget* widget) > { >- if (!screenProperties().isEmpty()) { >+ if (!screenProperties().screenDataMap.isEmpty()) { > auto screenDepth = getScreenProperties(widget).screenDepth; > ASSERT(screenDepth); > return screenDepth; >@@ -199,7 +215,7 @@ int screenDepth(Widget* widget) > > int screenDepthPerComponent(Widget* widget) > { >- if (!screenProperties().isEmpty()) { >+ if (!screenProperties().screenDataMap.isEmpty()) { > auto depthPerComponent = getScreenProperties(widget).screenDepthPerComponent; > ASSERT(depthPerComponent); > return depthPerComponent; >@@ -211,8 +227,8 @@ int screenDepthPerComponent(Widget* widg > > FloatRect screenRectForDisplay(PlatformDisplayID displayID) > { >- if (!screenProperties().isEmpty()) { >- auto screenRect = screenProperties(displayID).screenRect; >+ if (!screenProperties().screenDataMap.isEmpty()) { >+ auto screenRect = screenData(displayID).screenRect; > ASSERT(!screenRect.isEmpty()); > return screenRect; > } >@@ -228,7 +244,7 @@ FloatRect screenRectForPrimaryScreen() > > FloatRect screenRect(Widget* widget) > { >- if (!screenProperties().isEmpty()) >+ if (!screenProperties().screenDataMap.isEmpty()) > return getScreenProperties(widget).screenRect; > > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); >@@ -237,7 +253,7 @@ FloatRect screenRect(Widget* widget) > > FloatRect screenAvailableRect(Widget* widget) > { >- if (!screenProperties().isEmpty()) >+ if (!screenProperties().screenDataMap.isEmpty()) > return getScreenProperties(widget).screenAvailableRect; > > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); >@@ -262,7 +278,7 @@ NSScreen *screen(PlatformDisplayID displ > > CGColorSpaceRef screenColorSpace(Widget* widget) > { >- if (!screenProperties().isEmpty()) >+ if (!screenProperties().screenDataMap.isEmpty()) > return getScreenProperties(widget).colorSpace.get(); > > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); >@@ -271,7 +287,7 @@ CGColorSpaceRef screenColorSpace(Widget* > > bool screenSupportsExtendedColor(Widget* widget) > { >- if (!screenProperties().isEmpty()) >+ if (!screenProperties().screenDataMap.isEmpty()) > return getScreenProperties(widget).screenSupportsExtendedColor; > > ASSERT(hasProcessPrivilege(ProcessPrivilege::CanCommunicateWithWindowServer)); >Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 232511) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,47 @@ >+2018-06-05 Per Arne Vollan <pvollan@apple.com> >+ >+ Move OpenGL display mask to screen data struct. >+ https://bugs.webkit.org/show_bug.cgi?id=186198 >+ <rdar://problem/40724854> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Currently, the OpenGL display mask is a global in the WebContent process. This is not correct in all cases, since >+ it is possible to have two Web views in the same WebContent process, displayed on different displays. This can be >+ resolved by moving the OpenGL display mask to a new ScreenData struct, containing information specific to each >+ display. The display ID of the host window is used to find the OpenGL display mask when needed. This patch makes >+ the host window available when creating an IOSurface, in order to find the right OpenGL display mask. If no host >+ window is available, the OpenGL display mask of the main display is used. >+ >+ * Shared/WebPageCreationParameters.cpp: >+ (WebKit::WebPageCreationParameters::encode const): >+ (WebKit::WebPageCreationParameters::decode): >+ * Shared/WebPageCreationParameters.h: >+ * Shared/WebProcessCreationParameters.cpp: >+ (WebKit::WebProcessCreationParameters::encode const): >+ (WebKit::WebProcessCreationParameters::decode): >+ * Shared/WebProcessCreationParameters.h: >+ * UIProcess/Cocoa/WebProcessPoolCocoa.mm: >+ (WebKit::WebProcessPool::platformInitializeWebProcess): >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::windowScreenDidChange): >+ (WebKit::WebPageProxy::creationParameters): >+ * UIProcess/WebProcessPool.cpp: >+ (WebKit::WebProcessPool::screenPropertiesStateChanged): >+ (WebKit::displayReconfigurationCallBack): >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::m_credentialsMessenger): >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/WebPage.messages.in: >+ * WebProcess/WebPage/mac/WebPageMac.mm: >+ (WebKit::WebPage::openGLDisplayMaskChanged): Deleted. >+ * WebProcess/WebProcess.cpp: >+ (WebKit::WebProcess::setScreenProperties): >+ * WebProcess/WebProcess.h: >+ * WebProcess/WebProcess.messages.in: >+ * WebProcess/cocoa/WebProcessCocoa.mm: >+ (WebKit::WebProcess::platformInitializeWebProcess): >+ > 2018-06-04 Chris Dumez <cdumez@apple.com> > > Rename "Cross-Origin-Options" HTTP header to "Cross-Origin-Window-Policy" >Index: Source/WebKit/Shared/WebPageCreationParameters.cpp >=================================================================== >--- Source/WebKit/Shared/WebPageCreationParameters.cpp (revision 232511) >+++ Source/WebKit/Shared/WebPageCreationParameters.cpp (working copy) >@@ -119,9 +119,6 @@ void WebPageCreationParameters::encode(I > #if ENABLE(CONTENT_EXTENSIONS) > encoder << contentRuleLists; > #endif >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- encoder << displayMask; >-#endif > } > > std::optional<WebPageCreationParameters> WebPageCreationParameters::decode(IPC::Decoder& decoder) >@@ -346,11 +343,6 @@ std::optional<WebPageCreationParameters> > parameters.contentRuleLists = WTFMove(*contentRuleLists); > #endif > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- if (!decoder.decode(parameters.displayMask)) >- return std::nullopt; >-#endif >- > return WTFMove(parameters); > } > >Index: Source/WebKit/Shared/WebPageCreationParameters.h >=================================================================== >--- Source/WebKit/Shared/WebPageCreationParameters.h (revision 232511) >+++ Source/WebKit/Shared/WebPageCreationParameters.h (working copy) >@@ -185,10 +185,6 @@ struct WebPageCreationParameters { > #if ENABLE(CONTENT_EXTENSIONS) > Vector<std::pair<String, WebCompiledContentRuleListData>> contentRuleLists; > #endif >- >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- CGOpenGLDisplayMask displayMask { 0 }; >-#endif > }; > > } // namespace WebKit >Index: Source/WebKit/Shared/WebProcessCreationParameters.cpp >=================================================================== >--- Source/WebKit/Shared/WebProcessCreationParameters.cpp (revision 232511) >+++ Source/WebKit/Shared/WebProcessCreationParameters.cpp (working copy) >@@ -156,8 +156,7 @@ void WebProcessCreationParameters::encod > #endif > > #if PLATFORM(MAC) >- encoder << primaryDisplayID; >- encoder << screenPropertiesMap; >+ encoder << screenProperties; > #endif > } > >@@ -407,14 +406,11 @@ bool WebProcessCreationParameters::decod > #endif > > #if PLATFORM(MAC) >- if (!decoder.decode(parameters.primaryDisplayID)) >+ std::optional<WebCore::ScreenProperties> screenProperties; >+ decoder >> screenProperties; >+ if (!screenProperties) > return false; >- >- std::optional<WebCore::ScreenPropertiesMap> screenPropertiesMap; >- decoder >> screenPropertiesMap; >- if (!screenPropertiesMap) >- return false; >- parameters.screenPropertiesMap = WTFMove(*screenPropertiesMap); >+ parameters.screenProperties = WTFMove(*screenProperties); > #endif > > return true; >Index: Source/WebKit/Shared/WebProcessCreationParameters.h >=================================================================== >--- Source/WebKit/Shared/WebProcessCreationParameters.h (revision 232511) >+++ Source/WebKit/Shared/WebProcessCreationParameters.h (working copy) >@@ -195,8 +195,7 @@ struct WebProcessCreationParameters { > #endif > > #if PLATFORM(MAC) >- WebCore::PlatformDisplayID primaryDisplayID { 0 }; >- WebCore::ScreenPropertiesMap screenPropertiesMap; >+ WebCore::ScreenProperties screenProperties; > #endif > }; > >Index: Source/WebKit/UIProcess/WebPageProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.cpp (revision 232511) >+++ Source/WebKit/UIProcess/WebPageProxy.cpp (working copy) >@@ -2778,11 +2778,6 @@ void WebPageProxy::windowScreenDidChange > return; > > m_process->send(Messages::WebPage::WindowScreenDidChange(displayID), m_pageID); >- >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- auto currentDisplaymask = CGDisplayIDToOpenGLDisplayMask(displayID); >- m_process->send(Messages::WebPage::OpenGLDisplayMaskChanged(currentDisplaymask), m_pageID); >-#endif > } > > float WebPageProxy::deviceScaleFactor() const >@@ -6174,12 +6169,6 @@ WebPageCreationParameters WebPageProxy:: > parameters.applicationManifest = m_configuration->applicationManifest() ? std::optional<WebCore::ApplicationManifest>(m_configuration->applicationManifest()->applicationManifest()) : std::nullopt; > #endif > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- auto screen = WebCore::screen(m_pageClient.platformWindow()); >- auto displayID = WebCore::displayID(screen); >- parameters.displayMask = CGDisplayIDToOpenGLDisplayMask(displayID); >-#endif >- > m_process->addWebUserContentControllerProxy(m_userContentController, parameters); > > return parameters; >Index: Source/WebKit/UIProcess/WebProcessPool.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebProcessPool.cpp (revision 232511) >+++ Source/WebKit/UIProcess/WebProcessPool.cpp (working copy) >@@ -439,8 +439,8 @@ void WebProcessPool::textCheckerStateCha > void WebProcessPool::screenPropertiesStateChanged() > { > #if PLATFORM(MAC) >- auto screenProperties = WebCore::getScreenProperties(); >- sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties.first, screenProperties.second)); >+ auto screenProperties = WebCore::collectScreenProperties(); >+ sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties)); > #endif > } > >@@ -812,9 +812,9 @@ RefPtr<WebProcessProxy> WebProcessPool:: > #if PLATFORM(MAC) > static void displayReconfigurationCallBack(CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo) > { >- auto screenProperties = WebCore::getScreenProperties(); >+ auto screenProperties = WebCore::collectScreenProperties(); > for (auto& processPool : WebProcessPool::allProcessPools()) >- processPool->sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties.first, screenProperties.second)); >+ processPool->sendToAllProcesses(Messages::WebProcess::SetScreenProperties(screenProperties)); > } > > static void registerDisplayConfigurationCallback() >Index: Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm >=================================================================== >--- Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (revision 232511) >+++ Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm (working copy) >@@ -282,9 +282,8 @@ void WebProcessPool::platformInitializeW > #endif > > #if PLATFORM(MAC) >- auto screenProperties = WebCore::getScreenProperties(); >- parameters.primaryDisplayID = screenProperties.first; >- parameters.screenPropertiesMap = WTFMove(screenProperties.second); >+ auto screenProperties = WebCore::collectScreenProperties(); >+ parameters.screenProperties = WTFMove(screenProperties); > #endif > } > >Index: Source/WebKit/WebProcess/WebProcess.cpp >=================================================================== >--- Source/WebKit/WebProcess/WebProcess.cpp (revision 232511) >+++ Source/WebKit/WebProcess/WebProcess.cpp (working copy) >@@ -1678,9 +1678,9 @@ void WebProcess::registerServiceWorkerCl > #endif > > #if PLATFORM(MAC) >-void WebProcess::setScreenProperties(uint32_t primaryScreenID, const HashMap<uint32_t, WebCore::ScreenProperties>& properties) >+void WebProcess::setScreenProperties(const WebCore::ScreenProperties& properties) > { >- WebCore::setScreenProperties(primaryScreenID, properties); >+ WebCore::setScreenProperties(properties); > } > #endif > >Index: Source/WebKit/WebProcess/WebProcess.h >=================================================================== >--- Source/WebKit/WebProcess/WebProcess.h (revision 232511) >+++ Source/WebKit/WebProcess/WebProcess.h (working copy) >@@ -371,7 +371,7 @@ private: > void didReceiveSyncWebProcessMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&); > > #if PLATFORM(MAC) >- void setScreenProperties(uint32_t primaryScreenID, const HashMap<uint32_t, WebCore::ScreenProperties>&); >+ void setScreenProperties(const WebCore::ScreenProperties&); > #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 > void scrollerStylePreferenceChanged(bool useOverlayScrollbars); > #endif >Index: Source/WebKit/WebProcess/WebProcess.messages.in >=================================================================== >--- Source/WebKit/WebProcess/WebProcess.messages.in (revision 232511) >+++ Source/WebKit/WebProcess/WebProcess.messages.in (working copy) >@@ -130,7 +130,7 @@ messages -> WebProcess LegacyReceiver { > UpdateActivePages() > > #if PLATFORM(MAC) >- SetScreenProperties(uint32_t primaryScreenID, HashMap<uint32_t, WebCore::ScreenProperties> screenProperties) >+ SetScreenProperties(struct WebCore::ScreenProperties screenProperties) > #if __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 > ScrollerStylePreferenceChanged(bool useOvelayScrollbars) > #endif >Index: Source/WebKit/WebProcess/WebPage/WebPage.cpp >=================================================================== >--- Source/WebKit/WebProcess/WebPage/WebPage.cpp (revision 232511) >+++ Source/WebKit/WebProcess/WebPage/WebPage.cpp (working copy) >@@ -618,10 +618,6 @@ WebPage::WebPage(uint64_t pageID, WebPag > setViewportConfigurationViewLayoutSize(parameters.viewportConfigurationViewLayoutSize); > setMaximumUnobscuredSize(parameters.maximumUnobscuredSize); > #endif >- >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- GraphicsContext3D::setOpenGLDisplayMask(parameters.displayMask); >-#endif > } > > #if ENABLE(WEB_RTC) >Index: Source/WebKit/WebProcess/WebPage/WebPage.h >=================================================================== >--- Source/WebKit/WebProcess/WebPage/WebPage.h (revision 232511) >+++ Source/WebKit/WebProcess/WebPage/WebPage.h (working copy) >@@ -1073,10 +1073,6 @@ public: > void didFinishLoadingApplicationManifest(uint64_t, const std::optional<WebCore::ApplicationManifest>&); > #endif > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- void openGLDisplayMaskChanged(uint32_t displayMask); >-#endif >- > UserContentControllerIdentifier userContentControllerIdentifier() const { return m_userContentController->identifier(); } > > bool isSuspended() const { return m_isSuspended; } >Index: Source/WebKit/WebProcess/WebPage/WebPage.messages.in >=================================================================== >--- Source/WebKit/WebProcess/WebPage/WebPage.messages.in (revision 232511) >+++ Source/WebKit/WebProcess/WebPage/WebPage.messages.in (working copy) >@@ -514,9 +514,5 @@ messages -> WebPage LegacyReceiver { > GetApplicationManifest(WebKit::CallbackID callbackID) > #endif > >-#if PLATFORM(MAC) && ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >- OpenGLDisplayMaskChanged(uint32_t displayMask) >-#endif >- > SetDefersLoading(bool defersLoading) > } >Index: Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm >=================================================================== >--- Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm (revision 232511) >+++ Source/WebKit/WebProcess/WebPage/mac/WebPageMac.mm (working copy) >@@ -1147,13 +1147,6 @@ void WebPage::setShouldPlayToPlaybackTar > } > #endif > >-#if ENABLE(WEBPROCESS_WINDOWSERVER_BLOCKING) >-void WebPage::openGLDisplayMaskChanged(uint32_t displayMask) >-{ >- GraphicsContext3D::setOpenGLDisplayMask(displayMask); >-} >-#endif >- > } // namespace WebKit > > #endif // PLATFORM(MAC) >Index: Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm >=================================================================== >--- Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (revision 232511) >+++ Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm (working copy) >@@ -193,7 +193,7 @@ void WebProcess::platformInitializeWebPr > } > > #if PLATFORM(MAC) >- WebCore::setScreenProperties(parameters.primaryDisplayID, parameters.screenPropertiesMap); >+ WebCore::setScreenProperties(parameters.screenProperties); > #endif > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186198
:
341858
|
341862
|
341913
|
341930
|
341933
|
341935
|
341937
|
341950
|
341971
|
341972
|
341990
|
341995
|
342022