OSDN Git Service

surfaceflinger: don't close fence fds after passing to queueBuffer
authorJesse Hall <jessehall@google.com>
Tue, 21 Oct 2014 18:09:17 +0000 (11:09 -0700)
committerJesse Hall <jessehall@google.com>
Tue, 21 Oct 2014 18:11:53 +0000 (11:11 -0700)
commitafe2b1fadd29149ceed639357e44e06e97c3a5ca
tree9916a67f5e0143c9bc647a899bf0495794729cda
parent649bafb7ba2c3204295bc3451ff7af7e28e714ed
surfaceflinger: don't close fence fds after passing to queueBuffer

ANativeWindow::queueBuffer takes ownership of the fence fd passed to
it, and will close it before returning. SurfaceFlinger's screenshot
code was also closing the syncFd it passed to queueBuffer. Most of the
time this meant the second close() silently failed, but in a rare race
condition the file descriptor could be reused between the two
close()s.

Bug: 17946343
Change-Id: Ib74fcb1dce52cc21328059c99b7c4c76f41aa3a5
services/surfaceflinger/SurfaceFlinger.cpp