aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar caryclark <caryclark@google.com>2015-12-16 13:41:23 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-12-16 13:41:23 -0800
commit7471fa4920a3573afcf6e2d94722e73d3d9b12a7 (patch)
tree62b0a14f5349e23aad6e78d6b9ab8cd7ed6fc29c /src
parent64673afe1a25ddd2d82d955ff7d9f7b3e026205f (diff)
add fsync to try to get complete skps from webpage picture capture
Diffstat (limited to 'src')
-rw-r--r--src/core/SkStream.cpp8
-rw-r--r--src/ports/SkOSFile_stdio.cpp8
2 files changed, 16 insertions, 0 deletions
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp
index fff8f33822..ef4c6baae4 100644
--- a/src/core/SkStream.cpp
+++ b/src/core/SkStream.cpp
@@ -463,6 +463,14 @@ void SkFILEWStream::flush()
}
}
+void SkFILEWStream::fsync()
+{
+ flush();
+ if (fFILE) {
+ sk_fsync(fFILE);
+ }
+}
+
////////////////////////////////////////////////////////////////////////
SkMemoryWStream::SkMemoryWStream(void* buffer, size_t size)
diff --git a/src/ports/SkOSFile_stdio.cpp b/src/ports/SkOSFile_stdio.cpp
index 3371bb7031..ecd5a027fc 100644
--- a/src/ports/SkOSFile_stdio.cpp
+++ b/src/ports/SkOSFile_stdio.cpp
@@ -143,6 +143,14 @@ void sk_fflush(FILE* f) {
::fflush(f);
}
+void sk_fsync(FILE* f) {
+#if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \
+ && !defined(_NEWLIB_VERSION)
+ int fd = ::fileno(f);
+ ::fsync(fd);
+#endif
+}
+
bool sk_fseek(FILE* f, size_t byteCount) {
int err = ::fseek(f, (long)byteCount, SEEK_SET);
return err == 0;