DeviceHaptics task

This commit is contained in:
galister
2025-12-24 17:27:02 +09:00
parent 1d6a0e4bde
commit 10191385e4
11 changed files with 80 additions and 11 deletions

View File

@@ -10,7 +10,7 @@ use crate::{
use crate::{
backend::{
self,
task::{OverlayTask, TaskType},
task::{InputTask, OverlayTask, TaskType},
},
ipc::signal::WayVRSignal,
overlays::{self},
@@ -160,6 +160,10 @@ where
wayland_server.pending_haptics = Some(haptics);
}
}
WayVRSignal::DeviceHaptics(device, haptics) => {
app.tasks
.enqueue(TaskType::Input(InputTask::Haptics { device, haptics }));
}
WayVRSignal::DropOverlay(overlay_id) => {
app.tasks
.enqueue(TaskType::Overlay(OverlayTask::Drop(OverlaySelector::Id(

View File

@@ -507,6 +507,21 @@ impl Connection {
}));
}
fn handle_wlx_device_haptics(
params: &mut TickParams,
device: usize,
haptics_params: packet_client::WlxHapticsParams,
) {
params.signals.send(WayVRSignal::DeviceHaptics(
device,
crate::backend::input::Haptics {
duration: haptics_params.duration,
frequency: haptics_params.frequency,
intensity: haptics_params.intensity,
},
));
}
fn handle_wlx_panel(
params: &mut TickParams,
custom_params: packet_client::WlxModifyPanelParams,
@@ -606,6 +621,9 @@ impl Connection {
#[cfg(feature = "wayvr")]
Self::handle_wlx_haptics(params, haptics_params);
}
PacketClient::WlxDeviceHaptics(device, haptics_params) => {
Self::handle_wlx_device_haptics(params, device, haptics_params);
}
PacketClient::WlxModifyPanel(custom_params) => {
Self::handle_wlx_panel(params, custom_params);
}

View File

@@ -14,6 +14,7 @@ pub enum WayVRSignal {
BroadcastStateChanged(wayvr_ipc::packet_server::WvrStateChanged),
#[cfg(feature = "wayvr")]
Haptics(crate::backend::input::Haptics),
DeviceHaptics(usize, crate::backend::input::Haptics),
DropOverlay(crate::windowing::OverlayID),
CustomTask(crate::backend::task::ModifyPanelTask),
}