⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 285990 in webkit


Ignore:
Timestamp:
Nov 18, 2021, 1:49:45 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

RemoteGraphicsContextGLProxyBase should not have platform-specific implementations
https://bugs.webkit.org/show_bug.cgi?id=233175

Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-11-18
Reviewed by Antti Koivisto.

Move platform-specific code from RemoteGraphicsContextGLProxyBase to
WebKit::RemoteGraphicsContextGLProxyCocoa and WebKit::RemoteGraphicsContextGLProxyWC.
The platform-specific code is trivial and anyway used by the WebKit side concrete classes.

Source/WebCore:

No new tests, refactor.

  • PlatformWinCairo.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:

(WebCore::RemoteGraphicsContextGLProxyBase::RemoteGraphicsContextGLProxyBase):
(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::paintCompositedResultsToMediaSample): Deleted.

  • platform/graphics/RemoteGraphicsContextGLProxyBase.h:
  • platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
  • platform/graphics/cocoa/RemoteGraphicsContextGLProxyBaseCocoa.mm: Removed.

(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::asCV): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::paintCompositedResultsToMediaSample): Deleted.

  • platform/graphics/wc/RemoteGraphicsContextGLProxyBaseWC.cpp: Removed.

(WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
(WebCore::RemoteGraphicsContextGLProxyBase::setPlatformLayer): Deleted.

Source/WebKit:

  • PlatformWin.cmake:
  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:

(WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
(WebKit::RemoteGraphicsContextGLProxy::create): Deleted.
(WebKit::RemoteGraphicsContextGLProxy::prepareForDisplay): Deleted.

  • WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
  • WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm:

(WebKit::RemoteGraphicsContextGLProxy::create):
(WebKit::RemoteGraphicsContextGLProxy::prepareForDisplay): Deleted.

  • WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp: Added.

(WebKit::RemoteGraphicsContextGLProxy::create):

Location:
trunk/Source
Files:
1 added
2 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r285987 r285990  
     12021-11-18  Kimmo Kinnunen  <kkinnunen@apple.com>
     2
     3        RemoteGraphicsContextGLProxyBase should not have platform-specific implementations
     4        https://bugs.webkit.org/show_bug.cgi?id=233175
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Move platform-specific code from RemoteGraphicsContextGLProxyBase to
     9        WebKit::RemoteGraphicsContextGLProxyCocoa and WebKit::RemoteGraphicsContextGLProxyWC.
     10        The platform-specific code is trivial and anyway used by the WebKit side concrete classes.
     11
     12        No new tests, refactor.
     13
     14        * PlatformWinCairo.cmake:
     15        * SourcesCocoa.txt:
     16        * WebCore.xcodeproj/project.pbxproj:
     17        * platform/graphics/RemoteGraphicsContextGLProxyBase.cpp:
     18        (WebCore::RemoteGraphicsContextGLProxyBase::RemoteGraphicsContextGLProxyBase):
     19        (WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
     20        (WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
     21        (WebCore::RemoteGraphicsContextGLProxyBase::paintCompositedResultsToMediaSample): Deleted.
     22        * platform/graphics/RemoteGraphicsContextGLProxyBase.h:
     23        * platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h:
     24        * platform/graphics/cocoa/RemoteGraphicsContextGLProxyBaseCocoa.mm: Removed.
     25        (WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
     26        (WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
     27        (WebCore::RemoteGraphicsContextGLProxyBase::asCV): Deleted.
     28        (WebCore::RemoteGraphicsContextGLProxyBase::paintCompositedResultsToMediaSample): Deleted.
     29        * platform/graphics/wc/RemoteGraphicsContextGLProxyBaseWC.cpp: Removed.
     30        (WebCore::RemoteGraphicsContextGLProxyBase::platformInitialize): Deleted.
     31        (WebCore::RemoteGraphicsContextGLProxyBase::platformLayer const): Deleted.
     32        (WebCore::RemoteGraphicsContextGLProxyBase::setPlatformLayer): Deleted.
     33
    1342021-11-18  Ziran Sun  <zsun@igalia.com>
    235
  • trunk/Source/WebCore/PlatformWinCairo.cmake

    r285099 r285990  
    2525
    2626    platform/graphics/harfbuzz/DrawGlyphsRecorderHarfBuzz.cpp
    27 
    28     platform/graphics/wc/RemoteGraphicsContextGLProxyBaseWC.cpp
    2927
    3028    platform/graphics/win/FontCustomPlatformDataCairo.cpp
  • trunk/Source/WebCore/SourcesCocoa.txt

    r285846 r285990  
    383383platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp
    384384platform/graphics/cocoa/MediaPlaybackTargetContext.mm
    385 platform/graphics/cocoa/RemoteGraphicsContextGLProxyBaseCocoa.mm
    386385platform/graphics/cocoa/SourceBufferParser.cpp
    387386platform/graphics/cocoa/SourceBufferParserWebM.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r285984 r285990  
    1103211032                7B10339D2549720100C8C1AC /* GraphicsContextGLCV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GraphicsContextGLCV.h; sourceTree = "<group>"; };
    1103311033                7B1619102719880E00C40EAC /* WebProcessGraphicsContextGLOpenGLCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebProcessGraphicsContextGLOpenGLCocoa.mm; sourceTree = "<group>"; };
    11034                 7B64C0B4254C3B160006B4AF /* RemoteGraphicsContextGLProxyBaseCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteGraphicsContextGLProxyBaseCocoa.mm; sourceTree = "<group>"; };
    1103511034                7B6DC81525712E9100380C70 /* GraphicsContextGLIOSurfaceSwapChain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsContextGLIOSurfaceSwapChain.cpp; sourceTree = "<group>"; };
    1103611035                7B6DC81725712E9200380C70 /* GraphicsContextGLIOSurfaceSwapChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsContextGLIOSurfaceSwapChain.h; sourceTree = "<group>"; };
     
    2823628235                                31647FA8251616BD0010F8FB /* OpenGLSoftLinkCocoa.h */,
    2823728236                                31647FA9251616BD0010F8FB /* OpenGLSoftLinkCocoa.mm */,
    28238                                 7B64C0B4254C3B160006B4AF /* RemoteGraphicsContextGLProxyBaseCocoa.mm */,
    2823928237                                CDEB3D7224C41A6E001FBEEF /* SourceBufferParser.cpp */,
    2824028238                                CDEB3D7324C41A6E001FBEEF /* SourceBufferParser.h */,
  • trunk/Source/WebCore/platform/graphics/RemoteGraphicsContextGLProxyBase.cpp

    r285099 r285990  
    4343    : GraphicsContextGL(attrs)
    4444{
    45     platformInitialize();
    4645}
    4746
     
    135134}
    136135
    137 #if !PLATFORM(COCOA) && !USE(GRAPHICS_LAYER_WC)
    138 void RemoteGraphicsContextGLProxyBase::platformInitialize()
    139 {
    140 }
    141 
    142 PlatformLayer* RemoteGraphicsContextGLProxyBase::platformLayer() const
    143 {
    144     return nullptr;
    145 }
    146 #endif
    147136#if !USE(ANGLE)
    148137void RemoteGraphicsContextGLProxyBase::readnPixelsEXT(GCGLint, GCGLint, GCGLsizei, GCGLsizei, GCGLenum, GCGLenum, GCGLsizei, GCGLvoid*)
     
    160149
    161150#if ENABLE(MEDIA_STREAM) && !PLATFORM(COCOA)
    162 RefPtr<MediaSample> RemoteGraphicsContextGLProxyBase::paintCompositedResultsToMediaSample()
    163 {
    164     return nullptr;
    165 }
    166151#endif
    167152}
  • trunk/Source/WebCore/platform/graphics/RemoteGraphicsContextGLProxyBase.h

    r285099 r285990  
    3434#include <wtf/text/StringHash.h>
    3535
    36 #if PLATFORM(COCOA)
    37 #include <wtf/RetainPtr.h>
    38 #endif
    39 
    40 #if PLATFORM(COCOA)
    41 OBJC_CLASS WebGLLayer;
    42 #endif
    43 
    4436namespace WebCore {
    45 
    46 #if PLATFORM(COCOA)
    47 class GraphicsContextGLIOSurfaceSwapChain;
    48 class IOSurface;
    49 #endif
    5037
    5138// A base class for RemoteGraphicsContextGL proxy side implementation
     
    6047    // Other WebCore::GraphicsContextGL overrides.
    6148    using GraphicsContextGL::isEnabled;
    62     PlatformLayer* platformLayer() const final;
    6349    ExtensionsGL& getExtensions() final;
    6450    void setContextVisibility(bool) final;
     
    7056    void markLayerComposited() final;
    7157
    72 #if ENABLE(VIDEO) && USE(AVFOUNDATION)
    73     GraphicsContextGLCV* asCV() final;
    74 #endif
    7558    // Other ExtensionGL overrides.
    7659    using ExtensionsGL::isEnabled;
     
    8467    void getnUniformivEXT(GCGLuint, GCGLint, GCGLsizei, GCGLint*) final;
    8568#endif
    86 #if ENABLE(MEDIA_STREAM)
    87     RefPtr<MediaSample> paintCompositedResultsToMediaSample() final;
    88 #endif
    8969
    9070protected:
     
    9474    virtual void notifyMarkContextChanged() = 0;
    9575
    96 #if PLATFORM(COCOA)
    97     RetainPtr<WebGLLayer> m_webGLLayer;
    98     std::unique_ptr<IOSurface> m_displayBuffer;
    99 #elif USE(GRAPHICS_LAYER_WC)
    100     void setPlatformLayer(PlatformLayerContainer&&);
    101     PlatformLayerContainer m_platformLayer;
    102 #endif
    10376private:
    104     void platformInitialize();
    105 
    10677    // Guarded by waitUntilInitialized().
    10778    HashSet<String> m_availableExtensions;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSampleAVFObjC.h

    r283605 r285990  
    4343    static Ref<MediaSampleAVFObjC> create(CMSampleBufferRef sample, VideoRotation rotation = VideoRotation::None, bool mirrored = false) { return adoptRef(*new MediaSampleAVFObjC(sample, rotation, mirrored)); }
    4444    static RefPtr<MediaSampleAVFObjC> createImageSample(PixelBuffer&&);
    45     static RefPtr<MediaSampleAVFObjC> createImageSample(RetainPtr<CVPixelBufferRef>&&, VideoRotation, bool mirrored);
     45    WEBCORE_EXPORT static RefPtr<MediaSampleAVFObjC> createImageSample(RetainPtr<CVPixelBufferRef>&&, VideoRotation, bool mirrored);
    4646
    4747    WEBCORE_EXPORT static void setAsDisplayImmediately(MediaSample&);
  • trunk/Source/WebCore/platform/graphics/cocoa/WebGLLayer.h

    r284371 r285990  
    2929
    3030// A layer class showing one IOSurface.
    31 @interface WebGLLayer : CALayer
     31WEBCORE_EXPORT @interface WebGLLayer : CALayer
    3232
    3333- (id)initWithDevicePixelRatio:(float)devicePixelRatio contentsOpaque:(bool)contentsOpaque;
  • trunk/Source/WebKit/ChangeLog

    r285986 r285990  
     12021-11-18  Kimmo Kinnunen  <kkinnunen@apple.com>
     2
     3        RemoteGraphicsContextGLProxyBase should not have platform-specific implementations
     4        https://bugs.webkit.org/show_bug.cgi?id=233175
     5
     6        Reviewed by Antti Koivisto.
     7
     8        Move platform-specific code from RemoteGraphicsContextGLProxyBase to
     9        WebKit::RemoteGraphicsContextGLProxyCocoa and WebKit::RemoteGraphicsContextGLProxyWC.
     10        The platform-specific code is trivial and anyway used by the WebKit side concrete classes.
     11
     12        * PlatformWin.cmake:
     13        * WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
     14        (WebKit::RemoteGraphicsContextGLProxy::RemoteGraphicsContextGLProxy):
     15        (WebKit::RemoteGraphicsContextGLProxy::create): Deleted.
     16        (WebKit::RemoteGraphicsContextGLProxy::prepareForDisplay): Deleted.
     17        * WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h:
     18        * WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm:
     19        (WebKit::RemoteGraphicsContextGLProxy::create):
     20        (WebKit::RemoteGraphicsContextGLProxy::prepareForDisplay): Deleted.
     21        * WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp: Added.
     22        (WebKit::RemoteGraphicsContextGLProxy::create):
     23
    1242021-11-18  Antoine Quint  <graouts@webkit.org>
    225
  • trunk/Source/WebKit/PlatformWin.cmake

    r285099 r285990  
    8383    UIProcess/win/WebView.cpp
    8484
     85    WebProcess/GPU/graphics/wc/RemoteGraphicsContextGLProxyWC.cpp
    8586    WebProcess/GPU/graphics/wc/RemoteWCLayerTreeHostProxy.cpp
    8687
  • trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp

    r285099 r285990  
    3636#include <WebCore/ImageBuffer.h>
    3737
    38 #if PLATFORM(COCOA)
    39 #include <WebCore/GraphicsContextCG.h>
    40 #include <WebCore/GraphicsContextGLIOSurfaceSwapChain.h>
    41 #endif
    42 
    43 #if USE(GRAPHICS_LAYER_WC)
    44 #include "WCPlatformLayerGCGL.h"
    45 #endif
    46 
    4738namespace WebKit {
    4839
    4940using namespace WebCore;
    50 
    51 RefPtr<RemoteGraphicsContextGLProxy> RemoteGraphicsContextGLProxy::create(const GraphicsContextGLAttributes& attributes, RenderingBackendIdentifier renderingBackend)
    52 {
    53     return adoptRef(new RemoteGraphicsContextGLProxy(WebProcess::singleton().ensureGPUProcessConnection(), attributes, renderingBackend));
    54 }
    5541
    5642static constexpr size_t defaultStreamSize = 1 << 21;
     
    6753    // during wait while in synchronous stream send. Should be fixed as part of https://bugs.webkit.org/show_bug.cgi?id=217211.
    6854    waitUntilInitialized();
    69 #if USE(GRAPHICS_LAYER_WC)
    70     setPlatformLayer(makeUnique<WCPlatformLayerGCGL>(m_graphicsContextGLIdentifier));
    71 #endif
    7255}
    7356
     
    8770        markContextLost();
    8871}
    89 
    90 #if !PLATFORM(COCOA)
    91 void RemoteGraphicsContextGLProxy::prepareForDisplay()
    92 {
    93     if (isContextLost())
    94         return;
    95     auto sendResult = sendSync(Messages::RemoteGraphicsContextGL::PrepareForDisplay(), Messages::RemoteGraphicsContextGL::PrepareForDisplay::Reply());
    96     if (!sendResult) {
    97         markContextLost();
    98         return;
    99     }
    100     markLayerComposited();
    101 }
    102 #endif
    10372
    10473void RemoteGraphicsContextGLProxy::ensureExtensionEnabled(const String& extension)
  • trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.h

    r278253 r285990  
    4848// RemoteGraphicsContextGL in GPU process.
    4949// The implementation is largely generated by running Tools/Scripts/generate-gpup-webgl.
    50 class RemoteGraphicsContextGLProxy final
     50class RemoteGraphicsContextGLProxy
    5151    : private IPC::MessageReceiver
    5252    , private GPUProcessConnection::Client
     
    5454public:
    5555    static RefPtr<RemoteGraphicsContextGLProxy> create(const WebCore::GraphicsContextGLAttributes&, RenderingBackendIdentifier);
    56     ~RemoteGraphicsContextGLProxy() final;
     56    ~RemoteGraphicsContextGLProxy();
    5757
    5858    // IPC::MessageReceiver overrides.
     
    6161    // RemoteGraphicsContextGLProxyBase overrides.
    6262    void reshape(int width, int height) final;
    63     void prepareForDisplay() final;
    6463    using WebCore::RemoteGraphicsContextGLProxyBase::isEnabled;
    6564    void ensureExtensionEnabled(const String& extension) final;
     
    320319
    321320protected:
     321    RemoteGraphicsContextGLProxy(GPUProcessConnection&, const WebCore::GraphicsContextGLAttributes&, RenderingBackendIdentifier);
     322
    322323    // RemoteGraphicsContextGLProxyBase overrides.
    323324    void waitUntilInitialized() final;
     
    339340    IPC::Connection& connection() const { return m_gpuProcessConnection->connection(); }
    340341
     342    GraphicsContextGLIdentifier m_graphicsContextGLIdentifier { GraphicsContextGLIdentifier::generate() };
    341343private:
    342344    // Messages to be received.
     
    351353    void abandonGpuProcess();
    352354
    353     RemoteGraphicsContextGLProxy(GPUProcessConnection&, const WebCore::GraphicsContextGLAttributes&, RenderingBackendIdentifier);
    354355    GPUProcessConnection* m_gpuProcessConnection;
    355356    bool m_didInitialize { false };
    356357    GCGLenum m_errorWhenContextIsLost = NO_ERROR;
    357     GraphicsContextGLIdentifier m_graphicsContextGLIdentifier { GraphicsContextGLIdentifier::generate() };
    358358    IPC::StreamClientConnection m_streamConnection;
    359359};
  • trunk/Source/WebKit/WebProcess/GPU/graphics/cocoa/RemoteGraphicsContextGLProxyCocoa.mm

    r284371 r285990  
    2828
    2929#if ENABLE(GPU_PROCESS) && ENABLE(WEBGL)
     30#import "GPUConnectionToWebProcess.h"
     31#import "GPUProcessConnection.h"
    3032#import "RemoteGraphicsContextGLMessages.h"
     33#import "WebProcess.h"
     34#import <WebCore/CVUtilities.h>
     35#import <WebCore/GraphicsContextCG.h>
     36#import <WebCore/GraphicsContextGLIOSurfaceSwapChain.h>
    3137#import <WebCore/IOSurface.h>
     38#import <WebCore/MediaSampleAVFObjC.h>
    3239#import <WebCore/WebGLLayer.h>
    3340#import <wtf/BlockObjCExceptions.h>
    3441
    3542namespace WebKit {
    36 using namespace WebCore;
    3743
    38 void RemoteGraphicsContextGLProxy::prepareForDisplay()
     44namespace {
     45
     46class RemoteGraphicsContextGLProxyCocoa final : public RemoteGraphicsContextGLProxy {
     47public:
     48    bool isValid() const { return m_webGLLayer; }
     49    WebCore::IOSurface* displayBuffer() const { return m_displayBuffer.get(); }
     50
     51    // RemoteGraphicsContextGLProxy overrides.
     52    PlatformLayer* platformLayer() const final { return m_webGLLayer.get(); }
     53    void prepareForDisplay() final;
     54#if ENABLE(VIDEO) && USE(AVFOUNDATION)
     55    WebCore::GraphicsContextGLCV* asCV() final { return nullptr; }
     56#endif
     57#if ENABLE(MEDIA_STREAM)
     58    RefPtr<WebCore::MediaSample> paintCompositedResultsToMediaSample() final;
     59#endif
     60private:
     61    RemoteGraphicsContextGLProxyCocoa(GPUProcessConnection&, const WebCore::GraphicsContextGLAttributes&, RenderingBackendIdentifier);
     62    RetainPtr<WebGLLayer> m_webGLLayer;
     63    std::unique_ptr<WebCore::IOSurface> m_displayBuffer;
     64    friend class RemoteGraphicsContextGLProxy;
     65};
     66
     67RemoteGraphicsContextGLProxyCocoa::RemoteGraphicsContextGLProxyCocoa(GPUProcessConnection& gpuProcessConnection, const WebCore::GraphicsContextGLAttributes& attributes, RenderingBackendIdentifier renderingBackend)
     68    : RemoteGraphicsContextGLProxy(gpuProcessConnection, attributes, renderingBackend)
     69{
     70    auto attrs = contextAttributes();
     71    BEGIN_BLOCK_OBJC_EXCEPTIONS
     72    m_webGLLayer = adoptNS([[WebGLLayer alloc] initWithDevicePixelRatio:attrs.devicePixelRatio contentsOpaque:!attrs.alpha]);
     73#ifndef NDEBUG
     74    [m_webGLLayer setName:@"WebGL Layer"];
     75#endif
     76    END_BLOCK_OBJC_EXCEPTIONS
     77}
     78
     79#if ENABLE(MEDIA_STREAM)
     80RefPtr<WebCore::MediaSample> RemoteGraphicsContextGLProxyCocoa::paintCompositedResultsToMediaSample()
     81{
     82    if (!m_displayBuffer)
     83        return nullptr;
     84    auto pixelBuffer = WebCore::createCVPixelBuffer(m_displayBuffer->surface());
     85    if (!pixelBuffer)
     86        return nullptr;
     87    return WebCore::MediaSampleAVFObjC::createImageSample(WTFMove(*pixelBuffer), WebCore::MediaSampleAVFObjC::VideoRotation::UpsideDown, true);
     88}
     89#endif
     90
     91void RemoteGraphicsContextGLProxyCocoa::prepareForDisplay()
    3992{
    4093    if (isContextLost())
     
    62115}
    63116
     117RefPtr<RemoteGraphicsContextGLProxy> RemoteGraphicsContextGLProxy::create(const WebCore::GraphicsContextGLAttributes& attributes, RenderingBackendIdentifier renderingBackend)
     118{
     119    auto context = adoptRef(new RemoteGraphicsContextGLProxyCocoa(WebProcess::singleton().ensureGPUProcessConnection(), attributes, renderingBackend));
     120    if (!context->isValid())
     121        return nullptr;
     122    return context;
     123}
     124
     125}
     126
    64127#endif
Note: See TracChangeset for help on using the changeset viewer.