diff options
Diffstat (limited to 'chrome/renderer/webplugin_delegate_proxy.h')
-rw-r--r-- | chrome/renderer/webplugin_delegate_proxy.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/chrome/renderer/webplugin_delegate_proxy.h b/chrome/renderer/webplugin_delegate_proxy.h index d9cb3b3..02dd644 100644 --- a/chrome/renderer/webplugin_delegate_proxy.h +++ b/chrome/renderer/webplugin_delegate_proxy.h @@ -22,6 +22,11 @@ #include "webkit/glue/webplugininfo.h" #include "webkit/glue/webplugin_delegate.h" +#if defined(OS_MACOSX) +#include "base/hash_tables.h" +#include "base/linked_ptr.h" +#endif + struct NPObject; class NPObjectStub; struct NPVariant_Param; @@ -133,6 +138,10 @@ class WebPluginDelegateProxy intptr_t notify_data); void OnDeferResourceLoading(int resource_id, bool defer); +#if defined(OS_MACOSX) + void OnUpdateGeometry_ACK(int ack_key); +#endif + // Draw a graphic indicating a crashed plugin. void PaintSadPlugin(WebKit::WebCanvas* canvas, const gfx::Rect& rect); @@ -156,6 +165,24 @@ class WebPluginDelegateProxy // point the window has already been destroyed). void WillDestroyWindow(); +#if defined(OS_MACOSX) + // The Mac TransportDIB implementation uses base::SharedMemory, which + // cannot be disposed of if an in-flight UpdateGeometry message refers to + // the shared memory file descriptor. The old_transport_dibs_ map holds + // old TransportDIBs waiting to die. It's keyed by the |ack_key| values + // used in UpdateGeometry messages. When an UpdateGeometry_ACK message + // arrives, the associated RelatedTransportDIBs can be released. + struct RelatedTransportDIBs { + linked_ptr<TransportDIB> backing_store; + linked_ptr<TransportDIB> transport_store; + linked_ptr<TransportDIB> background_store; + }; + + typedef base::hash_map<int, RelatedTransportDIBs> OldTransportDIBMap; + + OldTransportDIBMap old_transport_dibs_; +#endif // OS_MACOSX + base::WeakPtr<RenderView> render_view_; webkit_glue::WebPlugin* plugin_; bool windowless_; |