Changeset 118750 in webkit
- Timestamp:
- May 29, 2012 4:14:29 AM (12 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 9 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r118701 r118750 1 2012-05-29 Arvid Nilsson <anilsson@rim.com> 2 3 [BlackBerry] WebOverlay API 4 https://bugs.webkit.org/show_bug.cgi?id=87603 5 6 Reviewed by Rob Buis. 7 8 Add WebOverlay related files to the build system. 9 10 PR #156812 11 12 * PlatformBlackBerry.cmake: 13 1 14 2012-05-28 Arvid Nilsson <anilsson@rim.com> 2 15 -
trunk/Source/WebKit/PlatformBlackBerry.cmake
r118701 r118750 48 48 blackberry/Api/BackingStore.cpp 49 49 blackberry/Api/BlackBerryGlobal.cpp 50 blackberry/Api/Web String.cpp50 blackberry/Api/WebAnimation.cpp 51 51 blackberry/Api/WebKitMIMETypeConverter.cpp 52 52 blackberry/Api/WebKitTextCodec.cpp 53 blackberry/Api/WebOverlay.cpp 54 blackberry/Api/WebOverlayOverride.cpp 53 55 blackberry/Api/WebPage.cpp 54 56 blackberry/Api/WebPageCompositor.cpp 55 57 blackberry/Api/WebPageGroupLoadDeferrer.cpp 56 58 blackberry/Api/WebSettings.cpp 59 blackberry/Api/WebString.cpp 57 60 blackberry/Api/WebViewportArguments.cpp 58 61 blackberry/WebCoreSupport/AboutData.cpp -
trunk/Source/WebKit/blackberry/Api/WebPage.cpp
r118719 r118750 117 117 #endif 118 118 #include "WebKitVersion.h" 119 #include "WebOverlay.h" 120 #include "WebOverlay_p.h" 119 121 #include "WebPageClient.h" 120 122 #include "WebSocket.h" … … 6207 6209 } 6208 6210 6211 void WebPage::addOverlay(WebOverlay* overlay) 6212 { 6213 #if USE(ACCELERATED_COMPOSITING) 6214 if (overlay->d->graphicsLayer()) { 6215 overlay->d->setPage(d); 6216 d->overlayLayer()->addChild(overlay->d->graphicsLayer()); 6217 } 6218 #endif 6219 } 6220 6221 void WebPage::removeOverlay(WebOverlay* overlay) 6222 { 6223 #if USE(ACCELERATED_COMPOSITING) 6224 if (overlay->d->graphicsLayer() == d->overlayLayer()) { 6225 overlay->removeFromParent(); 6226 overlay->d->clear(); 6227 overlay->d->setPage(0); 6228 } 6229 #endif 6230 } 6231 6232 void WebPage::addCompositingThreadOverlay(WebOverlay* overlay) 6233 { 6234 #if USE(ACCELERATED_COMPOSITING) 6235 ASSERT(userInterfaceThreadMessageClient()->isCurrentThread()); 6236 overlay->d->setPage(d); 6237 d->compositor()->addOverlay(overlay->d->layerCompositingThread()); 6238 #endif 6239 } 6240 6241 void WebPage::removeCompositingThreadOverlay(WebOverlay* overlay) 6242 { 6243 #if USE(ACCELERATED_COMPOSITING) 6244 ASSERT(userInterfaceThreadMessageClient()->isCurrentThread()); 6245 d->compositor()->removeOverlay(overlay->d->layerCompositingThread()); 6246 overlay->d->clear(); 6247 overlay->d->setPage(0); 6248 #endif 6249 } 6250 6209 6251 void WebPage::popupOpened(PagePopupBlackBerry* webPopup) 6210 6252 { -
trunk/Source/WebKit/blackberry/Api/WebPage.h
r118701 r118750 63 63 class BackingStorePrivate; 64 64 class RenderQueue; 65 class WebOverlay; 65 66 class WebPageClient; 66 67 class WebPageCompositor; … … 339 340 void setTapHighlight(WebTapHighlight*); 340 341 342 // Adds an overlay that can be modified on the WebKit thread, and 343 // whose attributes can be overridden on the compositing thread. 344 void addOverlay(WebOverlay*); 345 void removeOverlay(WebOverlay*); 346 347 // Adds an overlay that can only be modified on the compositing thread. 348 void addCompositingThreadOverlay(WebOverlay*); 349 void removeCompositingThreadOverlay(WebOverlay*); 350 341 351 // Popup client 342 352 void initPopupWebView(BlackBerry::WebKit::WebPage*); -
trunk/Source/WebKit/blackberry/Api/WebPageCompositor.cpp
r118704 r118750 84 84 // WebPageCompositorClient (m_client) indicates this is the case, so 85 85 // create a LayerRenderer if there are layers or if there's a client. 86 if (!m_rootLayer && !m_overlayLayer && !m_c lient)86 if (!m_rootLayer && !m_overlayLayer && !m_compositingThreadOverlayLayer && !m_client) 87 87 return; 88 88 … … 102 102 if (m_overlayLayer) 103 103 m_layerRenderer->prepareFrame(animationTime, m_overlayLayer.get()); 104 if (m_compositingThreadOverlayLayer) 105 m_layerRenderer->prepareFrame(animationTime, m_compositingThreadOverlayLayer.get()); 104 106 } 105 107 … … 129 131 m_webPage->m_backingStore->d->compositeContents(m_layerRenderer.get(), transform, contents); 130 132 133 compositeLayers(transform); 134 } 135 136 void WebPageCompositorPrivate::compositeLayers(const TransformationMatrix& transform) 137 { 131 138 if (m_rootLayer) 132 139 m_layerRenderer->compositeLayers(transform, m_rootLayer.get()); 133 140 if (m_overlayLayer) 134 141 m_layerRenderer->compositeLayers(transform, m_overlayLayer.get()); 142 if (m_compositingThreadOverlayLayer) 143 m_layerRenderer->compositeLayers(transform, m_compositingThreadOverlayLayer.get()); 135 144 136 145 m_lastCompositingResults = m_layerRenderer->lastRenderingResults(); … … 150 159 { 151 160 // Is there anything to draw? 152 if (!m_rootLayer && !m_overlayLayer )161 if (!m_rootLayer && !m_overlayLayer && !m_compositingThreadOverlayLayer) 153 162 return false; 154 163 … … 178 187 TransformationMatrix transform = LayerRenderer::orthoMatrix(0, contents.width(), contents.height(), 0, -1000, 1000); 179 188 transform.translate3d(-contents.x(), -contents.y(), 0); 180 if (m_rootLayer) 181 m_layerRenderer->compositeLayers(transform, m_rootLayer.get()); 182 if (m_overlayLayer) 183 m_layerRenderer->compositeLayers(transform, m_overlayLayer.get()); 184 185 m_lastCompositingResults = m_layerRenderer->lastRenderingResults(); 186 187 if (m_lastCompositingResults.needsAnimationFrame) { 188 Platform::AnimationFrameRateController::instance()->addClient(this); 189 m_webPage->updateDelegatedOverlays(); 190 } 189 compositeLayers(transform); 191 190 192 191 return true; … … 227 226 228 227 m_client = 0; 228 } 229 230 void WebPageCompositorPrivate::addOverlay(LayerCompositingThread* layer) 231 { 232 if (!m_compositingThreadOverlayLayer) 233 m_compositingThreadOverlayLayer = LayerCompositingThread::create(LayerData::CustomLayer, 0); 234 m_compositingThreadOverlayLayer->addSublayer(layer); 235 } 236 237 void WebPageCompositorPrivate::removeOverlay(LayerCompositingThread* layer) 238 { 239 if (layer->superlayer() != m_compositingThreadOverlayLayer) 240 return; 241 242 layer->removeFromSuperlayer(); 243 244 if (m_compositingThreadOverlayLayer && m_compositingThreadOverlayLayer->getSublayers().isEmpty()) 245 m_compositingThreadOverlayLayer.clear(); 229 246 } 230 247 -
trunk/Source/WebKit/blackberry/Api/WebPageCompositor_p.h
r118704 r118750 68 68 void setOverlayLayer(WebCore::LayerCompositingThread*); 69 69 70 WebCore::LayerCompositingThread* compositingThreadOverlayLayer() const { return m_compositingThreadOverlayLayer.get(); } 71 70 72 bool drawsRootLayer() const; 71 73 void setDrawsRootLayer(bool drawsRootLayer) { m_drawsRootLayer = drawsRootLayer; } … … 90 92 void compositorDestroyed(); 91 93 94 void addOverlay(WebCore::LayerCompositingThread*); 95 void removeOverlay(WebCore::LayerCompositingThread*); 96 92 97 protected: 93 98 WebPageCompositorPrivate(WebPagePrivate*, WebPageCompositorClient*); … … 95 100 private: 96 101 void animationFrameChanged(); 102 void compositeLayers(const WebCore::TransformationMatrix&); 97 103 98 104 WebPageCompositorClient* m_client; … … 102 108 RefPtr<WebCore::LayerCompositingThread> m_rootLayer; 103 109 RefPtr<WebCore::LayerCompositingThread> m_overlayLayer; 110 RefPtr<WebCore::LayerCompositingThread> m_compositingThreadOverlayLayer; 104 111 WebCore::IntRect m_layoutRectForCompositing; 105 112 WebCore::IntSize m_contentsSizeForCompositing; -
trunk/Source/WebKit/blackberry/ChangeLog
r118719 r118750 1 2012-05-29 Arvid Nilsson <anilsson@rim.com> 2 3 [BlackBerry] WebOverlay API 4 https://bugs.webkit.org/show_bug.cgi?id=87603 5 6 Reviewed by Rob Buis. 7 8 This new API makes it possible to leverage the BlackBerry accelerated 9 compositing implementation to draw, transform and fluidly animate 10 overlays in the embedding library or application. 11 12 A WebOverlay has an affinity for the thread where it was created. If 13 the current thread is the WebKit thread, use WebPage::addOverlay() to 14 add it to the page, and manipulate it only from the WebKit thread, with 15 exception of the "override" functionality which can be used from the 16 compositing thread. If the current thread is the compositing thread, 17 use WebPage::addCompositingThreadOverlay() to add it to the page, and 18 only manipulate it on the compositing thread. 19 20 A WebOverlay can be painted using Skia, or its contents can be set to 21 an image or a solid color. 22 23 PR #156812 24 25 * Api/WebAnimation.cpp: Added. 26 (WebKit): 27 (BlackBerry::WebKit::WebAnimation::fadeAnimation): 28 (BlackBerry::WebKit::WebAnimation::name): 29 (BlackBerry::WebKit::WebAnimation::WebAnimation): 30 (BlackBerry::WebKit::WebAnimation::~WebAnimation): 31 (BlackBerry::WebKit::WebAnimation::operator=): 32 * Api/WebAnimation.h: Added. 33 (WebKit): 34 * Api/WebAnimation_p.h: Added. 35 (WebKit): 36 (WebAnimationPrivate): 37 (BlackBerry::WebKit::WebAnimationPrivate::WebAnimationPrivate): 38 * Api/WebOverlay.cpp: Added. 39 (WebKit): 40 (BlackBerry::WebKit::WebOverlay::WebOverlay): 41 (BlackBerry::WebKit::WebOverlay::~WebOverlay): 42 (BlackBerry::WebKit::WebOverlay::position): 43 (BlackBerry::WebKit::WebOverlay::setPosition): 44 (BlackBerry::WebKit::WebOverlay::anchorPoint): 45 (BlackBerry::WebKit::WebOverlay::setAnchorPoint): 46 (BlackBerry::WebKit::WebOverlay::size): 47 (BlackBerry::WebKit::WebOverlay::setSize): 48 (BlackBerry::WebKit::WebOverlay::sizeIsScaleInvariant): 49 (BlackBerry::WebKit::WebOverlay::setSizeIsScaleInvariant): 50 (BlackBerry::WebKit::WebOverlay::transform): 51 (BlackBerry::WebKit::WebOverlay::setTransform): 52 (BlackBerry::WebKit::WebOverlay::opacity): 53 (BlackBerry::WebKit::WebOverlay::setOpacity): 54 (BlackBerry::WebKit::WebOverlay::addAnimation): 55 (BlackBerry::WebKit::WebOverlay::removeAnimation): 56 (BlackBerry::WebKit::WebOverlay::parent): 57 (BlackBerry::WebKit::WebOverlay::addChild): 58 (BlackBerry::WebKit::WebOverlay::removeFromParent): 59 (BlackBerry::WebKit::WebOverlay::setContentsToImage): 60 (BlackBerry::WebKit::WebOverlay::setContentsToColor): 61 (BlackBerry::WebKit::WebOverlay::setDrawsContent): 62 (BlackBerry::WebKit::WebOverlay::invalidate): 63 (BlackBerry::WebKit::WebOverlay::setClient): 64 (BlackBerry::WebKit::WebOverlay::override): 65 (BlackBerry::WebKit::WebOverlay::resetOverrides): 66 (BlackBerry::WebKit::WebOverlayPrivate::page): 67 (BlackBerry::WebKit::WebOverlayPrivate::override): 68 (BlackBerry::WebKit::WebOverlayPrivate::drawContents): 69 (BlackBerry::WebKit::WebOverlayPrivate::scheduleCompositingRun): 70 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::WebOverlayPrivateWebKitThread): 71 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::override): 72 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::position): 73 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setPosition): 74 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::anchorPoint): 75 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setAnchorPoint): 76 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::size): 77 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setSize): 78 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::sizeIsScaleInvariant): 79 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setSizeIsScaleInvariant): 80 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::transform): 81 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setTransform): 82 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::opacity): 83 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setOpacity): 84 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::addAnimation): 85 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::removeAnimation): 86 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::addChild): 87 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::removeFromParent): 88 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setContentsToImage): 89 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setContentsToColor): 90 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::setDrawsContent): 91 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::clear): 92 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::invalidate): 93 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::resetOverrides): 94 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::notifySyncRequired): 95 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::paintContents): 96 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::WebOverlayLayerCompositingThreadClient): 97 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::~WebOverlayLayerCompositingThreadClient): 98 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::setDrawsContent): 99 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::invalidate): 100 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::setContents): 101 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::setContentsToColor): 102 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::layerCompositingThreadDestroyed): 103 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::layerVisibilityChanged): 104 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::uploadTexturesIfNeeded): 105 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::drawTextures): 106 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::deleteTextures): 107 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::WebOverlayPrivateCompositingThread): 108 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::~WebOverlayPrivateCompositingThread): 109 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setClient): 110 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::override): 111 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::position): 112 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setPosition): 113 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::anchorPoint): 114 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setAnchorPoint): 115 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::size): 116 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setSize): 117 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::sizeIsScaleInvariant): 118 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setSizeIsScaleInvariant): 119 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::transform): 120 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setTransform): 121 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::opacity): 122 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setOpacity): 123 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::addAnimation): 124 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::removeAnimation): 125 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::addChild): 126 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::removeFromParent): 127 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setContentsToImage): 128 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setContentsToColor): 129 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::setDrawsContent): 130 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::clear): 131 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::invalidate): 132 (BlackBerry::WebKit::WebOverlayPrivateCompositingThread::resetOverrides): 133 * Api/WebOverlay.h: Added. 134 (WebCore): 135 (WebKit): 136 * Api/WebOverlayClient.h: Added. 137 (WebKit): 138 * Api/WebOverlayOverride.cpp: Added. 139 (WebKit): 140 (BlackBerry::WebKit::WebOverlayOverride::WebOverlayOverride): 141 (BlackBerry::WebKit::WebOverlayOverride::~WebOverlayOverride): 142 (BlackBerry::WebKit::WebOverlayOverride::setPosition): 143 (BlackBerry::WebKit::WebOverlayOverride::setAnchorPoint): 144 (BlackBerry::WebKit::WebOverlayOverride::setSize): 145 (BlackBerry::WebKit::WebOverlayOverride::setTransform): 146 (BlackBerry::WebKit::WebOverlayOverride::setOpacity): 147 (BlackBerry::WebKit::WebOverlayOverride::addAnimation): 148 (BlackBerry::WebKit::WebOverlayOverride::removeAnimation): 149 * Api/WebOverlayOverride.h: Added. 150 (WebKit): 151 * Api/WebOverlay_p.h: Added. 152 (WTF): 153 (WebCore): 154 (WebKit): 155 (WebOverlayPrivate): 156 (BlackBerry::WebKit::WebOverlayPrivate::WebOverlayPrivate): 157 (BlackBerry::WebKit::WebOverlayPrivate::~WebOverlayPrivate): 158 (BlackBerry::WebKit::WebOverlayPrivate::setPage): 159 (BlackBerry::WebKit::WebOverlayPrivate::setClient): 160 (BlackBerry::WebKit::WebOverlayPrivate::layerCompositingThread): 161 (BlackBerry::WebKit::WebOverlayPrivate::graphicsLayer): 162 (WebOverlayPrivateWebKitThread): 163 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::graphicsLayer): 164 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::notifyAnimationStarted): 165 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::showDebugBorders): 166 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::showRepaintCounter): 167 (BlackBerry::WebKit::WebOverlayPrivateWebKitThread::contentsVisible): 168 (WebOverlayLayerCompositingThreadClient): 169 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::setLayer): 170 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::setClient): 171 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::drawsContent): 172 (BlackBerry::WebKit::WebOverlayLayerCompositingThreadClient::contents): 173 (WebOverlayPrivateCompositingThread): 174 * Api/WebPage.cpp: 175 (BlackBerry::WebKit::WebPage::addOverlay): 176 (WebKit): 177 (BlackBerry::WebKit::WebPage::removeOverlay): 178 (BlackBerry::WebKit::WebPage::addCompositingThreadOverlay): 179 (BlackBerry::WebKit::WebPage::removeCompositingThreadOverlay): 180 * Api/WebPage.h: 181 (WebKit): 182 * Api/WebPageCompositor.cpp: 183 (BlackBerry::WebKit::WebPageCompositorPrivate::prepareFrame): 184 (BlackBerry::WebKit::WebPageCompositorPrivate::render): 185 (WebKit): 186 (BlackBerry::WebKit::WebPageCompositorPrivate::compositeLayers): 187 (BlackBerry::WebKit::WebPageCompositorPrivate::drawLayers): 188 (BlackBerry::WebKit::WebPageCompositorPrivate::addOverlay): 189 (BlackBerry::WebKit::WebPageCompositorPrivate::removeOverlay): 190 * Api/WebPageCompositor_p.h: 191 (BlackBerry::WebKit::WebPageCompositorPrivate::compositingThreadOverlayLayer): 192 (WebPageCompositorPrivate): 193 1 194 2012-05-28 Jonathan Dong <jonathan.dong@torchmobile.com.cn> 2 195
Note: See TracChangeset
for help on using the changeset viewer.