summaryrefslogtreecommitdiffstats
path: root/webkit/glue/webplugin.h
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-21 21:48:36 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-21 21:48:36 +0000
commit875d489e8aadd251c638c1bad6bb7ca967605f98 (patch)
treee1be54c561d33b240f6c88b042c9b2df732ac5c6 /webkit/glue/webplugin.h
parente3db4fabfc7aabca3cd1998e05d2a769fbd0c5b6 (diff)
downloadchromium_src-875d489e8aadd251c638c1bad6bb7ca967605f98.zip
chromium_src-875d489e8aadd251c638c1bad6bb7ca967605f98.tar.gz
chromium_src-875d489e8aadd251c638c1bad6bb7ca967605f98.tar.bz2
Fix hang seen in plugin process because plugin creation ended up having to wait on UI thread. Instead of using sync messages, the plugin hwnd is initially parented to the RenderWidgetHost's HWND. It's then lazily reparented to an intermediate HWND on the UI thread when it comes time to move it.
BUG=10711 TEST=added regression tests, but testers please confirm plugins on top video sites are placed correctly. Review URL: http://codereview.chromium.org/67285 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@14137 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/webplugin.h')
-rw-r--r--webkit/glue/webplugin.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/webkit/glue/webplugin.h b/webkit/glue/webplugin.h
index 8c56100..64791ea 100644
--- a/webkit/glue/webplugin.h
+++ b/webkit/glue/webplugin.h
@@ -86,10 +86,11 @@ class WebPlugin {
// windowed (i.e. handle is not NULL) or windowless (handle is NULL). This
// tells the WebPlugin to send mouse/keyboard events to the plugin delegate,
// as well as the information about the HDC for paint operations.
- // The return value is only valid for windowed plugins. If true, it means
- // that the the HWND position should be managed by the delegate. If false,
- // the plugin should be kept at the origin and it'll get moved elsewhere.
- virtual bool SetWindow(gfx::NativeView window) = 0;
+ virtual void SetWindow(gfx::NativeView window) = 0;
+
+ // Called by the plugin delegate to let it know that the window is being
+ // destroyed.
+ virtual void WillDestroyWindow(gfx::NativeView window) = 0;
#if defined(OS_WIN)
// The pump_messages_event is a event handle which is valid only for
// windowless plugins and is used in NPP_HandleEvent calls to pump messages