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

Unified Diff: content/common/cc_messages.cc

Issue 30593005: IPC pickling optimizations for geometry types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ccmessagesperf-geom: maintain check on Rect size from before Created 7 years, 2 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
« no previous file with comments | « no previous file | content/public/common/common_param_traits.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/cc_messages.cc
diff --git a/content/common/cc_messages.cc b/content/common/cc_messages.cc
index dc389a65f629789cba010d8cb3c4265568493684..d27446af9594bdfd1b6cca81e3ed0338f2b542e4 100644
--- a/content/common/cc_messages.cc
+++ b/content/common/cc_messages.cc
@@ -242,106 +242,41 @@ void ParamTraits<skia::RefPtr<SkImageFilter> >::Log(
void ParamTraits<gfx::Transform>::Write(
Message* m, const param_type& p) {
- WriteParam(m, p.matrix().get(0, 0));
- WriteParam(m, p.matrix().get(1, 0));
- WriteParam(m, p.matrix().get(2, 0));
- WriteParam(m, p.matrix().get(3, 0));
- WriteParam(m, p.matrix().get(0, 1));
- WriteParam(m, p.matrix().get(1, 1));
- WriteParam(m, p.matrix().get(2, 1));
- WriteParam(m, p.matrix().get(3, 1));
- WriteParam(m, p.matrix().get(0, 2));
- WriteParam(m, p.matrix().get(1, 2));
- WriteParam(m, p.matrix().get(2, 2));
- WriteParam(m, p.matrix().get(3, 2));
- WriteParam(m, p.matrix().get(0, 3));
- WriteParam(m, p.matrix().get(1, 3));
- WriteParam(m, p.matrix().get(2, 3));
- WriteParam(m, p.matrix().get(3, 3));
+#ifdef SK_MSCALAR_IS_FLOAT
+ float column_major_data[16];
+ p.matrix().asColMajorf(column_major_data);
+#else
+ double column_major_data[16];
+ p.matrix().asColMajord(column_major_data);
+#endif
+ m->WriteBytes(&column_major_data, sizeof(SkMScalar) * 16);
}
bool ParamTraits<gfx::Transform>::Read(
const Message* m, PickleIterator* iter, param_type* r) {
- // Note: In this function, "m12" means 1st row, 2nd column of the matrix.
- // This is consistent with Skia's row-column notation, but backwards from
- // WebCore's column-row notation.
- SkMScalar m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41,
- m42, m43, m44;
-
- bool success =
- ReadParam(m, iter, &m11) &&
- ReadParam(m, iter, &m21) &&
- ReadParam(m, iter, &m31) &&
- ReadParam(m, iter, &m41) &&
- ReadParam(m, iter, &m12) &&
- ReadParam(m, iter, &m22) &&
- ReadParam(m, iter, &m32) &&
- ReadParam(m, iter, &m42) &&
- ReadParam(m, iter, &m13) &&
- ReadParam(m, iter, &m23) &&
- ReadParam(m, iter, &m33) &&
- ReadParam(m, iter, &m43) &&
- ReadParam(m, iter, &m14) &&
- ReadParam(m, iter, &m24) &&
- ReadParam(m, iter, &m34) &&
- ReadParam(m, iter, &m44);
-
- if (success) {
- r->matrix().set(0, 0, m11);
- r->matrix().set(1, 0, m21);
- r->matrix().set(2, 0, m31);
- r->matrix().set(3, 0, m41);
- r->matrix().set(0, 1, m12);
- r->matrix().set(1, 1, m22);
- r->matrix().set(2, 1, m32);
- r->matrix().set(3, 1, m42);
- r->matrix().set(0, 2, m13);
- r->matrix().set(1, 2, m23);
- r->matrix().set(2, 2, m33);
- r->matrix().set(3, 2, m43);
- r->matrix().set(0, 3, m14);
- r->matrix().set(1, 3, m24);
- r->matrix().set(2, 3, m34);
- r->matrix().set(3, 3, m44);
- }
-
- return success;
+ const char* column_major_data;
+ if (!m->ReadBytes(iter, &column_major_data, sizeof(SkMScalar) * 16))
+ return false;
+ r->matrix().setColMajor(
+ reinterpret_cast<const SkMScalar*>(column_major_data));
+ return true;
}
void ParamTraits<gfx::Transform>::Log(
const param_type& p, std::string* l) {
+#ifdef SK_MSCALAR_IS_FLOAT
+ float row_major_data[16];
+ p.matrix().asRowMajorf(row_major_data);
+#else
+ double row_major_data[16];
+ p.matrix().asRowMajord(row_major_data);
+#endif
l->append("(");
- LogParam(p.matrix().get(0, 0), l);
- l->append(", ");
- LogParam(p.matrix().get(1, 0), l);
- l->append(", ");
- LogParam(p.matrix().get(2, 0), l);
- l->append(", ");
- LogParam(p.matrix().get(3, 0), l);
- l->append(", ");
- LogParam(p.matrix().get(0, 1), l);
- l->append(", ");
- LogParam(p.matrix().get(1, 1), l);
- l->append(", ");
- LogParam(p.matrix().get(2, 1), l);
- l->append(", ");
- LogParam(p.matrix().get(3, 1), l);
- l->append(", ");
- LogParam(p.matrix().get(0, 2), l);
- l->append(", ");
- LogParam(p.matrix().get(1, 2), l);
- l->append(", ");
- LogParam(p.matrix().get(2, 2), l);
- l->append(", ");
- LogParam(p.matrix().get(3, 2), l);
- l->append(", ");
- LogParam(p.matrix().get(0, 3), l);
- l->append(", ");
- LogParam(p.matrix().get(1, 3), l);
- l->append(", ");
- LogParam(p.matrix().get(2, 3), l);
- l->append(", ");
- LogParam(p.matrix().get(3, 3), l);
+ for (int i = 0; i < 16; ++i) {
+ if (i > 0)
+ l->append(", ");
+ LogParam(row_major_data[i], l);
+ }
l->append(") ");
}
« no previous file with comments | « no previous file | content/public/common/common_param_traits.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698