mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 1174461 - Cache NS_NATIVE_PLUGIN_PORT on the content side since it never changes. r=aklotz
This commit is contained in:
parent
533256ed4d
commit
5df104fdfb
@ -35,7 +35,8 @@ NS_IMPL_ISUPPORTS_INHERITED(PluginWidgetProxy, PuppetWidget, nsIWidget)
|
||||
PluginWidgetProxy::PluginWidgetProxy(dom::TabChild* aTabChild,
|
||||
mozilla::plugins::PluginWidgetChild* aActor) :
|
||||
PuppetWidget(aTabChild),
|
||||
mActor(aActor)
|
||||
mActor(aActor),
|
||||
mCachedPluginPort(0)
|
||||
{
|
||||
// See ChannelDestroyed() in the header
|
||||
mActor->SetWidget(this);
|
||||
@ -74,8 +75,6 @@ PluginWidgetProxy::Create(nsIWidget* aParent,
|
||||
NS_IMETHODIMP
|
||||
PluginWidgetProxy::SetParent(nsIWidget* aNewParent)
|
||||
{
|
||||
mParent = aNewParent;
|
||||
|
||||
nsCOMPtr<nsIWidget> kungFuDeathGrip(this);
|
||||
nsIWidget* parent = GetParent();
|
||||
if (parent) {
|
||||
@ -84,6 +83,7 @@ PluginWidgetProxy::SetParent(nsIWidget* aNewParent)
|
||||
if (aNewParent) {
|
||||
aNewParent->AddChild(this);
|
||||
}
|
||||
mParent = aNewParent;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -135,10 +135,14 @@ PluginWidgetProxy::GetNativeData(uint32_t aDataType)
|
||||
NS_WARNING("PluginWidgetProxy::GetNativeData received request for unsupported data type.");
|
||||
return nullptr;
|
||||
}
|
||||
uintptr_t value = 0;
|
||||
mActor->SendGetNativePluginPort(&value);
|
||||
PWLOG("PluginWidgetProxy::GetNativeData %p\n", (void*)value);
|
||||
return (void*)value;
|
||||
// The parent side window handle or xid never changes so we can
|
||||
// cache this for our lifetime.
|
||||
if (mCachedPluginPort) {
|
||||
return (void*)mCachedPluginPort;
|
||||
}
|
||||
mActor->SendGetNativePluginPort(&mCachedPluginPort);
|
||||
PWLOG("PluginWidgetProxy::GetNativeData %p\n", (void*)mCachedPluginPort);
|
||||
return (void*)mCachedPluginPort;
|
||||
}
|
||||
|
||||
#if defined(XP_WIN)
|
||||
|
@ -66,6 +66,7 @@ private:
|
||||
// PuppetWidget does not implement parent apis, but we need
|
||||
// them for plugin widgets.
|
||||
nsCOMPtr<nsIWidget> mParent;
|
||||
uintptr_t mCachedPluginPort;
|
||||
};
|
||||
|
||||
} // namespace widget
|
||||
|
Loading…
Reference in New Issue
Block a user