Merge branch 'd2d-gradient' of https://github.com/MaartenBent/wxWidgets
Fix reference count in D2D renderer gradient brushes. See https://github.com/wxWidgets/wxWidgets/pull/1724
This commit is contained in:
@@ -2444,23 +2444,21 @@ protected:
|
|||||||
void DoAcquireResource() wxOVERRIDE
|
void DoAcquireResource() wxOVERRIDE
|
||||||
{
|
{
|
||||||
wxD2DGradientStopsHelper helper(m_linearGradientInfo.stops, GetContext());
|
wxD2DGradientStopsHelper helper(m_linearGradientInfo.stops, GetContext());
|
||||||
ID2D1LinearGradientBrush *linearGradientBrush;
|
|
||||||
|
|
||||||
HRESULT hr = GetContext()->CreateLinearGradientBrush(
|
HRESULT hr = GetContext()->CreateLinearGradientBrush(
|
||||||
D2D1::LinearGradientBrushProperties(
|
D2D1::LinearGradientBrushProperties(
|
||||||
D2D1::Point2F(m_linearGradientInfo.x1, m_linearGradientInfo.y1),
|
D2D1::Point2F(m_linearGradientInfo.x1, m_linearGradientInfo.y1),
|
||||||
D2D1::Point2F(m_linearGradientInfo.x2, m_linearGradientInfo.y2)),
|
D2D1::Point2F(m_linearGradientInfo.x2, m_linearGradientInfo.y2)),
|
||||||
helper.GetGradientStopCollection(),
|
helper.GetGradientStopCollection(),
|
||||||
&linearGradientBrush);
|
&m_nativeResource);
|
||||||
wxCHECK_HRESULT_RET(hr);
|
wxCHECK_HRESULT_RET(hr);
|
||||||
|
|
||||||
if (! m_linearGradientInfo.matrix.IsNull())
|
if (! m_linearGradientInfo.matrix.IsNull())
|
||||||
{
|
{
|
||||||
D2D1::Matrix3x2F matrix = wxGetD2DMatrixData(m_linearGradientInfo.matrix)->GetMatrix3x2F();
|
D2D1::Matrix3x2F matrix = wxGetD2DMatrixData(m_linearGradientInfo.matrix)->GetMatrix3x2F();
|
||||||
matrix.Invert();
|
matrix.Invert();
|
||||||
linearGradientBrush->SetTransform(matrix);
|
m_nativeResource->SetTransform(matrix);
|
||||||
}
|
}
|
||||||
m_nativeResource = linearGradientBrush;
|
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
const LinearGradientInfo m_linearGradientInfo;
|
const LinearGradientInfo m_linearGradientInfo;
|
||||||
@@ -2497,7 +2495,6 @@ protected:
|
|||||||
void DoAcquireResource() wxOVERRIDE
|
void DoAcquireResource() wxOVERRIDE
|
||||||
{
|
{
|
||||||
wxD2DGradientStopsHelper helper(m_radialGradientInfo.stops, GetContext());
|
wxD2DGradientStopsHelper helper(m_radialGradientInfo.stops, GetContext());
|
||||||
ID2D1RadialGradientBrush *radialGradientBrush;
|
|
||||||
|
|
||||||
wxDouble xo = m_radialGradientInfo.x1 - m_radialGradientInfo.x2;
|
wxDouble xo = m_radialGradientInfo.x1 - m_radialGradientInfo.x2;
|
||||||
wxDouble yo = m_radialGradientInfo.y1 - m_radialGradientInfo.y2;
|
wxDouble yo = m_radialGradientInfo.y1 - m_radialGradientInfo.y2;
|
||||||
@@ -2508,16 +2505,15 @@ protected:
|
|||||||
D2D1::Point2F(xo, yo),
|
D2D1::Point2F(xo, yo),
|
||||||
m_radialGradientInfo.radius, m_radialGradientInfo.radius),
|
m_radialGradientInfo.radius, m_radialGradientInfo.radius),
|
||||||
helper.GetGradientStopCollection(),
|
helper.GetGradientStopCollection(),
|
||||||
&radialGradientBrush);
|
&m_nativeResource);
|
||||||
wxCHECK_HRESULT_RET(hr);
|
wxCHECK_HRESULT_RET(hr);
|
||||||
|
|
||||||
if (! m_radialGradientInfo.matrix.IsNull())
|
if (! m_radialGradientInfo.matrix.IsNull())
|
||||||
{
|
{
|
||||||
D2D1::Matrix3x2F matrix = wxGetD2DMatrixData(m_radialGradientInfo.matrix)->GetMatrix3x2F();
|
D2D1::Matrix3x2F matrix = wxGetD2DMatrixData(m_radialGradientInfo.matrix)->GetMatrix3x2F();
|
||||||
matrix.Invert();
|
matrix.Invert();
|
||||||
radialGradientBrush->SetTransform(matrix);
|
m_nativeResource->SetTransform(matrix);
|
||||||
}
|
}
|
||||||
m_nativeResource = radialGradientBrush;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Reference in New Issue
Block a user