author | Matt Brubeck <mbrubeck@mozilla.com> |
Thu, 04 Apr 2013 17:40:16 -0700 | |
changeset 127733 | ca34eba9c8b630ede0c9eb62fa7717c3df7c06a8 |
parent 127732 | db1838b652938002554bd64bbf993b23e0621da3 |
child 127734 | 03a6b2be2d610ff22b75194d0abe335507b716f2 |
push id | 24512 |
push user | ryanvm@gmail.com |
push date | Fri, 05 Apr 2013 20:13:49 +0000 |
treeherder | mozilla-central@139b6ba547fa [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 856272 |
milestone | 23.0a1 |
backs out | 795e9ec338a77719d61475ac57c7a9ec22e4156a |
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
|
--- a/layout/base/FrameLayerBuilder.cpp +++ b/layout/base/FrameLayerBuilder.cpp @@ -3734,26 +3734,26 @@ ContainerState::SetupMaskLayer(Layer *aL // calculate a more precise bounding rect const int32_t A2D = mContainerFrame->PresContext()->AppUnitsPerDevPixel(); gfxRect boundingRect = CalculateBounds(newData.mRoundedClipRects, A2D); boundingRect.Scale(mParameters.mXScale, mParameters.mYScale); uint32_t maxSize = mManager->GetMaxTextureSize(); NS_ASSERTION(maxSize > 0, "Invalid max texture size"); - gfxSize surfaceSize(std::min<float>(boundingRect.Width(), maxSize), - std::min<float>(boundingRect.Height(), maxSize)); + nsIntSize surfaceSize(std::min<int32_t>(boundingRect.Width(), maxSize), + std::min<int32_t>(boundingRect.Height(), maxSize)); // maskTransform is applied to the clip when it is painted into the mask (as a // component of imageTransform), and its inverse used when the mask is used for // masking. // It is the transform from the masked layer's space to mask space gfxMatrix maskTransform; - maskTransform.Scale(surfaceSize.width/boundingRect.Width(), - surfaceSize.height/boundingRect.Height()); + maskTransform.Scale(float(surfaceSize.width)/float(boundingRect.Width()), + float(surfaceSize.height)/float(boundingRect.Height())); maskTransform.Translate(-boundingRect.TopLeft()); // imageTransform is only used when the clip is painted to the mask gfxMatrix imageTransform = maskTransform; imageTransform.Scale(mParameters.mXScale, mParameters.mYScale); nsAutoPtr<MaskLayerImageCache::MaskLayerImageKey> newKey( new MaskLayerImageCache::MaskLayerImageKey()); @@ -3767,21 +3767,19 @@ ContainerState::SetupMaskLayer(Layer *aL const MaskLayerImageCache::MaskLayerImageKey* lookupKey = newKey; // check to see if we can reuse a mask image nsRefPtr<ImageContainer> container = GetMaskLayerImageCache()->FindImageFor(&lookupKey); if (!container) { - nsIntSize surfaceSizeInt = nsIntSize(NSToIntCeil(surfaceSize.width), - NSToIntCeil(surfaceSize.height)); // no existing mask image, so build a new one nsRefPtr<gfxASurface> surface = - aLayer->Manager()->CreateOptimalMaskSurface(surfaceSizeInt); + aLayer->Manager()->CreateOptimalMaskSurface(surfaceSize); // fail if we can't get the right surface if (!surface || surface->CairoStatus()) { NS_WARNING("Could not create surface for mask layer."); SetClipCount(thebesData, 0); return; } @@ -3795,17 +3793,17 @@ ContainerState::SetupMaskLayer(Layer *aL // build the image and container container = aLayer->Manager()->CreateImageContainer(); NS_ASSERTION(container, "Could not create image container for mask layer."); static const ImageFormat format = CAIRO_SURFACE; nsRefPtr<Image> image = container->CreateImage(&format, 1); NS_ASSERTION(image, "Could not create image container for mask layer."); CairoImage::Data data; data.mSurface = surface; - data.mSize = surfaceSizeInt; + data.mSize = surfaceSize; static_cast<CairoImage*>(image.get())->SetData(data); container->SetCurrentImageInTransaction(image); GetMaskLayerImageCache()->PutImage(newKey.forget(), container); } maskLayer->SetContainer(container);