Bug 635191: If the object frame has gone away, there's no way to determine IsUpToDate(), so just dispatch the paint-finished event. r=roc a=b
authorChris Jones <jones.chris.g@gmail.com>
Fri, 18 Feb 2011 18:32:12 -0600
changeset 62860 e4b9604fdba59053c877aaf9e5c93d12dd89dd27
parent 62859 51b61720bc3507de21b1408ffd8dfeb15514d3a0
child 62861 4b0d51f06cda6ac94faa8ca1eb84b3c9137f5d4d
push id18914
push usermlamouri@mozilla.com
push dateSat, 19 Feb 2011 14:32:40 +0000
treeherdermozilla-central@e4b9604fdba5 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersroc, b
bugs635191
milestone2.0b12pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 635191: If the object frame has gone away, there's no way to determine IsUpToDate(), so just dispatch the paint-finished event. r=roc a=b
layout/generic/nsObjectFrame.cpp
--- a/layout/generic/nsObjectFrame.cpp
+++ b/layout/generic/nsObjectFrame.cpp
@@ -3453,17 +3453,19 @@ NS_IMETHODIMP nsPluginInstanceOwner::Get
   // XXX sXBL/XBL2 issue: current doc or owner doc?
   // But keep in mind bug 322414 comment 33
   NS_IF_ADDREF(*aDocument = mContent->GetOwnerDoc());
   return NS_OK;
 }
 
 NS_IMETHODIMP nsPluginInstanceOwner::InvalidateRect(NPRect *invalidRect)
 {
-  if (mWaitingForPaint && IsUpToDate()) {
+  // If our object frame has gone away, we won't be able to determine
+  // up-to-date-ness, so just fire off the event.
+  if (mWaitingForPaint && (!mObjectFrame || IsUpToDate())) {
     // We don't care when the event is dispatched as long as it's "soon",
     // since whoever needs it will be wwaiting for it
     nsCOMPtr<nsIRunnable> event = new AsyncPaintWaitEvent(mContent, PR_TRUE);
     NS_DispatchToMainThread(event);
     mWaitingForPaint = false;
   }
 
   if (!mObjectFrame || !invalidRect || !mWidgetVisible)