diff options
author | Dianne Hackborn <hackbod@google.com> | 2011-04-13 18:15:56 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2011-04-14 10:57:22 -0700 |
commit | 0ffc988a7f47013805d5abeed1c20f159b3bd799 (patch) | |
tree | f9873ba8872388b88d75a3d83144e03e7c3f59f4 /libs/binder | |
parent | 5cde33b7d14841677414fa9f43a043bb4a89ffa7 (diff) | |
download | frameworks_base-0ffc988a7f47013805d5abeed1c20f159b3bd799.zip frameworks_base-0ffc988a7f47013805d5abeed1c20f159b3bd799.tar.gz frameworks_base-0ffc988a7f47013805d5abeed1c20f159b3bd799.tar.bz2 |
Rewrite battery history storage.
We now write battery history directly into a buffer, instead of
creating objects. This allows for more efficient storage; later
it can be even better because we can only write deltas.
The old code is still there temporarily for validation.
Change-Id: I9707d4d8ff30855be8ebdc93bc078911040d8e0b
Diffstat (limited to 'libs/binder')
-rw-r--r-- | libs/binder/Parcel.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index d57f2c9..6ed85d7 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -338,7 +338,7 @@ void Parcel::setDataPosition(size_t pos) const status_t Parcel::setDataCapacity(size_t size) { - if (size > mDataSize) return continueWrite(size); + if (size > mDataCapacity) return continueWrite(size); return NO_ERROR; } @@ -386,10 +386,12 @@ status_t Parcel::appendFrom(Parcel *parcel, size_t offset, size_t len) } int numObjects = lastIndex - firstIndex + 1; - // grow data - err = growData(len); - if (err != NO_ERROR) { - return err; + if ((mDataSize+len) > mDataCapacity) { + // grow data + err = growData(len); + if (err != NO_ERROR) { + return err; + } } // append data @@ -1384,8 +1386,10 @@ status_t Parcel::continueWrite(size_t desired) return NO_MEMORY; } } else { - mDataSize = desired; - LOGV("continueWrite Setting data size of %p to %d\n", this, mDataSize); + if (mDataSize > desired) { + mDataSize = desired; + LOGV("continueWrite Setting data size of %p to %d\n", this, mDataSize); + } if (mDataPos > desired) { mDataPos = desired; LOGV("continueWrite Setting data pos of %p to %d\n", this, mDataPos); |