Move sequence number into ProcessResource
... so that sequence number won't suffer from use-after-free if puid
is reused for a new process.
Bug: b/238792446
Change-Id: I3a452a11f0c4f0b952e7904a17de309a96aecf62
diff --git a/stream-servers/RenderThread.cpp b/stream-servers/RenderThread.cpp
index 3a4e353..bc3090a 100644
--- a/stream-servers/RenderThread.cpp
+++ b/stream-servers/RenderThread.cpp
@@ -350,7 +350,7 @@
GfxApiLogger gfxLogger;
auto& metricsLogger = FrameBuffer::getFB()->getMetricsLogger();
- uint32_t* seqnoPtr = nullptr;
+ const ProcessResources* processResources = nullptr;
while (true) {
// Let's make sure we read enough data for at least some processing.
@@ -437,8 +437,8 @@
.setAnnotations(std::move(renderThreadData))
.build();
- if (!seqnoPtr && tInfo.m_puid) {
- seqnoPtr = FrameBuffer::getFB()->getProcessSequenceNumberPtr(tInfo.m_puid);
+ if (!processResources && tInfo.m_puid) {
+ processResources = FrameBuffer::getFB()->getProcessResources(tInfo.m_puid);
}
progress = false;
@@ -458,7 +458,8 @@
.metricsLogger = &metricsLogger,
};
last = tInfo.m_vkInfo->m_vkDec.decode(readBuf.buf(), readBuf.validData(), ioStream,
- seqnoPtr, context);
+ processResources->getSequenceNumberPtr(),
+ context);
if (last > 0) {
readBuf.consume(last);
progress = true;