summaryrefslogtreecommitdiffstats
path: root/chrome/browser/accessibility/browser_accessibility.cc
diff options
context:
space:
mode:
authortschmelcher@google.com <tschmelcher@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-08 19:37:45 +0000
committertschmelcher@google.com <tschmelcher@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-08 19:37:45 +0000
commitf05d59bc07a31604791939ff053eb0ac1d49a075 (patch)
treedf91cb8133c862a43f67106193bf9e3ed01c83ad /chrome/browser/accessibility/browser_accessibility.cc
parent2ab0d9c5c73cd1f054ebd6caf25e904b190c5c68 (diff)
downloadchromium_src-f05d59bc07a31604791939ff053eb0ac1d49a075.zip
chromium_src-f05d59bc07a31604791939ff053eb0ac1d49a075.tar.gz
chromium_src-f05d59bc07a31604791939ff053eb0ac1d49a075.tar.bz2
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: svn://svn.chromium.org/chrome/trunk/src@77319 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/accessibility/browser_accessibility.cc')
0 files changed, 0 insertions, 0 deletions