sk_sp<SkFlattenable> SkRecordedDrawable::CreateProc(SkReadBuffer& buffer) { // Read the bounds. SkRect bounds; buffer.readRect(&bounds); // Unflatten into a SkPictureData. SkPictInfo info; info.setVersion(buffer.getVersion()); info.fCullRect = bounds; info.fFlags = 0; // ??? SkAutoTDelete<SkPictureData> pictureData(SkPictureData::CreateFromBuffer(buffer, info)); if (!pictureData) { return nullptr; } // Create a drawable. SkPicturePlayback playback(pictureData); SkPictureRecorder recorder; playback.draw(recorder.beginRecording(bounds), nullptr, &buffer); return recorder.finishRecordingAsDrawable(); }