vcl/source/gdi/outdev4.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
New commits: commit 97cfb1fe0163a9dc09734a761c56d149b8c61f4b Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Mon Apr 7 15:14:52 2014 +1000 DrawGradient( const PolyPolygon&... etc) gets graphics instance too early The OutputDevice::DrawGradient function that takes a PolyPolygon checks for a graphics instance far too early. It then checks it again when it actually needs it, but we really only need to get it once. Change-Id: I2426dfe2e5c03f0e8e3939b53b16c99afe637812 diff --git a/vcl/source/gdi/outdev4.cxx b/vcl/source/gdi/outdev4.cxx index 696c2f5..b84b8b8 100644 --- a/vcl/source/gdi/outdev4.cxx +++ b/vcl/source/gdi/outdev4.cxx @@ -812,10 +812,6 @@ void OutputDevice::DrawGradient( const PolyPolygon& rPolyPoly, if( mbOutputClipped ) return; - if( !mpGraphics ) - if( !ImplGetGraphics() ) - return; - if( rPolyPoly.Count() && rPolyPoly[ 0 ].GetSize() ) { if ( mnDrawMode & ( DRAWMODE_BLACKGRADIENT | DRAWMODE_WHITEGRADIENT | DRAWMODE_SETTINGSGRADIENT) ) commit 05fb3136904c8e6ff3a0c9d8c1c29ce904573d58 Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Mon Apr 7 14:57:04 2014 +1000 Exit out of DrawGradient that uses PolyPolygon much faster There are two DrawGradient(...) functions in OutputDevice. One uses a PolyPolygon, the other uses a Rectangle. The Rectangle version exits out a lot faster, the PolyPolygon one seems to try to getting clipping regions and a Graphics instance first which is entirely unnecessary if the drawing mode is DRAWMODE_NOGRADIENT! Therefore, I'm bailing out of this function much faster, bring the two functions into line with each other. Change-Id: I882862ab82a93c2c9dfd5fc86f2507926d28aaea diff --git a/vcl/source/gdi/outdev4.cxx b/vcl/source/gdi/outdev4.cxx index f402244..696c2f5 100644 --- a/vcl/source/gdi/outdev4.cxx +++ b/vcl/source/gdi/outdev4.cxx @@ -554,7 +554,9 @@ void OutputDevice::DrawGradient( const Rectangle& rRect, { if ( mnDrawMode & DRAWMODE_NOGRADIENT ) - return; + { + return; // nothing to draw! + } else if ( mnDrawMode & ( DRAWMODE_BLACKGRADIENT | DRAWMODE_WHITEGRADIENT | DRAWMODE_SETTINGSGRADIENT) ) { Color aColor; @@ -801,6 +803,8 @@ void OutputDevice::XORClipAndDrawGradient ( Gradient &rGradient, const PolyPolyg void OutputDevice::DrawGradient( const PolyPolygon& rPolyPoly, const Gradient& rGradient ) { + if ( mnDrawMode & DRAWMODE_NOGRADIENT ) + return; // nothing to draw! if( mbInitClipRegion ) ImplInitClipRegion(); @@ -812,7 +816,7 @@ void OutputDevice::DrawGradient( const PolyPolygon& rPolyPoly, if( !ImplGetGraphics() ) return; - if( rPolyPoly.Count() && rPolyPoly[ 0 ].GetSize() && !( mnDrawMode & DRAWMODE_NOGRADIENT ) ) + if( rPolyPoly.Count() && rPolyPoly[ 0 ].GetSize() ) { if ( mnDrawMode & ( DRAWMODE_BLACKGRADIENT | DRAWMODE_WHITEGRADIENT | DRAWMODE_SETTINGSGRADIENT) ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits