vr_wm: Import cloned buffer in VR HWC
Bug: b/35619417
Test: Compiled and tested on device. Ensured SurfaceFlinger content is
visible in VR mode.
Change-Id: Ic2e653c9771fd022079486704b9e7a412d18bfdc
diff --git a/services/vr/vr_window_manager/composer/impl/vr_hwc.cpp b/services/vr/vr_window_manager/composer/impl/vr_hwc.cpp
index 9642224..264ee1c 100644
--- a/services/vr/vr_window_manager/composer/impl/vr_hwc.cpp
+++ b/services/vr/vr_window_manager/composer/impl/vr_hwc.cpp
@@ -48,6 +48,7 @@
int32_t format = 0;
GraphicBufferMapper& mapper = GraphicBufferMapper::get();
+ // Need to register |handle| otherwise we can't read its properties.
if (mapper.registerBuffer(handle) != OK) {
ALOGE("Failed to register buffer");
return nullptr;
@@ -66,9 +67,15 @@
// capability. Otherwise assume a count of 1.
mapper.getLayerCount(handle, &layer_count);
+ // NOTE: Can't re-use |handle| since we don't own it.
sp<GraphicBuffer> buffer = new GraphicBuffer(
width, height, format, layer_count, producer_usage, consumer_usage,
stride, native_handle_clone(handle), true);
+ // Need to register the cloned buffer otherwise it can't be used later on.
+ if (mapper.registerBuffer(buffer.get()) != OK) {
+ ALOGE("Failed to register cloned buffer");
+ return nullptr;
+ }
return buffer;
}