summaryrefslogtreecommitdiffstats
path: root/libs/binder
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2011-04-13 18:15:56 -0700
committerDianne Hackborn <hackbod@google.com>2011-04-14 10:57:22 -0700
commit0ffc988a7f47013805d5abeed1c20f159b3bd799 (patch)
treef9873ba8872388b88d75a3d83144e03e7c3f59f4 /libs/binder
parent5cde33b7d14841677414fa9f43a043bb4a89ffa7 (diff)
downloadframeworks_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.cpp18
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);