зеркало из https://github.com/mozilla/gecko-dev.git
Backout b35294da2c4b (bug 764117) due to OSX reftest orange.
This commit is contained in:
Родитель
269f1c8fe6
Коммит
3318b2ec58
|
@ -50,9 +50,11 @@
|
|||
* -> more than 1 pass?
|
||||
* |- for each corner
|
||||
* |- clip to DoCornerClipSubPath
|
||||
* |- PushGroup
|
||||
* |- for each side adjacent to corner
|
||||
* |- clip to DoSideClipSubPath
|
||||
* |- DrawBorderSides with one side
|
||||
* |- PopGroup
|
||||
* |- for each side
|
||||
* |- DoSideClipWithoutCornersSubPath
|
||||
* |- DrawDashedSide || DrawBorderSides with one side
|
||||
|
@ -1634,16 +1636,18 @@ nsCSSBorderRenderer::DrawBorders()
|
|||
// but we weren't able to render just a solid block for the corner.
|
||||
DrawBorderSides(sideBits);
|
||||
} else {
|
||||
// Sides are different. We could draw using OPERATOR_ADD to
|
||||
// get correct color blending behaviour at the seam. We'd need
|
||||
// Sides are different. We need to draw using OPERATOR_ADD to
|
||||
// get correct color blending behaviour at the seam. We need
|
||||
// to do it in an offscreen surface to ensure that we're
|
||||
// always compositing on transparent black. If the colors
|
||||
// don't have transparency and the current destination surface
|
||||
// has an alpha channel, we could just clear the region and
|
||||
// avoid the temporary, but that situation doesn't happen all
|
||||
// that often in practice (we double buffer to no-alpha
|
||||
// surfaces). We choose just to seam though, as the performance
|
||||
// advantages outweigh the modest aesthetic improvement.
|
||||
// surfaces).
|
||||
|
||||
mContext->PushGroup(gfxASurface::CONTENT_COLOR_ALPHA);
|
||||
mContext->SetOperator(gfxContext::OPERATOR_ADD);
|
||||
|
||||
for (int cornerSide = 0; cornerSide < 2; cornerSide++) {
|
||||
mozilla::css::Side side = mozilla::css::Side(sides[cornerSide]);
|
||||
|
@ -1661,6 +1665,10 @@ nsCSSBorderRenderer::DrawBorders()
|
|||
|
||||
mContext->Restore();
|
||||
}
|
||||
|
||||
mContext->PopGroupToSource();
|
||||
mContext->SetOperator(gfxContext::OPERATOR_OVER);
|
||||
mContext->Paint();
|
||||
}
|
||||
|
||||
mContext->Restore();
|
||||
|
|
Загрузка…
Ссылка в новой задаче