From 60b08a0adfe73f593af62c8d3f55958438360e1b Mon Sep 17 00:00:00 2001 From: tomhudson Date: Tue, 1 Jul 2014 08:06:14 -0700 Subject: Fix race condition in parallel font initialization. Uses a mutex to guard construction of the singleton, which initialies the non-threadsafe libfontconfig. Without this change, the parallel path ops test runner crashes 6/10 and hangs 2/10 on startup; with this change, 0/10 problems. BUG=skia:2693 R=mtklein@google.com, bungeman@google.com, reed@google.com, tomhudson@google.com Committed: https://skia.googlesource.com/skia/+/df022f5972ae6a2a1d96d15c50eca52cade3abd8 Author: tomhudson@chromium.org Review URL: https://codereview.chromium.org/355573006 --- include/ports/SkFontConfigInterface.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'include/ports') diff --git a/include/ports/SkFontConfigInterface.h b/include/ports/SkFontConfigInterface.h index 8c12a5628a..f548f37d5d 100644 --- a/include/ports/SkFontConfigInterface.h +++ b/include/ports/SkFontConfigInterface.h @@ -14,6 +14,8 @@ #include "SkTArray.h" #include "SkTypeface.h" +struct SkBaseMutex; + /** * \class SkFontConfigInterface * @@ -95,8 +97,9 @@ public: /** * Return a singleton instance of a direct subclass that calls into * libfontconfig. This does not affect the refcnt of the returned instance. + * The mutex may be used to guarantee the singleton is only constructed once. */ - static SkFontConfigInterface* GetSingletonDirectInterface(); + static SkFontConfigInterface* GetSingletonDirectInterface(SkBaseMutex* mutex); // New APIS, which have default impls for now (which do nothing) -- cgit v1.2.3