OSDN Git Service

Fix deep copy of entry queue
authorChris Craik <ccraik@google.com>
Tue, 12 Jan 2016 03:28:17 +0000 (19:28 -0800)
committerChris Craik <ccraik@google.com>
Tue, 12 Jan 2016 03:28:19 +0000 (19:28 -0800)
also fixes several 64 bit compilation issues

Change-Id: I1825f822d02be72c21bdcd07cefa68217856ddc2

libs/hwui/FrameReorderer.cpp
libs/hwui/LayerReorderer.cpp
libs/hwui/LayerUpdateQueue.h

index 4bfc0b4..f492c7d 100644 (file)
@@ -452,7 +452,7 @@ void FrameReorderer::deferBitmapOp(const BitmapOp& op) {
             && PaintUtils::getXfermodeDirect(op.paint) == SkXfermode::kSrcOver_Mode
             && op.bitmap->colorType() != kAlpha_8_SkColorType
             && hasMergeableClip(*bakedState)) {
-        mergeid_t mergeId = (mergeid_t) op.bitmap->getGenerationID();
+        mergeid_t mergeId = reinterpret_cast<mergeid_t>(op.bitmap->getGenerationID());
         // TODO: AssetAtlas in mergeId
         currentLayer().deferMergeableOp(mAllocator, bakedState, OpBatchType::Bitmap, mergeId);
     } else {
@@ -509,7 +509,7 @@ void FrameReorderer::deferPatchOp(const PatchOp& op) {
     if (bakedState->computedState.transform.isPureTranslate()
             && PaintUtils::getXfermodeDirect(op.paint) == SkXfermode::kSrcOver_Mode
             && hasMergeableClip(*bakedState)) {
-        mergeid_t mergeId = (mergeid_t) op.bitmap->getGenerationID();
+        mergeid_t mergeId = reinterpret_cast<mergeid_t>(op.bitmap->getGenerationID());
         // TODO: AssetAtlas in mergeId
 
         // Only use the MergedPatch batchId when merged, so Bitmap+Patch don't try to merge together
index 9a17e93..946897b 100644 (file)
@@ -53,7 +53,7 @@ public:
 
     void dump() const {
         ALOGD("    Batch %p, id %d, merging %d, count %d, bounds " RECT_STRING,
-                this, mBatchId, mMerging, mOps.size(), RECT_ARGS(mBounds));
+                this, mBatchId, mMerging, (int) mOps.size(), RECT_ARGS(mBounds));
     }
 protected:
     batchid_t mBatchId;
index be612d2..5b1a854 100644 (file)
@@ -42,7 +42,7 @@ public:
     LayerUpdateQueue() {}
     void enqueueLayerWithDamage(RenderNode* renderNode, Rect dirty);
     void clear();
-    const std::vector<Entry> entries() const { return mEntries; }
+    const std::vector<Entry>& entries() const { return mEntries; }
 private:
     std::vector<Entry> mEntries;
 };