Support multi-touch screen
Bug: 331179939
Test: pinch zoom
Change-Id: I76bb46a67607df8af0c83dce3113b6611e4fae9f
diff --git a/virtualizationmanager/src/aidl.rs b/virtualizationmanager/src/aidl.rs
index 425beed..026834f 100644
--- a/virtualizationmanager/src/aidl.rs
+++ b/virtualizationmanager/src/aidl.rs
@@ -814,6 +814,12 @@
width: u32::try_from(trackpad.width)?,
name: if !trackpad.name.is_empty() { Some(trackpad.name.clone()) } else { None },
},
+ InputDevice::MultiTouch(multi_touch) => InputDeviceOption::MultiTouch {
+ file: clone_file(multi_touch.pfd.as_ref().ok_or(anyhow!("pfd should have value"))?)?,
+ height: u32::try_from(multi_touch.height)?,
+ width: u32::try_from(multi_touch.width)?,
+ name: if !multi_touch.name.is_empty() { Some(multi_touch.name.clone()) } else { None },
+ },
})
}
/// Given the configuration for a disk image, assembles the `DiskFile` to pass to crosvm.
diff --git a/virtualizationmanager/src/crosvm.rs b/virtualizationmanager/src/crosvm.rs
index 379a498..6af84b6 100644
--- a/virtualizationmanager/src/crosvm.rs
+++ b/virtualizationmanager/src/crosvm.rs
@@ -223,6 +223,7 @@
Mouse(File),
Switches(File),
MultiTouchTrackpad { file: File, width: u32, height: u32, name: Option<String> },
+ MultiTouch { file: File, width: u32, height: u32, name: Option<String> },
}
type VfioDevice = Strong<dyn IBoundDevice>;
@@ -1164,6 +1165,13 @@
height,
name.as_ref().map_or("".into(), |n| format!(",name={}", n))
),
+ InputDeviceOption::MultiTouch { file, width, height, name } => format!(
+ "multi-touch[path={},width={},height={}{}]",
+ add_preserved_fd(&mut preserved_fds, file),
+ width,
+ height,
+ name.as_ref().map_or("".into(), |n| format!(",name={}", n))
+ ),
});
}
}