systrace: avoid queuing signaled fence in FenceMonitor

If the HWC release fence dequeued has already signaled, the existing
mechanism will still queue it and show it later if there's release fence
waiting, which is not accurate. This change will avoid queuing signaled
fences into FenceMonitor to make the trace more reasonable.

Bug: 127781085
Test: build, flash, boot and take systrace with gfx category
Change-Id: Ie607f690bba8ccdfab4d02793abcf21e18c3eb63
diff --git a/libs/gui/Surface.cpp b/libs/gui/Surface.cpp
index af6373d..6460325 100644
--- a/libs/gui/Surface.cpp
+++ b/libs/gui/Surface.cpp
@@ -467,7 +467,15 @@
         char message[64];
 
         std::lock_guard<std::mutex> lock(mMutex);
-        snprintf(message, sizeof(message), "Trace fence %u", mFencesQueued);
+        if (fence->getSignalTime() != Fence::SIGNAL_TIME_PENDING) {
+            snprintf(message, sizeof(message), "%s fence %u has signaled", mName, mFencesQueued);
+            ATRACE_NAME(message);
+            // Need an increment on both to make the trace number correct.
+            mFencesQueued++;
+            mFencesSignaled++;
+            return;
+        }
+        snprintf(message, sizeof(message), "Trace %s fence %u", mName, mFencesQueued);
         ATRACE_NAME(message);
 
         mQueue.push_back(fence);