Index: src/ports/SkFontHost_linux.cpp |
diff --git a/src/ports/SkFontHost_linux.cpp b/src/ports/SkFontHost_linux.cpp |
index 6003c095c164ee23125a34ca5ed0eedc00005d65..69a88136d1cc52e8881b502465dc76ddd1c7d90b 100644 |
--- a/src/ports/SkFontHost_linux.cpp |
+++ b/src/ports/SkFontHost_linux.cpp |
@@ -12,6 +12,7 @@ |
#include "SkDescriptor.h" |
#include "SkOSFile.h" |
#include "SkPaint.h" |
+#include "SkRTConf.h" |
#include "SkString.h" |
#include "SkStream.h" |
#include "SkThread.h" |
@@ -101,6 +102,13 @@ private: |
typedef SkTypeface_Custom INHERITED; |
}; |
+// This configuration option is useful if we need to open and hold handles to |
+// all found system font data (e.g., for skfiddle, where the application can't |
+// access the filesystem to read fonts on demand) |
+ |
+SK_CONF_DECLARE(bool, c_CustomTypefaceRetain, "fonts.customFont.retainAllData", false, |
+ "Retain the open stream for each found font on the system."); |
+ |
/** The file SkTypeface implementation for the custom font manager. */ |
class SkTypeface_File : public SkTypeface_Custom { |
public: |
@@ -108,7 +116,12 @@ public: |
const SkString familyName, const char path[], int index) |
: INHERITED(style, isFixedPitch, sysFont, familyName, index) |
, fPath(path) |
- { } |
+ , fStream(NULL) |
bungeman-skia
2014/11/19 15:14:13
I prefer the form
, fStream(c_CustomTypefaceRetai
|
+ { |
+ if (c_CustomTypefaceRetain) { |
+ fStream = SkStream::NewFromFile(fPath.c_str()); |
+ } |
+ } |
virtual const char* getUniqueString() const SK_OVERRIDE { |
const char* str = strrchr(fPath.c_str(), '/'); |
@@ -121,11 +134,16 @@ public: |
protected: |
virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE { |
*ttcIndex = this->getIndex(); |
- return SkStream::NewFromFile(fPath.c_str()); |
+ if (NULL != fStream) { |
bungeman-skia
2014/11/19 15:14:14
I think we're just using
if (fStream.get()) {
th
|
+ return fStream->duplicate(); |
+ } else { |
+ return SkStream::NewFromFile(fPath.c_str()); |
+ } |
} |
private: |
SkString fPath; |
+ SkAutoTUnref<SkStream> fStream; |
bungeman-skia
2014/11/19 15:14:13
Above (in SkTypeface_Stream) this is
const SkAuto
|
typedef SkTypeface_Custom INHERITED; |
}; |