Merge "Don't double close file descriptor in DisplayDevice::queueBuffer."
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index b83b84a..48fd47f 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -413,10 +413,9 @@
if (mGraphicBuffer == nullptr) {
ALOGE("No buffer is ready for display [%s]", mDisplayName.c_str());
} else {
- int fd = mBufferReady.release();
-
status_t res = mNativeWindow->queueBuffer(mNativeWindow.get(),
- mGraphicBuffer->getNativeBuffer(), fd);
+ mGraphicBuffer->getNativeBuffer(),
+ dup(mBufferReady));
if (res != NO_ERROR) {
ALOGE("Error when queueing buffer for display [%s]: %d", mDisplayName.c_str(), res);
// We risk blocking on dequeueBuffer if the primary display failed
@@ -425,9 +424,12 @@
LOG_ALWAYS_FATAL("ANativeWindow::queueBuffer failed with error: %d", res);
} else {
mNativeWindow->cancelBuffer(mNativeWindow.get(),
- mGraphicBuffer->getNativeBuffer(), fd);
+ mGraphicBuffer->getNativeBuffer(),
+ dup(mBufferReady));
}
}
+
+ mBufferReady.reset();
mGraphicBuffer = nullptr;
}
}