void SkPicture::flatten(SkWriteBuffer& buffer) const { SkPicturePlayback* playback = fPlayback; if (NULL == playback && fRecord) { playback = SkNEW_ARGS(SkPicturePlayback, (*fRecord)); } SkPictInfo header; this->createHeader(&header); buffer.writeByteArray(&header, sizeof(header)); if (playback) { buffer.writeBool(true); playback->flatten(buffer); // delete playback if it is a local version (i.e. cons'd up just now) if (playback != fPlayback) { SkDELETE(playback); } } else { buffer.writeBool(false); } }