blob: afdfdbeac1357e16c33f00d50c3b629bfbf697ef [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;
use fuchsia_async::Task;
use 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");
}
})
}