diff options
| author | 2009-12-02 16:23:11 -0800 | |
|---|---|---|
| committer | 2009-12-02 16:23:11 -0800 | |
| commit | d86beb99a7c9625daad01c4aaa5eaf4ca3ac2194 (patch) | |
| tree | b4bbba929ebc29b2ccb1aef1b7c44e115769e772 /libs/surfaceflinger/LayerBuffer.cpp | |
| parent | cc6ff2bc6011294367d9a8c644f811449e952eb7 (diff) | |
fix [2291418] Camera preview cannot work in Emulator
The image buffer used by glTexImage2d() would be uninitialized when no copybit engine
can be found.
We now always initialize images, since the abscence of copybit is not necessarily fatal.
Diffstat (limited to 'libs/surfaceflinger/LayerBuffer.cpp')
| -rw-r--r-- | libs/surfaceflinger/LayerBuffer.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/libs/surfaceflinger/LayerBuffer.cpp b/libs/surfaceflinger/LayerBuffer.cpp index 88ef7e43005c..eb017bf835c5 100644 --- a/libs/surfaceflinger/LayerBuffer.cpp +++ b/libs/surfaceflinger/LayerBuffer.cpp @@ -266,7 +266,16 @@ LayerBuffer::Buffer::Buffer(const ISurface::BufferHeap& buffers, ssize_t offset) : mBufferHeap(buffers) { NativeBuffer& src(mNativeBuffer); - src.img.handle = 0; + src.crop.l = 0; + src.crop.t = 0; + src.crop.r = buffers.w; + src.crop.b = buffers.h; + + src.img.w = buffers.hor_stride ?: buffers.w; + src.img.h = buffers.ver_stride ?: buffers.h; + src.img.format = buffers.format; + src.img.base = (void*)(intptr_t(buffers.heap->base()) + offset); + src.img.handle = 0; gralloc_module_t const * module = LayerBuffer::getGrallocModule(); if (module && module->perform) { @@ -276,19 +285,12 @@ LayerBuffer::Buffer::Buffer(const ISurface::BufferHeap& buffers, ssize_t offset) offset, buffers.heap->base(), &src.img.handle); - if (err == NO_ERROR) { - src.crop.l = 0; - src.crop.t = 0; - src.crop.r = buffers.w; - src.crop.b = buffers.h; - - src.img.w = buffers.hor_stride ?: buffers.w; - src.img.h = buffers.ver_stride ?: buffers.h; - src.img.format = buffers.format; - src.img.base = (void*)(intptr_t(buffers.heap->base()) + offset); - } + LOGE_IF(err, "CREATE_HANDLE_FROM_BUFFER (heapId=%d, size=%d, " + "offset=%ld, base=%p) failed (%s)", + buffers.heap->heapID(), buffers.heap->getSize(), + offset, buffers.heap->base(), strerror(-err)); } -} + } LayerBuffer::Buffer::~Buffer() { |