# HG changeset patch # User jgodinez # Date 1366910064 25200 # Node ID 03ba8665f3e32324084ac9511d19dbf5a6edeb32 # Parent 84be5bed2ea1ceb26fbcf2df252746d6e1ba15ee 8009199: Printed text become garbage on Mac OSX Reviewed-by: bae, prr diff -r 84be5bed2ea1 -r 03ba8665f3e3 jdk/src/macosx/native/sun/awt/CTextPipe.m --- a/jdk/src/macosx/native/sun/awt/CTextPipe.m Tue Apr 23 09:28:19 2013 -0700 +++ b/jdk/src/macosx/native/sun/awt/CTextPipe.m Thu Apr 25 10:14:24 2013 -0700 @@ -143,6 +143,8 @@ CGContextRef cgRef = qsdo->cgRef; CGAffineTransform ctmText = CGContextGetTextMatrix(cgRef); + BOOL saved = false; + /* Save and restore of graphics context is done before the iteration. This seems to work using our test case (see bug ID 7158350) so we are restoring it at the end of the for loop. If we find out that save/restore outside the loop @@ -175,10 +177,19 @@ CFRelease(fallback); if (cgFallback) { + if (!saved) { + CGContextSaveGState(cgRef); + saved = true; + } CGContextSetFont(cgRef, cgFallback); CFRelease(cgFallback); } } + } else { + if (saved) { + CGContextRestoreGState(cgRef); + saved = false; + } } // if we have per-glyph transformations