Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1298)

Unified Diff: content/common/cc_messages.cc

Issue 21271002: Added SkImageFilter serialization (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/cc_messages.cc
diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc
index 9065a946ad3bc5ff857e30610170e469a4998575..ddb4e1fb2dd833082b8daf3b309ba0f823db80c8 100644
--- a/content/common/cc_messages.cc
+++ b/content/common/cc_messages.cc
@@ -7,6 +7,8 @@
#include "cc/output/compositor_frame.h"
#include "cc/output/filter_operations.h"
#include "content/public/common/common_param_traits.h"
+#include "third_party/skia/src/core/SkOrderedReadBuffer.h"
+#include "third_party/skia/src/core/SkOrderedWriteBuffer.h"
#include "ui/gfx/transform.h"
namespace IPC {
@@ -185,6 +187,41 @@ void ParamTraits<cc::FilterOperations>::Log(
l->append(")");
}
+void ParamTraits<skia::RefPtr<SkImageFilter> >::Write(
+ Message* m, const param_type& p) {
+ SkImageFilter* filter = p.get();
+ if (filter) {
+ SkOrderedWriteBuffer buffer(1024);
+ buffer.setFlags(SkOrderedWriteBuffer::kCrossProcess_Flag);
+ buffer.writeFlattenable(filter);
+ buffer.writeToMemory(m->BeginWriteData(buffer.bytesWritten()));
+ } else {
+ m->WriteData(0, 0);
+ }
+}
+
+bool ParamTraits<skia::RefPtr<SkImageFilter> >::Read(
+ const Message* m, PickleIterator* iter, param_type* r) {
+ const char* data = 0;
+ int length = 0;
+ if (!m->ReadData(iter, &data, &length))
+ return false;
+ if (length > 0) {
+ SkOrderedReadBuffer buffer(data, length);
+ *r = skia::AdoptRef(buffer.readFlattenableT<SkImageFilter>());
piman 2013/07/30 19:57:35 Yes, obviously we can't land this until we know it
sugoi1 2013/07/30 20:08:21 All right, if putting it behind a flag is an accep
+ } else {
+ r->clear();
+ }
+ return true;
+}
+
+void ParamTraits<skia::RefPtr<SkImageFilter> >::Log(
+ const param_type& p, std::string* l) {
+ l->append("(");
+ LogParam(p.get() ? p->countInputs() : 0, l);
+ l->append(")");
+}
+
void ParamTraits<gfx::Transform>::Write(
Message* m, const param_type& p) {
WriteParam(m, p.matrix().getDouble(0, 0));

Powered by Google App Engine
This is Rietveld 408576698