diff options
Diffstat (limited to 'libs/hwui/DisplayListRenderer.cpp')
-rw-r--r-- | libs/hwui/DisplayListRenderer.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/libs/hwui/DisplayListRenderer.cpp b/libs/hwui/DisplayListRenderer.cpp index 24f4f1cf84b6..a884d8e7af40 100644 --- a/libs/hwui/DisplayListRenderer.cpp +++ b/libs/hwui/DisplayListRenderer.cpp @@ -16,11 +16,11 @@ #define LOG_TAG "OpenGLRenderer" +#include <SkCamera.h> #include "DisplayListLogBuffer.h" #include "DisplayListRenderer.h" #include "Caches.h" -#include "SkCamera.h" namespace android { namespace uirenderer { @@ -91,7 +91,9 @@ void DisplayList::outputLogBuffer(int fd) { fflush(file); } -DisplayList::DisplayList(const DisplayListRenderer& recorder) { +DisplayList::DisplayList(const DisplayListRenderer& recorder) : + mTransformMatrix(NULL), mTransformCamera(NULL), mTransformMatrix3D(NULL) { + initFromDisplayListRenderer(recorder); } @@ -124,9 +126,6 @@ void DisplayList::initProperties() { mWidth = 0; mHeight = 0; mPivotExplicitlySet = false; - mTransformMatrix = NULL; - mTransformCamera = NULL; - mTransformMatrix3D = NULL; mCaching = false; } @@ -140,17 +139,19 @@ void DisplayList::destroyDisplayListDeferred(DisplayList* displayList) { void DisplayList::clearResources() { sk_free((void*) mReader.base()); - if (mTransformMatrix) { - delete mTransformMatrix; - mTransformMatrix = NULL; - } - if (mTransformCamera) { - delete mTransformCamera; - mTransformCamera = NULL; - } - if (mTransformMatrix3D) { - delete mTransformMatrix3D; - mTransformMatrix3D = NULL; + if (USE_DISPLAY_LIST_PROPERTIES) { + if (mTransformMatrix) { + delete mTransformMatrix; + mTransformMatrix = NULL; + } + if (mTransformCamera) { + delete mTransformCamera; + mTransformCamera = NULL; + } + if (mTransformMatrix3D) { + delete mTransformMatrix3D; + mTransformMatrix3D = NULL; + } } Caches& caches = Caches::getInstance(); @@ -825,7 +826,7 @@ bool DisplayList::replay(OpenGLRenderer& renderer, uint32_t width, while (!mReader.eof()) { int op = mReader.readInt(); if (op & OP_MAY_BE_SKIPPED_MASK) { - int32_t skip = mReader.readInt() * 4; + int32_t skip = mReader.readInt(); if (CC_LIKELY(flags & kReplayFlag_ClipChildren)) { mReader.skip(skip); DISPLAY_LIST_LOGD("%s%s skipping %d bytes", (char*) indent, |