[m149] Resolved a Data Race on fStream in SkTypeface_Mac
There was a data race in SkTypeface_Mac where `onOpenStream`
and `onOpenExistingStream` would race to read/write `fStream`. While `onOpenStream` would begin initializing `fStream` on one thread, a separate thread could be calling `onOpenExistingStream` to try to read `fStream` before it was done initializing.
The issue was resolved by applying a mutex on `fStream`.
The cl introducing this bug (https://skia-review.git.corp.google.com/c/skia/+/204720) was focused on caching the typefaces received with a global process wide `gTFCache` to save on performance and memory. The issue arose in that since the SkTypeface_Mac could be accessed across threads, it became thread unsafe.
A test was added to this CL but removed as it was too large and took too long. It helps us keep it in the patch history for reference.
Bug: b/520535595
Bug: 520535595
Fixed: 524508854
Change-Id: Id28aeed3d67a5a5246d22681f2c7ab0e6c133558
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1264296
Commit-Queue: Alexis Cruz-Ayala <alexisdavidc@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
(cherry picked from commit ba3ee9b265f06ed1f16e4d7402d29ad7ac583e7a)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/1274456
2 files changed