Changeset 75988 in webkit
- Timestamp:
- Jan 17, 2011 5:46:53 PM (13 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r75987 r75988 1 2011-01-17 Adam Roben <aroben@apple.com> 2 3 Simplify WKCACFLayerRenderer's API 4 5 createRenderer/destroyRenderer are now hidden behind setHostWindow. 6 WKCACFLayerRendererClient::animationsStarted has been removed, as it 7 was never called. (The work it was supposed to do was already being 8 accomplished by WKCACFLayerRenderer::render telling each layer that 9 animations are starting.) 10 11 Fixes <http://webkit.org/b/52587> WKCACFLayerRenderer is hard to use 12 13 Reviewed by Chris Marrin. 14 15 * platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp: 16 (WebCore::MediaPlayerPrivateFullscreenWindow::createWindow): Moved the 17 call to setHostWindow here from the WM_CREATE handler. The WM_CREATE 18 handler was causing the Direct3D device to be created, but MSDN says 19 you shouldn't create a device while handling WM_CREATE. Removed 20 no-longer-needed call to createRenderer (setHostWindow does this now) 21 and the never-needed call to setNeedsDisplay (we never draw into the 22 root layer; this was just creating an unnecessary backing store the 23 size of the screen!). 24 (WebCore::MediaPlayerPrivateFullscreenWindow::wndProc): Moved WM_CREATE 25 code, as described above. Removed call to destroyRenderer when handling 26 WM_DESTROY; setHostWindow does this now. Fixed up our WM_PAINT handler 27 to do a synchronous paint and to clear our dirty region, while I was in 28 here. 29 30 * platform/graphics/win/WKCACFLayerRenderer.cpp: 31 (WebCore::WKCACFLayerRenderer::~WKCACFLayerRenderer): Changed to call 32 setHostWindow instead of destroyRenderer; the former calls the latter 33 if needed. 34 (WebCore::WKCACFLayerRenderer::setHostWindow): Moved here from the 35 header file. Destroys our old renderer (i.e., IDirect3DDevice9) if 36 we're losing our window, or creates a renderer if we're gaining a 37 window. 38 (WebCore::WKCACFLayerRenderer::createRenderer): Updated for WKSI function rename. 39 (WebCore::WKCACFLayerRenderer::destroyRenderer): Changed to clear the 40 D3D device from our context before releasing the device. 41 42 * platform/graphics/win/WKCACFLayerRenderer.h: Removed 43 WKCACFLayerRendererClient::animationsStarted. Removed setNeedsDisplay. 44 Make createRenderer, destroyRenderer, and renderSoon private. 45 1 46 2011-01-17 Adam Roben <aroben@apple.com> 2 47 -
trunk/Source/WebCore/platform/graphics/win/MediaPlayerPrivateFullscreenWindow.cpp
r75262 r75988 81 81 ASSERT(IsWindow(m_hwnd)); 82 82 83 #if USE(ACCELERATED_COMPOSITING) 84 m_layerRenderer->setHostWindow(m_hwnd); 85 #endif 86 83 87 ::SetFocus(m_hwnd); 84 88 } … … 140 144 case WM_CREATE: 141 145 m_hwnd = hWnd; 142 #if USE(ACCELERATED_COMPOSITING)143 m_layerRenderer->setHostWindow(m_hwnd);144 m_layerRenderer->createRenderer();145 if (m_rootChild)146 m_layerRenderer->setNeedsDisplay();147 #endif148 146 break; 149 147 case WM_DESTROY: 150 148 m_hwnd = 0; 151 149 #if USE(ACCELERATED_COMPOSITING) 152 m_layerRenderer->destroyRenderer();153 150 m_layerRenderer->setHostWindow(0); 154 151 #endif … … 170 167 case WM_PAINT: 171 168 #if USE(ACCELERATED_COMPOSITING) 172 m_layerRenderer->renderSoon(); 169 m_layerRenderer->paint(); 170 ::ValidateRect(m_hwnd, 0); 173 171 #endif 174 172 break; -
trunk/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.cpp
r75987 r75988 224 224 WKCACFLayerRenderer::~WKCACFLayerRenderer() 225 225 { 226 destroyRenderer();226 setHostWindow(0); 227 227 WKCACFContextFlusher::shared().removeContext(m_context); 228 228 wkCACFContextDestroy(m_context); 229 } 230 231 void WKCACFLayerRenderer::setHostWindow(HWND window) 232 { 233 if (window == m_hostWindow) 234 return; 235 236 if (m_hostWindow) 237 destroyRenderer(); 238 239 m_hostWindow = window; 240 241 if (m_hostWindow) 242 createRenderer(); 229 243 } 230 244 … … 251 265 WKCACFContextFlusher::shared().addContext(m_context); 252 266 renderSoon(); 253 }254 255 void WKCACFLayerRenderer::setNeedsDisplay(bool sync)256 {257 ASSERT(m_rootLayer);258 m_rootLayer->setNeedsDisplay(0);259 260 if (sync)261 syncCompositingStateSoon();262 else263 renderSoon();264 267 } 265 268 … … 328 331 initD3DGeometry(); 329 332 330 wkCACFContext InitializeD3DDevice(m_context, m_d3dDevice.get());333 wkCACFContextSetD3DDevice(m_context, m_d3dDevice.get()); 331 334 332 335 if (IsWindow(m_hostWindow)) … … 340 343 wkCACFContextSetLayer(m_context, m_rootLayer->platformLayer()); 341 344 345 wkCACFContextSetD3DDevice(m_context, 0); 342 346 m_d3dDevice = 0; 343 347 if (s_d3d) -
trunk/Source/WebCore/platform/graphics/win/WKCACFLayerRenderer.h
r75987 r75988 55 55 virtual ~WKCACFLayerRendererClient() { } 56 56 virtual bool shouldRender() const = 0; 57 virtual void animationsStarted(CFTimeInterval) { }58 57 virtual void syncCompositingState() { } 59 58 }; … … 73 72 void setRootChildLayer(PlatformCALayer*); 74 73 void layerTreeDidChange(); 75 void setNeedsDisplay(bool sync = false); 76 void setHostWindow(HWND window) { m_hostWindow = window; } 77 bool createRenderer(); 78 void destroyRenderer(); 74 void setHostWindow(HWND); 79 75 void paint(); 80 76 void resize(); 81 void renderSoon();82 77 void syncCompositingStateSoon(); 83 78 … … 89 84 WKCACFLayerRenderer(WKCACFLayerRendererClient*); 90 85 86 bool createRenderer(); 87 void destroyRenderer(); 88 void renderSoon(); 91 89 void renderTimerFired(Timer<WKCACFLayerRenderer>*); 92 90 -
trunk/Source/WebKit/win/ChangeLog
r75987 r75988 1 2011-01-17 Adam Roben <aroben@apple.com> 2 3 Update for WKCACFLayerRenderer changes 4 5 Fixes <http://webkit.org/b/52587> WKCACFLayerRenderer is hard to use 6 7 Reviewed by Chris Marrin. 8 9 * WebView.cpp: 10 (WebView::WebViewWndProc): Removed call to layerRendererBecameVisible 11 when handling WM_SHOWWINDOW. All this did was try to create the 12 renderer, but it had already been created in setAcceleratedCompositing, 13 so wasn't needed. 14 (WebView::setAcceleratedCompositing): Removed call to createRenderer; 15 setHostWindow does this for us now. 16 17 * WebView.h: Removed animationsStarted and layerRendererBecameVisible. 18 1 19 2011-01-17 Adam Roben <aroben@apple.com> 2 20 -
trunk/Source/WebKit/win/WebView.cpp
r75987 r75988 2136 2136 webView->deleteBackingStore(); 2137 2137 } 2138 #if USE(ACCELERATED_COMPOSITING)2139 else if (webView->isAcceleratedCompositing())2140 webView->layerRendererBecameVisible();2141 #endif2142 2138 break; 2143 2139 case WM_SETFOCUS: { … … 6287 6283 ASSERT(m_viewWindow); 6288 6284 m_layerRenderer->setHostWindow(m_viewWindow); 6289 m_layerRenderer->createRenderer();6290 6285 6291 6286 // FIXME: We could perhaps get better performance by never allowing this layer to … … 6313 6308 } 6314 6309 } 6315 6316 void WebView::layerRendererBecameVisible()6317 {6318 m_layerRenderer->createRenderer();6319 }6320 6310 #endif 6321 6311 … … 6514 6504 6515 6505 return !frameView->layoutPending(); 6516 }6517 6518 void WebView::animationsStarted(CFTimeInterval t)6519 {6520 // Tell the animation controller that its animations have started6521 m_page->mainFrame()->animation()->notifyAnimationStarted(0, t);6522 6506 } 6523 6507 -
trunk/Source/WebKit/win/WebView.h
r75987 r75988 950 950 // WKCACFLayerRendererClient 951 951 virtual bool shouldRender() const; 952 virtual void animationsStarted(CFTimeInterval);953 952 virtual void syncCompositingState(); 954 953 #endif … … 1057 1056 bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; } 1058 1057 void setAcceleratedCompositing(bool); 1059 void layerRendererBecameVisible();1060 1058 1061 1059 OwnPtr<WebCore::WKCACFLayerRenderer> m_layerRenderer; -
trunk/WebKitLibraries/ChangeLog
r75280 r75988 1 2011-01-17 Adam Roben <aroben@apple.com> 2 3 Make it possible to both set and clear a wkCACFContext's D3D device 4 5 Fixes <http://webkit.org/b/52587> WKCACFLayerRenderer is hard to use 6 7 Reviewed by Chris Marrin. 8 9 * win/include/WebKitSystemInterface/WebKitSystemInterface.h: 10 * win/lib/WebKitSystemInterface.lib: 11 1 12 2011-01-07 Chris Marrin <cmarrin@apple.com> 2 13 -
trunk/WebKitLibraries/win/include/WebKitSystemInterface/WebKitSystemInterface.h
r75275 r75988 153 153 void* wkCACFLayerGetContextUserData(CACFLayerRef); 154 154 155 void wkCACFContext InitializeD3DDevice(WKCACFContext*, IDirect3DDevice9*);155 void wkCACFContextSetD3DDevice(WKCACFContext*, IDirect3DDevice9*); 156 156 void wkCACFContextReleaseD3DResources(WKCACFContext*); 157 157
Note: See TracChangeset
for help on using the changeset viewer.