Update dimensions early in ClearTarget.

This commit is contained in:
Jonathan Kew 2018-05-23 11:57:42 -07:00 committed by Roy Tam
commit d7d5258610
2 changed files with 13 additions and 6 deletions

View file

@ -1862,8 +1862,6 @@ CanvasRenderingContext2D::GetHeight() const
NS_IMETHODIMP
CanvasRenderingContext2D::SetDimensions(int32_t aWidth, int32_t aHeight)
{
ClearTarget();
// Zero sized surfaces can cause problems.
mZero = false;
if (aHeight == 0) {
@ -1874,14 +1872,14 @@ CanvasRenderingContext2D::SetDimensions(int32_t aWidth, int32_t aHeight)
aWidth = 1;
mZero = true;
}
mWidth = aWidth;
mHeight = aHeight;
ClearTarget(aWidth, aHeight);
return NS_OK;
}
void
CanvasRenderingContext2D::ClearTarget()
CanvasRenderingContext2D::ClearTarget(int32_t aWidth, int32_t aHeight)
{
Reset();
@ -1889,6 +1887,12 @@ CanvasRenderingContext2D::ClearTarget()
SetInitialState();
// Update dimensions only if new (strictly positive) values were passed.
if (aWidth > 0 && aHeight > 0) {
mWidth = aWidth;
mHeight = aHeight;
}
// For vertical writing-mode, unless text-orientation is sideways,
// we'll modify the initial value of textBaseline to 'middle'.
RefPtr<nsStyleContext> canvasStyle;

View file

@ -669,8 +669,11 @@ protected:
/**
* Disposes an old target and prepares to lazily create a new target.
*
* Parameters are the new dimensions to be used, or if either is negative,
* existing dimensions will be left unchanged.
*/
void ClearTarget();
void ClearTarget(int32_t aWidth = -1, int32_t aHeight = -1);
/*
* Returns the target to the buffer provider. i.e. this will queue a frame for