From 7e88be90cf44838fd183ee3d4981c19d7171e501 Mon Sep 17 00:00:00 2001 From: Zach Reizner Date: Mon, 12 Oct 2015 15:20:33 -0700 Subject: drm_hwcomposer: improve logging and reliability of some error paths Change-Id: I4a955c6261a9674009eec2264eb2ef4a161da9c4 --- hwcomposer.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'hwcomposer.cpp') 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( + sf_layer->sourceCropf.left, sf_layer->sourceCropf.top, + sf_layer->sourceCropf.right, sf_layer->sourceCropf.bottom); + display_frame = DrmHwcRect( + 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( - sf_layer->sourceCropf.left, sf_layer->sourceCropf.top, - sf_layer->sourceCropf.right, sf_layer->sourceCropf.bottom); - display_frame = DrmHwcRect( - 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)); } } -- cgit v1.2.3