Skip to content
  • aroben@apple.com's avatar
    Simplify WKCACFLayerRenderer's API · 07b671ba
    aroben@apple.com authored
    createRenderer/destroyRenderer are now hidden behind setHostWindow.
    WKCACFLayerRendererClient::animationsStarted has been removed, as it
    was never called. (The work it was supposed to do was already being
    accomplished by WKCACFLayerRenderer::render telling each layer that
    animations are starting.)
    
    Fixes <http://webkit.org/b/52587> WKCACFLayerRenderer is hard to use
    
    Reviewed by Chris Marrin.
    
    Source/WebCore:
    
    * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp:
    (WebCore::MediaPlayerPrivateFullscreenWindow::createWindow): Moved the
    call to setHostWindow here from the WM_CREATE handler. The WM_CREATE
    handler was causing the Direct3D device to be created, but MSDN says
    you shouldn't create a device while handling WM_CREATE. Removed
    no-longer-needed call to createRenderer (setHostWindow does this now)
    and the never-needed call to setNeedsDisplay (we never draw into the
    root layer; this was just creating an unnecessary backing store the
    size of the screen!).
    (WebCore::MediaPlayerPrivateFullscreenWindow::wndProc): Moved WM_CREATE
    code, as described above. Removed call to destroyRenderer when handling
    WM_DESTROY; setHostWindow does this now. Fixed up our WM_PAINT handler
    to do a synchronous paint and to clear our dirty region, while I was in
    here.
    
    * platform/graphics/win/WKCACFLayerRenderer.cpp:
    (WebCore::WKCACFLayerRenderer::~WKCACFLayerRenderer): Changed to call
    setHostWindow instead of destroyRenderer; the former calls the latter
    if needed.
    (WebCore::WKCACFLayerRenderer::setHostWindow): Moved here from the
    header file. Destroys our old renderer (i.e., IDirect3DDevice9) if
    we're losing our window, or creates a renderer if we're gaining a
    window.
    (WebCore::WKCACFLayerRenderer::createRenderer): Updated for WKSI function rename.
    (WebCore::WKCACFLayerRenderer::destroyRenderer): Changed to clear the
    D3D device from our context before releasing the device.
    
    * platform/graphics/win/WKCACFLayerRenderer.h: Removed
    WKCACFLayerRendererClient::animationsStarted. Removed setNeedsDisplay.
    Make createRenderer, destroyRenderer, and renderSoon private.
    
    WebKit/win:
    
    Update for WKCACFLayerRenderer changes
    
    * WebView.cpp:
    (WebView::WebViewWndProc): Removed call to layerRendererBecameVisible
    when handling WM_SHOWWINDOW. All this did was try to create the
    renderer, but it had already been created in setAcceleratedCompositing,
    so wasn't needed.
    (WebView::setAcceleratedCompositing): Removed call to createRenderer;
    setHostWindow does this for us now.
    
    * WebView.h: Removed animationsStarted and layerRendererBecameVisible.
    
    WebKitLibraries:
    
    Make it possible to both set and clear a wkCACFContext's D3D device
    
    * win/include/WebKitSystemInterface/WebKitSystemInterface.h:
    * win/lib/WebKitSystemInterface.lib:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75988 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    07b671ba