drm_hwcomposer: duplicate buffer_handles before hwc_set returns
This is needed because SF will sometimes release buffer_handles before GL gets
to using them for composition.
Change-Id: I01db0975cc82d6b59bf4f9521a24071baf89c38a
diff --git a/glworker.cpp b/glworker.cpp
index df6a8f2..fe2fd66 100644
--- a/glworker.cpp
+++ b/glworker.cpp
@@ -600,11 +600,13 @@
}
for (i = 0; i < num_layers; i++) {
- const struct hwc_layer_1 *layer = &layers[i];
+ struct hwc_layer_1 *layer = &layers[i];
if (ret) {
- if (layer->acquireFenceFd >= 0)
+ if (layer->acquireFenceFd >= 0) {
close(layer->acquireFenceFd);
+ layer->acquireFenceFd = -1;
+ }
continue;
}
@@ -613,6 +615,7 @@
&layer_textures.back());
if (!ret) {
ret = EGLFenceWait(egl_display_, layer->acquireFenceFd);
+ layer->acquireFenceFd = -1;
}
if (ret) {
layer_textures.pop_back();