diff options
author | Zach Reizner <zachr@google.com> | 2015-10-12 15:20:33 -0700 |
---|---|---|
committer | Zach Reizner <zachr@google.com> | 2015-10-12 19:04:47 -0700 |
commit | 7e88be90cf44838fd183ee3d4981c19d7171e501 (patch) | |
tree | 5764fea257b0f45b78693d9230dcb9b712cf108a /hwcomposer.cpp | |
parent | f99d53f6f9535055710f17ff7573f9b52d54e07f (diff) | |
download | drm_hwcomposer-7e88be90cf44838fd183ee3d4981c19d7171e501.tar.gz |
drm_hwcomposer: improve logging and reliability of some error paths
Change-Id: I4a955c6261a9674009eec2264eb2ef4a161da9c4
Diffstat (limited to 'hwcomposer.cpp')
-rw-r--r-- | hwcomposer.cpp | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/hwcomposer.cpp b/hwcomposer.cpp index fc421c3..0a7be52 100644 --- a/hwcomposer.cpp +++ b/hwcomposer.cpp @@ -264,16 +264,15 @@ void DrmHwcNativeHandle::Clear() { int DrmHwcLayer::InitFromHwcLayer(hwc_layer_1_t *sf_layer, Importer *importer, const gralloc_module_t *gralloc) { sf_handle = sf_layer->handle; - int ret = buffer.ImportBuffer(sf_layer->handle, importer); - if (ret) - return ret; - - ret = handle.CopyBufferHandle(sf_layer->handle, gralloc); - if (ret) - return ret; - alpha = sf_layer->planeAlpha; + source_crop = DrmHwcRect<float>( + sf_layer->sourceCropf.left, sf_layer->sourceCropf.top, + sf_layer->sourceCropf.right, sf_layer->sourceCropf.bottom); + display_frame = DrmHwcRect<int>( + sf_layer->displayFrame.left, sf_layer->displayFrame.top, + sf_layer->displayFrame.right, sf_layer->displayFrame.bottom); + switch (sf_layer->transform) { case 0: transform = DrmHwcTransform::kIdentity; @@ -313,12 +312,13 @@ int DrmHwcLayer::InitFromHwcLayer(hwc_layer_1_t *sf_layer, Importer *importer, return -EINVAL; } - source_crop = DrmHwcRect<float>( - sf_layer->sourceCropf.left, sf_layer->sourceCropf.top, - sf_layer->sourceCropf.right, sf_layer->sourceCropf.bottom); - display_frame = DrmHwcRect<int>( - sf_layer->displayFrame.left, sf_layer->displayFrame.top, - sf_layer->displayFrame.right, sf_layer->displayFrame.bottom); + int ret = buffer.ImportBuffer(sf_layer->handle, importer); + if (ret) + return ret; + + ret = handle.CopyBufferHandle(sf_layer->handle, gralloc); + if (ret) + return ret; return 0; } @@ -507,7 +507,11 @@ static int hwc_set(hwc_composer_device_1_t *dev, size_t num_displays, DrmHwcLayer &layer = display_contents.layers[j]; - layer.InitFromHwcLayer(sf_layer, ctx->importer, ctx->gralloc); + ret = layer.InitFromHwcLayer(sf_layer, ctx->importer, ctx->gralloc); + if (ret) { + ALOGE("Failed to init composition from layer %d", ret); + return ret; + } map.layers.emplace_back(std::move(layer)); } } |