diff options
author | John Reck <jreck@google.com> | 2017-11-13 11:32:39 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2017-11-13 11:32:39 -0800 |
commit | 47f5c3a234c5c201ef640489af3ff25b5eec6652 (patch) | |
tree | 95308e88c2e4c19dd16030a4afe07603112ed8bc /libs/hwui/FrameInfoVisualizer.cpp | |
parent | ae5eb83a32a2005bd2c872bdf7b0621190ddb062 (diff) |
Fix leak of FILE* in dumping
Avoid fdopen as fclose, which frees the FILE*, will close
the FD which we don't want. Just normalize on dprintf instead,
and we can add buffering if it turns out to matter at some point
Test: ran 'dumpsys gfxinfo framestats' in a loop while observing PSS
Change-Id: I7808753641aa1055cfdf570c3e017017f11f1dee
Diffstat (limited to 'libs/hwui/FrameInfoVisualizer.cpp')
-rw-r--r-- | libs/hwui/FrameInfoVisualizer.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/libs/hwui/FrameInfoVisualizer.cpp b/libs/hwui/FrameInfoVisualizer.cpp index 91756e79ad53..5aea04d94cbe 100644 --- a/libs/hwui/FrameInfoVisualizer.cpp +++ b/libs/hwui/FrameInfoVisualizer.cpp @@ -245,22 +245,19 @@ void FrameInfoVisualizer::dumpData(int fd) { // last call to dumpData(). In other words if there's a dumpData(), draw frame, // dumpData(), the last dumpData() should only log 1 frame. - FILE* file = fdopen(fd, "a"); - fprintf(file, "\n\tDraw\tPrepare\tProcess\tExecute\n"); + dprintf(fd, "\n\tDraw\tPrepare\tProcess\tExecute\n"); for (size_t i = 0; i < mFrameSource.size(); i++) { if (mFrameSource[i][FrameInfoIndex::IntendedVsync] <= mLastFrameLogged) { continue; } mLastFrameLogged = mFrameSource[i][FrameInfoIndex::IntendedVsync]; - fprintf(file, "\t%3.2f\t%3.2f\t%3.2f\t%3.2f\n", + dprintf(fd, "\t%3.2f\t%3.2f\t%3.2f\t%3.2f\n", durationMS(i, FrameInfoIndex::IntendedVsync, FrameInfoIndex::SyncStart), durationMS(i, FrameInfoIndex::SyncStart, FrameInfoIndex::IssueDrawCommandsStart), durationMS(i, FrameInfoIndex::IssueDrawCommandsStart, FrameInfoIndex::SwapBuffers), durationMS(i, FrameInfoIndex::SwapBuffers, FrameInfoIndex::FrameCompleted)); } - - fflush(file); } } /* namespace uirenderer */ |