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

Side by Side Diff: src/core/SkOrderedReadBuffer.cpp

Issue 18523008: Debugging statements to investigate a bug. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/core/SkOrderedReadBuffer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkErrorInternals.h" 10 #include "SkErrorInternals.h"
11 #include "SkOrderedReadBuffer.h" 11 #include "SkOrderedReadBuffer.h"
12 #include "SkStream.h" 12 #include "SkStream.h"
13 #include "SkTypeface.h" 13 #include "SkTypeface.h"
14 14
15 SkOrderedReadBuffer::SkOrderedReadBuffer() : INHERITED() { 15 SkOrderedReadBuffer::SkOrderedReadBuffer() : INHERITED() {
16 fMemoryPtr = NULL; 16 fMemoryPtr = NULL;
17 17
18 fBitmapStorage = NULL; 18 fBitmapStorage = NULL;
19 fTFArray = NULL; 19 fTFArray = NULL;
20 fTFCount = 0; 20 fTFCount = 0;
21 21
22 fFactoryTDArray = NULL; 22 fFactoryTDArray = NULL;
23 fFactoryArray = NULL; 23 fFactoryArray = NULL;
24 fFactoryCount = 0; 24 fFactoryCount = 0;
25 fBitmapDecoder = NULL; 25 fBitmapDecoder = NULL;
26 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
27 fDecodedBitmapIndex = -1;
28 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
26 } 29 }
27 30
28 SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) : INHERI TED() { 31 SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) : INHERI TED() {
29 fReader.setMemory(data, size); 32 fReader.setMemory(data, size);
30 fMemoryPtr = NULL; 33 fMemoryPtr = NULL;
31 34
32 fBitmapStorage = NULL; 35 fBitmapStorage = NULL;
33 fTFArray = NULL; 36 fTFArray = NULL;
34 fTFCount = 0; 37 fTFCount = 0;
35 38
36 fFactoryTDArray = NULL; 39 fFactoryTDArray = NULL;
37 fFactoryArray = NULL; 40 fFactoryArray = NULL;
38 fFactoryCount = 0; 41 fFactoryCount = 0;
39 fBitmapDecoder = NULL; 42 fBitmapDecoder = NULL;
43 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
44 fDecodedBitmapIndex = -1;
45 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
40 } 46 }
41 47
42 SkOrderedReadBuffer::SkOrderedReadBuffer(SkStream* stream) { 48 SkOrderedReadBuffer::SkOrderedReadBuffer(SkStream* stream) {
43 const size_t length = stream->getLength(); 49 const size_t length = stream->getLength();
44 fMemoryPtr = sk_malloc_throw(length); 50 fMemoryPtr = sk_malloc_throw(length);
45 stream->read(fMemoryPtr, length); 51 stream->read(fMemoryPtr, length);
46 fReader.setMemory(fMemoryPtr, length); 52 fReader.setMemory(fMemoryPtr, length);
47 53
48 fBitmapStorage = NULL; 54 fBitmapStorage = NULL;
49 fTFArray = NULL; 55 fTFArray = NULL;
50 fTFCount = 0; 56 fTFCount = 0;
51 57
52 fFactoryTDArray = NULL; 58 fFactoryTDArray = NULL;
53 fFactoryArray = NULL; 59 fFactoryArray = NULL;
54 fFactoryCount = 0; 60 fFactoryCount = 0;
55 fBitmapDecoder = NULL; 61 fBitmapDecoder = NULL;
62 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
63 fDecodedBitmapIndex = -1;
64 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
56 } 65 }
57 66
58 SkOrderedReadBuffer::~SkOrderedReadBuffer() { 67 SkOrderedReadBuffer::~SkOrderedReadBuffer() {
59 sk_free(fMemoryPtr); 68 sk_free(fMemoryPtr);
60 SkSafeUnref(fBitmapStorage); 69 SkSafeUnref(fBitmapStorage);
61 } 70 }
62 71
63 bool SkOrderedReadBuffer::readBool() { 72 bool SkOrderedReadBuffer::readBool() {
64 return fReader.readBool(); 73 return fReader.readBool();
65 } 74 }
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 // fall through to use a place holder bitmap. 194 // fall through to use a place holder bitmap.
186 SkErrorInternals::SetError(kParseError_SkError, "SkOrderedWriteBuffe r::writeBitmap " 195 SkErrorInternals::SetError(kParseError_SkError, "SkOrderedWriteBuffe r::writeBitmap "
187 "stored the SkBitmap in an SkBitmapHeap, but " 196 "stored the SkBitmap in an SkBitmapHeap, but "
188 "SkOrderedReadBuffer has no SkBitmapHeapR eader to " 197 "SkOrderedReadBuffer has no SkBitmapHeapR eader to "
189 "retrieve the SkBitmap."); 198 "retrieve the SkBitmap.");
190 } 199 }
191 } else { 200 } else {
192 // The writer stored false, meaning the SkBitmap was not stored in an Sk BitmapHeap. 201 // The writer stored false, meaning the SkBitmap was not stored in an Sk BitmapHeap.
193 const size_t length = this->readUInt(); 202 const size_t length = this->readUInt();
194 if (length > 0) { 203 if (length > 0) {
204 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
205 fDecodedBitmapIndex++;
206 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
195 // A non-zero size means the SkBitmap was encoded. Read the data and pixel 207 // A non-zero size means the SkBitmap was encoded. Read the data and pixel
196 // offset. 208 // offset.
197 const void* data = this->skip(length); 209 const void* data = this->skip(length);
198 const int32_t xOffset = fReader.readS32(); 210 const int32_t xOffset = fReader.readS32();
199 const int32_t yOffset = fReader.readS32(); 211 const int32_t yOffset = fReader.readS32();
200 if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) { 212 if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) {
201 if (bitmap->width() == width && bitmap->height() == height) { 213 if (bitmap->width() == width && bitmap->height() == height) {
214 #ifdef DEBUG_NON_DETERMINISTIC_ASSERT
215 if (0 != xOffset || 0 != yOffset) {
216 SkDebugf("SkOrderedReadBuffer::readBitmap: heights match ,"
217 " but offset is not zero. \nInfo about the bitm ap:"
218 "\n\tIndex: %d\n\tDimensions: [%d %d]\n\tEncode d"
219 " data size: %d\n\tOffset: (%d, %d)\n",
220 fDecodedBitmapIndex, width, height, length, xOf fset,
221 yOffset);
222 }
223 #endif // DEBUG_NON_DETERMINISTIC_ASSERT
202 // If the width and height match, there should be no offset. 224 // If the width and height match, there should be no offset.
203 SkASSERT(0 == xOffset && 0 == yOffset); 225 SkASSERT(0 == xOffset && 0 == yOffset);
204 return; 226 return;
205 } 227 }
206 228
207 // This case can only be reached if extractSubset was called, so 229 // This case can only be reached if extractSubset was called, so
208 // the recorded width and height must be smaller than (or equal to 230 // the recorded width and height must be smaller than (or equal to
209 // the encoded width and height. 231 // the encoded width and height.
210 SkASSERT(width <= bitmap->width() && height <= bitmap->height()) ; 232 SkASSERT(width <= bitmap->width() && height <= bitmap->height()) ;
211 233
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 if (sizeRecorded != sizeRead) { 305 if (sizeRecorded != sizeRead) {
284 // we could try to fix up the offset... 306 // we could try to fix up the offset...
285 sk_throw(); 307 sk_throw();
286 } 308 }
287 } else { 309 } else {
288 // we must skip the remaining data 310 // we must skip the remaining data
289 fReader.skip(sizeRecorded); 311 fReader.skip(sizeRecorded);
290 } 312 }
291 return obj; 313 return obj;
292 } 314 }
OLDNEW
« no previous file with comments | « src/core/SkOrderedReadBuffer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698