aboutsummaryrefslogtreecommitdiff
path: root/hwcomposer.cpp
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2015-10-12 15:20:33 -0700
committerZach Reizner <zachr@google.com>2015-10-12 19:04:47 -0700
commit7e88be90cf44838fd183ee3d4981c19d7171e501 (patch)
tree5764fea257b0f45b78693d9230dcb9b712cf108a /hwcomposer.cpp
parentf99d53f6f9535055710f17ff7573f9b52d54e07f (diff)
downloaddrm_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.cpp34
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));
}
}