Bug 732988 - Part 2: Use ScaleToSize API for plugin drawing. r=roc
☠☠ backed out by 7bbff0b46460 ☠ ☠
authorBas Schouten <bschouten@mozilla.com>
Sun, 11 Mar 2012 22:33:23 +0000 (2012-03-11)
changeset 88755 f667f6c22bed66bbf1f94c731a2247528821a981
parent 88754 4b46f6eff8f4d66b91473e3884d2212b6124f2b4
child 88756 960c7ece9d14f17a538c0c94e8d776b2504c328b
push id22220
push userdholbert@mozilla.com
push dateMon, 12 Mar 2012 02:41:18 +0000 (2012-03-12)
treeherdermozilla-central@5ec9524de1af [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersroc
bugs732988
milestone13.0a1
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 732988 - Part 2: Use ScaleToSize API for plugin drawing. r=roc
layout/generic/nsObjectFrame.cpp
--- a/layout/generic/nsObjectFrame.cpp
+++ b/layout/generic/nsObjectFrame.cpp
@@ -1544,17 +1544,23 @@ nsObjectFrame::BuildLayer(nsDisplayListB
   // Create image
   nsRefPtr<ImageContainer> container = mInstanceOwner->GetImageContainer();
 
   if (!container) {
     // This can occur if our instance is gone.
     return nsnull;
   }
 
-  gfxIntSize size = container->GetCurrentSize();
+  gfxIntSize size;
+  
+  if (mInstanceOwner->UseAsyncRendering()) {
+    size = container->GetCurrentSize();
+  } else {
+    size = gfxIntSize(window->width, window->height);
+  }
 
   nsRect area = GetContentRectRelativeToSelf() + aItem->ToReferenceFrame();
   gfxRect r = nsLayoutUtils::RectToGfxRect(area, PresContext()->AppUnitsPerDevPixel());
   // to provide crisper and faster drawing.
   r.Round();
   nsRefPtr<Layer> layer =
     (aBuilder->LayerBuilder()->GetLeafLayerFor(aBuilder, aManager, aItem));
 
@@ -1567,16 +1573,19 @@ nsObjectFrame::BuildLayer(nsDisplayListB
         return nsnull;
     }
 
     NS_ASSERTION(layer->GetType() == Layer::TYPE_IMAGE, "Bad layer type");
 
     ImageLayer* imglayer = static_cast<ImageLayer*>(layer.get());
     UpdateImageLayer(r);
 
+    if (!mInstanceOwner->UseAsyncRendering()) {
+      imglayer->SetScaleToSize(size, ImageLayer::SCALE_STRETCH);
+    }
     imglayer->SetContainer(container);
     gfxPattern::GraphicsFilter filter =
       nsLayoutUtils::GetGraphicsFilterForFrame(this);
 #ifdef MOZ_GFX_OPTIMIZE_MOBILE
     if (!aManager->IsCompositingCheap()) {
       // Pixman just horrible with bilinear filter scaling
       filter = gfxPattern::FILTER_NEAREST;
     }