Callers of RegionView::StartWorker() MUST retain the return value in
order for shared-memory signaling to work properly.
BUG: 71618825
Change-Id: Ibaf86baaea6a0f3872a416aa0f6bbb97caf31f08
diff --git a/common/vsoc/lib/region_view.h b/common/vsoc/lib/region_view.h
index 2f07f71..bfe29db 100644
--- a/common/vsoc/lib/region_view.h
+++ b/common/vsoc/lib/region_view.h
@@ -146,7 +146,8 @@
uint32_t last_observed_value) override;
// Starts the signal table scanner. This must be invoked by subclasses, which
- // must store the returned unique_ptr as a class member.
+ // MUST store the returned unique_ptr as a class member.
+ __attribute__((warn_unused_result))
std::unique_ptr<RegionWorker> StartWorker();
// Returns a pointer to the start of region data that is cast to the given
diff --git a/guest/commands/vsoc_input_service/vsoc_input_service.cpp b/guest/commands/vsoc_input_service/vsoc_input_service.cpp
index 5fc9b43..d100a52 100644
--- a/guest/commands/vsoc_input_service/vsoc_input_service.cpp
+++ b/guest/commands/vsoc_input_service/vsoc_input_service.cpp
@@ -82,7 +82,7 @@
bool VSoCInputService::ProcessEvents() {
auto input_events_rv = InputEventsRegionView::GetInstance();
// TODO(jemoreira): Post available devices to region
- input_events_rv->StartWorker();
+ auto worker = input_events_rv->StartWorker();
// Start device threads
std::thread screen_thread([this]() {
diff --git a/guest/hals/audio/record_audio.cpp b/guest/hals/audio/record_audio.cpp
index fb8d25a..43330f4 100644
--- a/guest/hals/audio/record_audio.cpp
+++ b/guest/hals/audio/record_audio.cpp
@@ -81,7 +81,7 @@
CHECK(audio_data_rv != nullptr);
/* std::unique_ptr<vsoc::RegionWorker> audio_worker = */
- audio_data_rv->StartWorker();
+ auto worker = audio_data_rv->StartWorker();
std::unique_ptr<WaveWriter> writer;
int64_t frameCount = 0ll;