| Index: src/core/SkPictureRecord.cpp
|
| diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
|
| index b2f9216df6a7b17b5bf1934af4ebfe93fda6b781..4279ac3c2c2cc696f165b5cf2f6c67e1402fa314 100644
|
| --- a/src/core/SkPictureRecord.cpp
|
| +++ b/src/core/SkPictureRecord.cpp
|
| @@ -197,13 +197,13 @@ bool SkPictureRecord::isDrawingToLayer() const {
|
| * Read the op code from 'offset' in 'writer' and extract the size too.
|
| */
|
| static DrawType peek_op_and_size(SkWriter32* writer, int32_t offset, uint32_t* size) {
|
| - uint32_t* peek = writer->peek32(offset);
|
| + uint32_t peek = writer->read32At(offset);
|
|
|
| uint32_t op;
|
| - UNPACK_8_24(*peek, op, *size);
|
| + UNPACK_8_24(peek, op, *size);
|
| if (MASK_24 == *size) {
|
| // size required its own slot right after the op code
|
| - *size = *writer->peek32(offset+kUInt32Size);
|
| + *size = writer->read32At(offset+kUInt32Size);
|
| }
|
| return (DrawType) op;
|
| }
|
| @@ -306,7 +306,7 @@ static bool remove_save_layer1(SkWriter32* writer, int32_t offset,
|
| // back up to the save block
|
| // TODO: add a stack to track save*/restore offsets rather than searching backwards
|
| while (offset > 0) {
|
| - offset = *writer->peek32(offset);
|
| + offset = writer->read32At(offset);
|
| }
|
|
|
| int pattern[] = { SAVE_LAYER, kDRAW_BITMAP_FLAVOR, /* RESTORE */ };
|
| @@ -331,8 +331,8 @@ static bool remove_save_layer1(SkWriter32* writer, int32_t offset,
|
| * field alone so the NOOP can be skipped later.
|
| */
|
| static void convert_command_to_noop(SkWriter32* writer, uint32_t offset) {
|
| - uint32_t* ptr = writer->peek32(offset);
|
| - *ptr = (*ptr & MASK_24) | (NOOP << 24);
|
| + uint32_t command = writer->read32At(offset);
|
| + writer->write32At(offset, (command & MASK_24) | (NOOP << 24));
|
| }
|
|
|
| /*
|
| @@ -353,8 +353,8 @@ static bool merge_savelayer_paint_into_drawbitmp(SkWriter32* writer,
|
| uint32_t slPaintOffset = getPaintOffset(SAVE_LAYER, saveLayerInfo.fSize);
|
|
|
| // we have a match, now we need to get the paints involved
|
| - uint32_t dbmPaintId = *writer->peek32(dbmInfo.fOffset+dbmPaintOffset);
|
| - uint32_t saveLayerPaintId = *writer->peek32(saveLayerInfo.fOffset+slPaintOffset);
|
| + uint32_t dbmPaintId = writer->read32At(dbmInfo.fOffset+dbmPaintOffset);
|
| + uint32_t saveLayerPaintId = writer->read32At(saveLayerInfo.fOffset+slPaintOffset);
|
|
|
| if (0 == saveLayerPaintId) {
|
| // In this case the saveLayer/restore isn't needed at all - just kill the saveLayer
|
| @@ -367,9 +367,7 @@ static bool merge_savelayer_paint_into_drawbitmp(SkWriter32* writer,
|
| // In this case just make the DBM* use the saveLayer's paint, kill the saveLayer
|
| // and signal the caller (by returning true) to not add the RESTORE op
|
| convert_command_to_noop(writer, saveLayerInfo.fOffset);
|
| - uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset);
|
| - SkASSERT(0 == *ptr);
|
| - *ptr = saveLayerPaintId;
|
| + writer->write32At(dbmInfo.fOffset+dbmPaintOffset, saveLayerPaintId);
|
| return true;
|
| }
|
|
|
| @@ -402,9 +400,7 @@ static bool merge_savelayer_paint_into_drawbitmp(SkWriter32* writer,
|
|
|
| // kill the saveLayer and alter the DBMR2R's paint to be the modified one
|
| convert_command_to_noop(writer, saveLayerInfo.fOffset);
|
| - uint32_t* ptr = writer->peek32(dbmInfo.fOffset+dbmPaintOffset);
|
| - SkASSERT(dbmPaintId == *ptr);
|
| - *ptr = data->index();
|
| + writer->write32At(dbmInfo.fOffset+dbmPaintOffset, data->index());
|
| return true;
|
| }
|
|
|
| @@ -425,7 +421,7 @@ static bool remove_save_layer2(SkWriter32* writer, int32_t offset,
|
| // back up to the save block
|
| // TODO: add a stack to track save*/restore offsets rather than searching backwards
|
| while (offset > 0) {
|
| - offset = *writer->peek32(offset);
|
| + offset = writer->read32At(offset);
|
| }
|
|
|
| int pattern[] = { SAVE_LAYER, SAVE, CLIP_RECT, kDRAW_BITMAP_FLAVOR, RESTORE, /* RESTORE */ };
|
| @@ -462,7 +458,7 @@ static bool collapse_save_clip_restore(SkWriter32* writer, int32_t offset,
|
|
|
| // back up to the save block
|
| while (offset > 0) {
|
| - offset = *writer->peek32(offset);
|
| + offset = writer->read32At(offset);
|
| }
|
|
|
| // now offset points to a save
|
| @@ -477,7 +473,7 @@ static bool collapse_save_clip_restore(SkWriter32* writer, int32_t offset,
|
| SkASSERT(kSaveSize == opSize);
|
|
|
| // get the save flag (last 4-bytes of the space allocated for the opSize)
|
| - SkCanvas::SaveFlags saveFlags = (SkCanvas::SaveFlags) *writer->peek32(offset+4);
|
| + SkCanvas::SaveFlags saveFlags = (SkCanvas::SaveFlags) writer->read32At(offset+4);
|
| if (SkCanvas::kMatrixClip_SaveFlag != saveFlags) {
|
| // This function's optimization is only correct for kMatrixClip style saves.
|
| // TODO: set checkMatrix & checkClip booleans here and then check for the
|
| @@ -694,9 +690,9 @@ static bool regionOpExpands(SkRegion::Op op) {
|
| void SkPictureRecord::fillRestoreOffsetPlaceholdersForCurrentStackLevel(uint32_t restoreOffset) {
|
| int32_t offset = fRestoreOffsetStack.top();
|
| while (offset > 0) {
|
| - uint32_t* peek = fWriter.peek32(offset);
|
| - offset = *peek;
|
| - *peek = restoreOffset;
|
| + uint32_t peek = fWriter.read32At(offset);
|
| + fWriter.write32At(offset, restoreOffset);
|
| + offset = peek;
|
| }
|
|
|
| #ifdef SK_DEBUG
|
|
|