O2D: Work around crash in Mac Safari 5.0.2 when resizing or closing. Safari performs many CGContextSaveGState/RestoreGState calls during the plugin's lifetime and it foolishly calls into the plugin's rendering code and resizing/shutdown code with a different gstate stack depth, which makes it unsound to call RestoreGState on the old CGContext when resizing or shutting down (which happened both explicitly in DestroyCairoSurface() and implicitly inside cairo_surface_destory()). This resulted in an assertion failure inside the CGContextRestoreGState as it tried to pop from an empty stack. To avoid this we have no choice but to create and destroy the Cairo surface on every frame. Luckily, there is no significant perf impact.
O2D: Work around crash in Mac Safari 5.0.2 when resizing or closing. Safari performs many CGContextSaveGState/RestoreGState calls during the plugin's lifetime and it foolishly calls into the plugin's rendering code and resizing/shutdown code with a different gstate stack depth, which makes it unsound to call RestoreGState on the old CGContext when resizing or shutting down (which happened both explicitly in DestroyCairoSurface() and implicitly inside cairo_surface_destory()). This resulted in an assertion failure inside the CGContextRestoreGState as it tried to pop from an empty stack. To avoid this we have no choice but to create and destroy the Cairo surface on every frame. Luckily, there is no significant perf impact.

TEST=O2D on OSX 10.6.4 in FF 3.6.13, Safari 5.0.2, and Chrome 10.0.648.127; compared framerate and CPU usage in FF to the original code and verified there is no significant difference
BUG=none

Review URL: http://codereview.chromium.org/6624096

git-svn-id: dd90618784b6a4b323ea0c23a071cb1c9e6f2ac7@77319 4ff67af0-8c30-449e-8e8b-ad334ec8d88c

wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser,wistoch/meego-app-browser