Kaydet (Commit) 0686abc1 authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl Kaydeden (comit) Tomaž Vajngerl

tdf#107166 BindDC doesn't handle 0 width/height rect consistently

When binding a GDI device context to D2D we need to provide a
rectangle where the surface will have effect. When we just need
some font information we need to bind the DC too, but we aren't
really interested what the rectangle is, so we just provided a
0,0,0,0 rectangle in that case. This sometimes fails with a
"out of memory" result and is dependent on the renderer.

Instead of 0,0,0,0 rectangle we rather define a 0,0,1,1 rectangle
which should never fail. This is not problematic as for actual
rendering we later rebind with an actual rectangle.

Change-Id: I79c7f0cf4d69f213370ed26a811a908ed16070ff
Reviewed-on: https://gerrit.libreoffice.org/39901Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarJenkins <ci@libreoffice.org>
üst 4908d6d6
......@@ -225,7 +225,10 @@ public:
SalGraphics &rGraphics,
HDC hDC) override;
bool BindDC(HDC hDC, tools::Rectangle const & rRect = tools::Rectangle(0, 0, 0, 0)) {
bool BindDC(HDC hDC, tools::Rectangle const & rRect = tools::Rectangle(0, 0, 1, 1))
{
if (rRect.GetWidth() == 0 || rRect.GetHeight() == 0)
return false;
RECT const rc = { rRect.Left(), rRect.Top(), rRect.Right(), rRect.Bottom() };
return SUCCEEDED(mpRT->BindDC(hDC, &rc));
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment