Changeset 71210 in webkit
- Timestamp:
- Nov 2, 2010 9:16:58 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r71209 r71210 1 2010-11-02 Al Patrick <apatrick@chromium.org> 2 3 Reviewed by Kenneth Russell. 4 5 Added PluginLayerChromium, which composites plugin instances that have an associated OpenGL backing texture. 6 7 https://bugs.webkit.org/show_bug.cgi?id=48032 8 9 * WebCore.gypi: 10 * loader/SubframeLoader.cpp 11 (WebCore::SubframeLoader::loadPlugin): 12 * platform/graphics/chromium/LayerChromium.cpp: 13 (WebCore::LayerChromium::setNeedsDisplay): 14 * platform/graphics/chromium/LayerRendererChromium.cpp: 15 (WebCore::LayerRendererChromium::initializeSharedObjects): 16 (WebCore::LayerRendererChromium::cleanupSharedObjects): 17 * platform/graphics/chromium/LayerRendererChromium.h: 18 (WebCore::LayerRendererChromium::pluginLayerSharedValues): 19 * platform/graphics/chromium/PluginLayerChromium.cpp: Added. 20 (WebCore::PluginLayerChromium::SharedValues::SharedValues): 21 (WebCore::PluginLayerChromium::SharedValues::~SharedValues): 22 (WebCore::PluginLayerChromium::create): 23 (WebCore::PluginLayerChromium::PluginLayerChromium): 24 (WebCore::PluginLayerChromium::updateContents): 25 (WebCore::PluginLayerChromium::draw): 26 * platform/graphics/chromium/PluginLayerChromium.h: Added. 27 (WebCore::PluginLayerChromium::drawsContent): 28 (WebCore::PluginLayerChromium::setTextureId): 29 (WebCore::PluginLayerChromium::SharedValues::shaderProgram): 30 (WebCore::PluginLayerChromium::SharedValues::shaderSamplerLocation): 31 (WebCore::PluginLayerChromium::SharedValues::shaderMatrixLocation): 32 (WebCore::PluginLayerChromium::SharedValues::shaderAlphaLocation): 33 (WebCore::PluginLayerChromium::SharedValues::initialized): 34 1 35 2010-11-02 James Simonsen <simonjam@chromium.org> 2 36 -
trunk/WebCore/WebCore.gypi
r71143 r71210 2456 2456 'platform/graphics/chromium/MediaPlayerPrivateChromium.h', 2457 2457 'platform/graphics/chromium/PlatformIcon.h', 2458 'platform/graphics/chromium/PluginLayerChromium.cpp', 2459 'platform/graphics/chromium/PluginLayerChromium.h', 2458 2460 'platform/graphics/chromium/SimpleFontDataChromiumWin.cpp', 2459 2461 'platform/graphics/chromium/SimpleFontDataLinux.cpp', -
trunk/WebCore/loader/SubframeLoader.cpp
r69938 r71210 367 367 renderer->setWidget(widget); 368 368 m_containsPlugins = true; 369 370 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 369 370 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO) || ENABLE(3D_PLUGIN) 371 371 pluginElement->setNeedsStyleRecalc(SyntheticStyleChange); 372 372 #endif -
trunk/WebCore/platform/graphics/chromium/LayerChromium.cpp
r70543 r71210 371 371 m_dirtyRect.setSize(m_bounds); 372 372 m_contentsDirty = true; 373 setNeedsCommit(); 373 374 } 374 375 -
trunk/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
r70010 r71210 731 731 m_canvasLayerSharedValues = adoptPtr(new CanvasLayerChromium::SharedValues(m_context.get())); 732 732 m_videoLayerSharedValues = adoptPtr(new VideoLayerChromium::SharedValues(m_context.get())); 733 if (!m_layerSharedValues->initialized() || !m_contentLayerSharedValues->initialized() || !m_canvasLayerSharedValues->initialized() || !m_videoLayerSharedValues->initialized()) { 733 m_pluginLayerSharedValues = adoptPtr(new PluginLayerChromium::SharedValues(m_context.get())); 734 735 if (!m_layerSharedValues->initialized() || !m_contentLayerSharedValues->initialized() || !m_canvasLayerSharedValues->initialized() 736 || !m_videoLayerSharedValues->initialized() || !m_pluginLayerSharedValues->initialized()) { 734 737 cleanupSharedObjects(); 735 738 return false; … … 747 750 m_canvasLayerSharedValues.clear(); 748 751 m_videoLayerSharedValues.clear(); 752 m_pluginLayerSharedValues.clear(); 749 753 750 754 if (m_scrollShaderProgram) { -
trunk/WebCore/platform/graphics/chromium/LayerRendererChromium.h
r70543 r71210 39 39 #include "IntRect.h" 40 40 #include "LayerChromium.h" 41 #include "PluginLayerChromium.h" 41 42 #include "SkBitmap.h" 42 43 #include "VideoLayerChromium.h" … … 108 109 const CanvasLayerChromium::SharedValues* canvasLayerSharedValues() const { return m_canvasLayerSharedValues.get(); } 109 110 const VideoLayerChromium::SharedValues* videoLayerSharedValues() const { return m_videoLayerSharedValues.get(); } 111 const PluginLayerChromium::SharedValues* pluginLayerSharedValues() const { return m_pluginLayerSharedValues.get(); } 110 112 111 113 void resizeOnscreenContent(const IntSize&); … … 181 183 OwnPtr<CanvasLayerChromium::SharedValues> m_canvasLayerSharedValues; 182 184 OwnPtr<VideoLayerChromium::SharedValues> m_videoLayerSharedValues; 185 OwnPtr<PluginLayerChromium::SharedValues> m_pluginLayerSharedValues; 183 186 184 187 RefPtr<GraphicsContext3D> m_context; -
trunk/WebKit/chromium/ChangeLog
r71206 r71210 1 2010-11-02 Al Patrick <apatrick@chromium.org> 2 3 Reviewed by Kenneth Russell. 4 5 [chromium] Plugin instances can propagate the ID of the OpenGL texture they render to. 6 7 https://bugs.webkit.org/show_bug.cgi?id=48032 8 9 * public/WebPlugin.h: 10 (WebKit::WebPlugin::getBackingTextureId): 11 * public/WebPluginContainer.h: 12 (WebKit::WebPluginContainer::commitBackingTexture): 13 * src/WebPluginContainerImpl.cpp: 14 (WebKit::WebPluginContainerImpl::commitBackingTexture): 15 (WebKit::WebPluginContainerImpl::platformLayer): 16 (WebKit::WebPluginContainerImpl::WebPluginContainerImpl): 17 * src/WebPluginContainerImpl.h: 18 1 19 2010-11-02 Kavita Kanetkar <kkanetkar@chromium.org> 2 20 -
trunk/WebKit/chromium/public/WebPlugin.h
r69154 r71210 65 65 const WebRect& frameRect, const WebRect& clipRect, 66 66 const WebVector<WebRect>& cutOutsRects, bool isVisible) = 0; 67 68 // If the plugin instance is backed by an OpenGL texture, return its ID in the 69 // compositors namespace. Otherwise return 0. Returns 0 by default. 70 virtual unsigned getBackingTextureId() { return 0; } 67 71 68 72 virtual void updateFocus(bool) = 0; -
trunk/WebKit/chromium/public/WebPluginContainer.h
r71186 r71210 55 55 // WebPlugin::updateGeometry. 56 56 virtual void reportGeometry() = 0; 57 57 58 // Called when the backing texture is ready to be composited. 59 virtual void commitBackingTexture() {} 60 58 61 // Drop any references to script objects allocated by the plugin. 59 62 // These are objects derived from WebPlugin::scriptableObject. This is -
trunk/WebKit/chromium/src/WebPluginContainerImpl.cpp
r71186 r71210 34 34 #include "Chrome.h" 35 35 #include "ChromeClientImpl.h" 36 #include "PluginLayerChromium.h" 36 37 #include "WebClipboard.h" 37 38 #include "WebCursorInfo.h" … … 307 308 } 308 309 310 void WebPluginContainerImpl::commitBackingTexture() 311 { 312 #if USE(ACCELERATED_COMPOSITING) 313 if (platformLayer()) 314 platformLayer()->setNeedsDisplay(); 315 #endif 316 } 317 309 318 void WebPluginContainerImpl::clearScriptObjects() 310 319 { … … 413 422 } 414 423 424 #if USE(ACCELERATED_COMPOSITING) 425 WebCore::LayerChromium* WebPluginContainerImpl::platformLayer() const 426 { 427 // FIXME: In the event of a context lost, the texture needs to be recreated on the compositor's 428 // context and rebound to the platform layer here. 429 unsigned backingTextureId = m_webPlugin->getBackingTextureId(); 430 if (!backingTextureId) 431 return 0; 432 433 m_platformLayer->setTextureId(backingTextureId); 434 435 return m_platformLayer.get(); 436 } 437 #endif 438 415 439 // Private methods ------------------------------------------------------------- 440 441 WebPluginContainerImpl::WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) 442 : WebCore::PluginViewBase(0) 443 , m_element(element) 444 , m_webPlugin(webPlugin) 445 #if USE(ACCELERATED_COMPOSITING) 446 , m_platformLayer(PluginLayerChromium::create(0)) 447 #endif 448 { 449 } 416 450 417 451 WebPluginContainerImpl::~WebPluginContainerImpl() -
trunk/WebKit/chromium/src/WebPluginContainerImpl.h
r71186 r71210 32 32 #define WebPluginContainerImpl_h 33 33 34 #include "PluginViewBase.h" 34 35 #include "WebPluginContainer.h" 36 #include "Widget.h" 35 37 36 #include "Widget.h"37 38 #include <wtf/PassRefPtr.h> 38 39 #include <wtf/Vector.h> … … 44 45 class IntRect; 45 46 class KeyboardEvent; 47 class LayerChromium; 46 48 class MouseEvent; 49 class PluginLayerChromium; 47 50 class ResourceError; 48 51 class ResourceResponse; … … 55 58 class WebPluginLoadObserver; 56 59 57 class WebPluginContainerImpl : public WebCore:: Widget, public WebPluginContainer {60 class WebPluginContainerImpl : public WebCore::PluginViewBase, public WebPluginContainer { 58 61 public: 59 62 static PassRefPtr<WebPluginContainerImpl> create(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) … … 82 85 virtual void scrollRect(int dx, int dy, const WebRect&); 83 86 virtual void reportGeometry(); 87 virtual void commitBackingTexture(); 84 88 virtual void clearScriptObjects(); 85 89 virtual NPObject* scriptableObjectForElement(); 86 90 virtual WebString executeScriptURL(const WebURL&, bool popupsAllowed); 87 91 virtual void loadFrameRequest(const WebURLRequest&, const WebString& target, bool notifyNeeded, void* notifyData); 88 virtual void zoomLevelChanged(double zoomLevel); 92 virtual void zoomLevelChanged(double zoomLevel); 89 93 90 94 // This cannot be null. … … 119 123 void willDestroyPluginLoadObserver(WebPluginLoadObserver*); 120 124 125 #if USE(ACCELERATED_COMPOSITING) 126 virtual WebCore::LayerChromium* platformLayer() const; 127 #endif 128 121 129 private: 122 WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin) 123 : m_element(element) 124 , m_webPlugin(webPlugin) { } 130 WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin); 125 131 ~WebPluginContainerImpl(); 126 132 … … 140 146 WebPlugin* m_webPlugin; 141 147 Vector<WebPluginLoadObserver*> m_pluginLoadObservers; 148 149 #if USE(ACCELERATED_COMPOSITING) 150 RefPtr<WebCore::PluginLayerChromium> m_platformLayer; 151 #endif 142 152 }; 143 153
Note: See TracChangeset
for help on using the changeset viewer.