blob: 2575c7fed3e888f871525f244efedebbb8634ad9 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use {fidl_fuchsia_ui_pointer as fpointer, fuchsia_async::Task, tracing::debug};
// Returns a Task that continuously listens for touch events and responds to them.
pub fn autolisten_touch(touch_source: fpointer::TouchSourceProxy) -> Task<()> {
Task::local(async move {
let mut returned_events = Vec::<fpointer::TouchEvent>::new();
loop {
let responses: Vec<fpointer::TouchResponse> = returned_events
.iter()
.map(|event| {
let mut response = fpointer::TouchResponse::default();
if event.pointer_sample.is_some() {
response.response_type = Some(fpointer::TouchResponseType::Yes);
}
response
})
.collect();
returned_events =
touch_source.watch(&responses).await.expect("touch source Watch() error");
debug!("Touch event received");
}
})
}