diff options
-rw-r--r-- | sw/source/core/ole/ndole.cxx | 4 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/salgdi.cxx | 24 |
2 files changed, 24 insertions, 4 deletions
diff --git a/sw/source/core/ole/ndole.cxx b/sw/source/core/ole/ndole.cxx index 816ceb84c9be..380a0b87c8c4 100644 --- a/sw/source/core/ole/ndole.cxx +++ b/sw/source/core/ole/ndole.cxx @@ -1048,7 +1048,9 @@ drawinglayer::primitive2d::Primitive2DContainer SwOLEObj::tryToGetChartContentAs if(aXModel.is()) { - static bool bAnynchronousLoadingAllowed = true; + // due to some problems in test cases with the SharedOptimalPool, + // I need to deactivate this for now + static bool bAnynchronousLoadingAllowed = false; if(bSynchron || !bAnynchronousLoadingAllowed || diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx index bb4394ed6e68..ea966b41a346 100644 --- a/vcl/unx/generic/gdi/salgdi.cxx +++ b/vcl/unx/generic/gdi/salgdi.cxx @@ -794,6 +794,7 @@ bool X11SalGraphics::drawPolyLine( const bool bSnapPoints(!getAntiAliasB2DDraw()); static basegfx::B2DHomMatrix aHalfPointTransform(basegfx::tools::createTranslateB2DHomMatrix(0.5, 0.5)); basegfx::B2DCubicBezier aEdge; + basegfx::B2DPoint aStart; for(sal_uInt32 i = 0; i < nEdgeCount; ++i) { @@ -808,7 +809,7 @@ bool X11SalGraphics::drawPolyLine( if(!i || bNoJoin) { - const basegfx::B2DPoint aStart(aEdge.getStartPoint()); + aStart = aEdge.getStartPoint(); cairo_move_to(cr, aStart.getX(), aStart.getY()); } @@ -816,8 +817,23 @@ bool X11SalGraphics::drawPolyLine( if(aEdge.isBezier()) { - const basegfx::B2DPoint aCP1(aEdge.getControlPointA()); - const basegfx::B2DPoint aCP2(aEdge.getControlPointB()); + basegfx::B2DPoint aCP1(aEdge.getControlPointA()); + basegfx::B2DPoint aCP2(aEdge.getControlPointB()); + + // tdf#99165 cairo has problems in creating the evtl. needed + // miter graphics (and maybe others) when empty control points + // are used, so fallback to the mathematical 'default' control + // points in that case + if(aStart.equal(aCP1)) + { + aCP1 = aStart + ((aCP2 - aStart) * 0.3); + } + + if(aEnd.equal(aCP2)) + { + aCP2 = aEnd + ((aCP1 - aEnd) * 0.3); + } + cairo_curve_to(cr, aCP1.getX(), aCP1.getY(), aCP2.getX(), aCP2.getY(), @@ -827,6 +843,8 @@ bool X11SalGraphics::drawPolyLine( { cairo_line_to(cr, aEnd.getX(), aEnd.getY()); } + + aStart = aEnd; } if(rPolygon.isClosed() && !bNoJoin) |