Move create_client() to Server

Change-Id: I5c2dcbf654df2902734504f5c09d7241753da03a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/croscomp/+/3497447
Reviewed-by: Lucas Berthou <berlu@chromium.org>
Commit-Queue: Kristian Kristensen <hoegsberg@chromium.org>
Tested-by: Kristian Kristensen <hoegsberg@chromium.org>
diff --git a/src/compositor.rs b/src/compositor.rs
index ae90702..a394a1b 100644
--- a/src/compositor.rs
+++ b/src/compositor.rs
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 use std::cell::RefCell;
-use std::os::unix::io::{AsRawFd, IntoRawFd, RawFd};
+use std::os::unix::io::{AsRawFd, IntoRawFd};
 use std::os::unix::net::UnixStream;
 use std::os::unix::process::CommandExt;
 use std::process::Command;
@@ -253,10 +253,6 @@
         };
     }
 
-    pub fn create_client(&self, fd: RawFd) -> *mut ffi::wl_client {
-        unsafe { ffi::wl_client_create(self.server.native, fd) }
-    }
-
     pub fn launch_client(&mut self, path: &str) -> std::io::Result<*mut ffi::wl_client> {
         let (client_stream, server_stream) = UnixStream::pair()?;
         let fd = client_stream.as_raw_fd();
@@ -277,7 +273,7 @@
                 .spawn()?;
         }
 
-        Ok(self.create_client(server_stream.into_raw_fd()))
+        Ok(self.server.create_client(server_stream.into_raw_fd()))
     }
 
     pub fn wake(&mut self) {
diff --git a/src/main.rs b/src/main.rs
index 5b2a34a..58575d4 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -329,8 +329,8 @@
         .server
         .event_loop
         .on_connect(sock, move |fd, _| {
-            let compositor = rc.borrow_mut();
-            compositor.create_client(fd);
+            let mut compositor = rc.borrow_mut();
+            compositor.server.create_client(fd);
         });
 
     let shell = Shell::new(&compositor);
diff --git a/src/server.rs b/src/server.rs
index f933dca..7925595 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -5,6 +5,7 @@
 use log::debug;
 use std::boxed::Box;
 use std::marker::PhantomData;
+use std::os::unix::io::RawFd;
 use std::rc::Rc;
 use wayland_commons::MessageGroup;
 
@@ -353,6 +354,10 @@
         }
     }
 
+    pub fn create_client(&mut self, fd: RawFd) -> *mut ffi::wl_client {
+        unsafe { ffi::wl_client_create(self.native, fd) }
+    }
+
     pub fn terminate(&mut self) {
         todo!("terminate")
     }