diff options
author | gangji@google.com <gangji@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-18 20:02:05 +0000 |
---|---|---|
committer | gangji@google.com <gangji@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-18 20:02:05 +0000 |
commit | 9cc5821bb535cdb4c0f42a1475ca117bf7756090 (patch) | |
tree | 98488e4209f68475a9029e1940a770688228b253 | |
parent | 6e24cf16fe291a8a1eae87f89538a76d690cd98f (diff) | |
download | chromium_src-9cc5821bb535cdb4c0f42a1475ca117bf7756090.zip chromium_src-9cc5821bb535cdb4c0f42a1475ca117bf7756090.tar.gz chromium_src-9cc5821bb535cdb4c0f42a1475ca117bf7756090.tar.bz2 |
Fixing O2D crash in Windows XP. The original pixman uses thread local variable
which is not supported in Windows Xp. Bump third-party code to version 235
which has the fix in pixman. Now pixman uses TLS primitives.
TESTED=manually tested under Windows 7/Windows XP using chrome, firefox and IE.
Review URL: http://codereview.chromium.org/6688039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@78739 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | o3d/DEPS | 2 | ||||
-rw-r--r-- | o3d/build/pixman.gyp | 4 | ||||
-rw-r--r-- | o3d/plugin/win/main_win.cc | 8 |
3 files changed, 13 insertions, 1 deletions
@@ -5,7 +5,7 @@ vars = { # revs to match the version pulled-in by Chromium's own DEPS in the new rev. "chromium_rev": "51794", "chromium_breakpad_rev": "50763", - "o3d_code_rev": "234", + "o3d_code_rev": "235", "skia_rev": "586", "gyp_rev": "899", "gtest_rev": "408", diff --git a/o3d/build/pixman.gyp b/o3d/build/pixman.gyp index 7c1aee7..8811b9d 100644 --- a/o3d/build/pixman.gyp +++ b/o3d/build/pixman.gyp @@ -54,6 +54,9 @@ { 'type': 'static_library', 'defines': [ + # Build pixman with Windows XP support. + '_WIN32_WINNT=0x0502', + 'WINVER=0x0502', 'PACKAGE=pixman', 'PACKAGE_VERSION=""', 'PACKAGE_BUGREPORT=""', @@ -90,6 +93,7 @@ '../../<(pixmandir)/pixman/pixman-timer.c', '../../<(pixmandir)/pixman/pixman-trap.c', '../../<(pixmandir)/pixman/pixman-utils.c', + '../../<(pixmandir)/pixman/pixman-win32-tls.c', ], }, ], diff --git a/o3d/plugin/win/main_win.cc b/o3d/plugin/win/main_win.cc index 1a1504d..f02b5bf 100644 --- a/o3d/plugin/win/main_win.cc +++ b/o3d/plugin/win/main_win.cc @@ -43,6 +43,7 @@ #include "core/cross/display_mode.h" #include "core/cross/event.h" #include "core/win/display_window_win.h" +#include "pixman-win32-tls.h" #include "v8/include/v8.h" #if !defined(O3D_INTERNAL_PLUGIN) #include "breakpad/win/exception_handler_win32.h" @@ -739,6 +740,9 @@ NPError PlatformPostNPShutdown() { // delete g_exception_manager; #endif + // Clean up all pixman TLS entries. + pixman_win32_tls_shutdown(); + return NPERR_NO_ERROR; } @@ -752,6 +756,10 @@ NPError PlatformNPPDestroy(NPP instance, PluginObject *obj) { } obj->TearDown(); + + // Clean up pixman TLS thread local storage. + pixman_win32_tls_shutdown_thread(); + return NPERR_NO_ERROR; } |