summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-11 19:33:55 +0000
committerAlyssa Ross <hi@alyssa.is>2020-06-15 09:36:15 +0000
commit0444d328a6d7198e59aca9f8dd2e2d91501f9bac (patch)
tree25453c681b3cd348535ed17a1d525ec910efd49f /src
parent2507cc57bc0145eb57305e60f6a7c21f3b4c9192 (diff)
downloadcrosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar.gz
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar.bz2
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar.lz
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar.xz
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.tar.zst
crosvm-0444d328a6d7198e59aca9f8dd2e2d91501f9bac.zip
hacky construct Wl in external proc
Diffstat (limited to 'src')
-rw-r--r--src/wl.rs31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/wl.rs b/src/wl.rs
index b35af8b..be473d4 100644
--- a/src/wl.rs
+++ b/src/wl.rs
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: BSD-3-Clause
 
-use devices::virtio::{InterruptProxy, InterruptProxyEvent, SingleFd, Worker};
+use devices::virtio::{wl2, InterruptProxy, InterruptProxyEvent, SingleFd};
 use msg_socket::{MsgReceiver, MsgSocket};
 use std::collections::BTreeMap;
 use std::fs::remove_file;
@@ -28,6 +28,8 @@ fn main() {
     let conn = server.accept().expect("accept failed");
     let msg_socket: Socket = MsgSocket::new(conn);
 
+    let mut wl = None;
+
     loop {
         match msg_socket.recv() {
             Ok(SingleFd {
@@ -42,6 +44,10 @@ fn main() {
                 out_queue_evt,
                 kill_evt,
             }) => {
+                if wl.is_some() {
+                    panic!("Received SingleFd twice");
+                }
+
                 let shm = shm.owned();
 
                 let regions = arch_memory_regions(MemoryParams {
@@ -58,24 +64,25 @@ fn main() {
                 let mut wayland_paths = BTreeMap::new();
                 wayland_paths.insert("".into(), "/run/user/1000/wayland-0".into());
 
-                let mut worker = Worker::new(
+                use devices::virtio::VirtioDevice;
+
+                let mut wl_ = wl2::Wl::new(wayland_paths, vm_socket, None).unwrap();
+
+                println!("constructed Wl");
+
+                wl_.activate(
                     mem,
                     Box::new(InterruptProxy::new(
                         interrupt,
                         interrupt_resample_evt.owned(),
                     )),
-                    in_queue,
-                    out_queue,
-                    wayland_paths,
-                    vm_socket,
-                    use_transition_flags,
-                    None,
-                );
-
-                worker.run(
+                    vec![in_queue, out_queue],
                     vec![in_queue_evt.owned(), out_queue_evt.owned()],
-                    kill_evt.owned(),
                 );
+
+                println!("activated Wl");
+
+                wl = Some(wl_);
             }
 
             Err(e) => panic!("recv failed {:?}", e),