CLI argument to start the server at startup
This commit is contained in:
parent
b94ae4d586
commit
2c5084d317
17
src/app.rs
17
src/app.rs
|
@ -41,10 +41,15 @@ pub struct Application {
|
||||||
persistence: Persistence,
|
persistence: Persistence,
|
||||||
viewports: HashMap<ViewportId, Viewport>,
|
viewports: HashMap<ViewportId, Viewport>,
|
||||||
focused: Option<ViewportId>,
|
focused: Option<ViewportId>,
|
||||||
|
init_debug_port: Option<u16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Application {
|
impl Application {
|
||||||
pub fn new(client: EmulatorClient, proxy: EventLoopProxy<UserEvent>) -> Self {
|
pub fn new(
|
||||||
|
client: EmulatorClient,
|
||||||
|
proxy: EventLoopProxy<UserEvent>,
|
||||||
|
debug_port: Option<u16>,
|
||||||
|
) -> Self {
|
||||||
let icon = load_icon().ok().map(Arc::new);
|
let icon = load_icon().ok().map(Arc::new);
|
||||||
let persistence = Persistence::new();
|
let persistence = Persistence::new();
|
||||||
let mappings = MappingProvider::new(persistence.clone());
|
let mappings = MappingProvider::new(persistence.clone());
|
||||||
|
@ -63,6 +68,7 @@ impl Application {
|
||||||
persistence,
|
persistence,
|
||||||
viewports: HashMap::new(),
|
viewports: HashMap::new(),
|
||||||
focused: None,
|
focused: None,
|
||||||
|
init_debug_port: debug_port,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,9 +92,12 @@ impl ApplicationHandler<UserEvent> for Application {
|
||||||
self.persistence.clone(),
|
self.persistence.clone(),
|
||||||
SimId::Player1,
|
SimId::Player1,
|
||||||
);
|
);
|
||||||
let wrapper = Viewport::new(event_loop, self.icon.clone(), Box::new(app));
|
self.open(event_loop, Box::new(app));
|
||||||
self.focused = Some(wrapper.id());
|
if let Some(port) = self.init_debug_port {
|
||||||
self.viewports.insert(wrapper.id(), wrapper);
|
let mut server = GdbServerWindow::new(SimId::Player1, self.client.clone());
|
||||||
|
server.start(port);
|
||||||
|
self.open(event_loop, Box::new(server));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn window_event(
|
fn window_event(
|
||||||
|
|
|
@ -22,7 +22,11 @@ mod window;
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
struct Args {
|
struct Args {
|
||||||
|
/// The path to a virtual boy ROM to run.
|
||||||
rom: Option<PathBuf>,
|
rom: Option<PathBuf>,
|
||||||
|
/// Start a GDB/LLDB debug server on this port.
|
||||||
|
#[arg(short, long)]
|
||||||
|
debug_port: Option<u16>,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_panic_handler() {
|
fn set_panic_handler() {
|
||||||
|
@ -101,6 +105,6 @@ fn main() -> Result<()> {
|
||||||
let event_loop = EventLoop::with_user_event().build().unwrap();
|
let event_loop = EventLoop::with_user_event().build().unwrap();
|
||||||
event_loop.set_control_flow(ControlFlow::Poll);
|
event_loop.set_control_flow(ControlFlow::Poll);
|
||||||
let proxy = event_loop.create_proxy();
|
let proxy = event_loop.create_proxy();
|
||||||
event_loop.run_app(&mut Application::new(client, proxy))?;
|
event_loop.run_app(&mut Application::new(client, proxy, args.debug_port))?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,12 @@ impl GdbServerWindow {
|
||||||
server: GdbServer::new(sim_id, client),
|
server: GdbServer::new(sim_id, client),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn start(&mut self, port: u16) {
|
||||||
|
self.server.stop();
|
||||||
|
self.port_str = port.to_string();
|
||||||
|
self.server.start(port);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AppWindow for GdbServerWindow {
|
impl AppWindow for GdbServerWindow {
|
||||||
|
|
Loading…
Reference in New Issue