Keep SkStrike alive for its SkDrawables.

In theory all glyph representations including masks, paths and drawables
should keep a reference to the SkStrike which owns the actual data they
refer to. For paths this is worked around by always creating a copy of
the path (which is inexpensive) which itself simply reference counts the
underlying path data which is not directly owned by the SkStrike. For
masks it is impractical for every mask to hold a reference to the
SkStrike in any event as the pointer alone would often be larger than
the image. For drawables the implementation may be simply a pointer to
the scaler context and a glyph id. In theory each drawable could hold a
reference to the SkStrike, but potentially means a lot of references
when ensuring the SkStrike outlives any drawables it produces would be
more effecient.

This change ensures that the SkStrike is referenced while holding
references to drawables the SkStrike produced.

Bug: chromium:1322902
Change-Id: I6db8ae1bd614167da008caaff089e7d3e15aa9bb
Approval: https://crbug.com/1322902#c20
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537980
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
(cherry picked from commit 638fcaea9fa2711d9a68a28edb495abc0d235736)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538899
4 files changed