summaryrefslogtreecommitdiffstats
path: root/skia/ext/SkFontHost_fontconfig_ipc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'skia/ext/SkFontHost_fontconfig_ipc.cpp')
-rw-r--r--skia/ext/SkFontHost_fontconfig_ipc.cpp27
1 files changed, 16 insertions, 11 deletions
diff --git a/skia/ext/SkFontHost_fontconfig_ipc.cpp b/skia/ext/SkFontHost_fontconfig_ipc.cpp
index 01bd393..0c95072 100644
--- a/skia/ext/SkFontHost_fontconfig_ipc.cpp
+++ b/skia/ext/SkFontHost_fontconfig_ipc.cpp
@@ -39,35 +39,40 @@ FontConfigIPC::~FontConfigIPC() {
bool FontConfigIPC::Match(std::string* result_family,
unsigned* result_fileid,
bool fileid_valid, unsigned fileid,
- const std::string& family, bool* is_bold,
- bool* is_italic) {
+ const std::string& family,
+ const void* characters, size_t characters_bytes,
+ bool* is_bold, bool* is_italic) {
if (family.length() > kMaxFontFamilyLength)
- return false;
+ return false;
Pickle request;
request.WriteInt(METHOD_MATCH);
request.WriteBool(fileid_valid);
if (fileid_valid)
- request.WriteUInt32(fileid);
+ request.WriteUInt32(fileid);
request.WriteBool(is_bold && *is_bold);
request.WriteBool(is_bold && *is_italic);
+ request.WriteUInt32(characters_bytes);
+ if (characters_bytes)
+ request.WriteBytes(characters, characters_bytes);
+
request.WriteString(family);
uint8_t reply_buf[512];
const ssize_t r = base::SendRecvMsg(fd_, reply_buf, sizeof(reply_buf), NULL,
request);
if (r == -1)
- return false;
+ return false;
Pickle reply(reinterpret_cast<char*>(reply_buf), r);
void* iter = NULL;
bool result;
if (!reply.ReadBool(&iter, &result))
- return false;
+ return false;
if (!result)
- return false;
+ return false;
uint32_t reply_fileid;
std::string reply_family;
@@ -76,17 +81,17 @@ bool FontConfigIPC::Match(std::string* result_family,
!reply.ReadString(&iter, &reply_family) ||
!reply.ReadBool(&iter, &resulting_bold) ||
!reply.ReadBool(&iter, &resulting_italic)) {
- return false;
+ return false;
}
*result_fileid = reply_fileid;
if (result_family)
- *result_family = reply_family;
+ *result_family = reply_family;
if (is_bold)
- *is_bold = resulting_bold;
+ *is_bold = resulting_bold;
if (is_italic)
- *is_italic = resulting_italic;
+ *is_italic = resulting_italic;
return true;
}