diff options
author | Android Code Review <code-review@android.com> | 2009-11-05 13:10:16 -0800 |
---|---|---|
committer | Android Code Review <code-review@android.com> | 2009-11-05 13:10:16 -0800 |
commit | b52990e79d564424233bff50e0867f29a1acb2d2 (patch) | |
tree | f364b001fa518b86e813baeb772d482cefcd3de0 | |
parent | 193350461621a26cd27c24c5a2ea5eeb4ab66e46 (diff) | |
parent | 7b35fd7dd4114626b6f9b6bd066e9a13e9416022 (diff) | |
download | frameworks_base-b52990e79d564424233bff50e0867f29a1acb2d2.zip frameworks_base-b52990e79d564424233bff50e0867f29a1acb2d2.tar.gz frameworks_base-b52990e79d564424233bff50e0867f29a1acb2d2.tar.bz2 |
Merge change Ifcba56d2
* changes:
Capture failure of copybit->stretch()
-rw-r--r-- | libs/surfaceflinger/LayerBuffer.cpp | 64 |
1 files changed, 35 insertions, 29 deletions
diff --git a/libs/surfaceflinger/LayerBuffer.cpp b/libs/surfaceflinger/LayerBuffer.cpp index 00fab70..f4b16a1 100644 --- a/libs/surfaceflinger/LayerBuffer.cpp +++ b/libs/surfaceflinger/LayerBuffer.cpp @@ -493,38 +493,44 @@ void LayerBuffer::BufferSource::onDraw(const Region& clip) const copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_DISABLE); err = copybit->stretch(copybit, &tmp.img, &src.img, &tmp.crop, &src.crop, &tmp_it); - src = tmp; + if (err != NO_ERROR) { + LOGE("copybit failed (%s)", strerror(err)); + } else { + src = tmp; + } } } - const DisplayHardware& hw(mLayer.graphicPlane(0).displayHardware()); - copybit_image_t dst; - hw.getDisplaySurface(&dst); - const copybit_rect_t& drect - = reinterpret_cast<const copybit_rect_t&>(transformedBounds); - const State& s(mLayer.drawingState()); - region_iterator it(clip); - - // pick the right orientation for this buffer - int orientation = mLayer.getOrientation(); - if (UNLIKELY(mBufferHeap.transform)) { - Transform rot90; - GraphicPlane::orientationToTransfrom( - ISurfaceComposer::eOrientation90, 0, 0, &rot90); - const Transform& planeTransform(mLayer.graphicPlane(0).transform()); - const Layer::State& s(mLayer.drawingState()); - Transform tr(planeTransform * s.transform * rot90); - orientation = tr.getOrientation(); - } - - copybit->set_parameter(copybit, COPYBIT_TRANSFORM, orientation); - copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, s.alpha); - copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE); - - err = copybit->stretch(copybit, - &dst, &src.img, &drect, &src.crop, &it); - if (err != NO_ERROR) { - LOGE("copybit failed (%s)", strerror(err)); + if (err == NO_ERROR) { + const DisplayHardware& hw(mLayer.graphicPlane(0).displayHardware()); + copybit_image_t dst; + hw.getDisplaySurface(&dst); + const copybit_rect_t& drect + = reinterpret_cast<const copybit_rect_t&>(transformedBounds); + const State& s(mLayer.drawingState()); + region_iterator it(clip); + + // pick the right orientation for this buffer + int orientation = mLayer.getOrientation(); + if (UNLIKELY(mBufferHeap.transform)) { + Transform rot90; + GraphicPlane::orientationToTransfrom( + ISurfaceComposer::eOrientation90, 0, 0, &rot90); + const Transform& planeTransform(mLayer.graphicPlane(0).transform()); + const Layer::State& s(mLayer.drawingState()); + Transform tr(planeTransform * s.transform * rot90); + orientation = tr.getOrientation(); + } + + copybit->set_parameter(copybit, COPYBIT_TRANSFORM, orientation); + copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, s.alpha); + copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE); + + err = copybit->stretch(copybit, + &dst, &src.img, &drect, &src.crop, &it); + if (err != NO_ERROR) { + LOGE("copybit failed (%s)", strerror(err)); + } } } |