diff --git a/parallel-rdp/interface.cpp b/parallel-rdp/interface.cpp index 6bdd71a4..cbd29b1d 100644 --- a/parallel-rdp/interface.cpp +++ b/parallel-rdp/interface.cpp @@ -50,6 +50,7 @@ enum vi_registers VI_REGS_COUNT }; +static bool fullscreen; static void *rdram; static SDL_Window *window; static RDP::CommandProcessor *processor; @@ -136,8 +137,9 @@ enum MB_RDRAM_DRAM_ALIGNMENT_REQUIREMENT = 64 * 1024 }; -void vk_init(void *mem_base, uint32_t rdram_size) +void vk_init(void *mem_base, uint32_t rdram_size, uint8_t _fullscreen) { + fullscreen = _fullscreen != 0; rdram = mem_base; bool window_vsync = 0; wsi = new WSI; @@ -191,6 +193,17 @@ int sdl_event_filter(void *userdata, SDL_Event *event) break; } } + else if (fullscreen && event->type == SDL_KEYDOWN) + { + switch (event->key.keysym.scancode) + { + case SDL_SCANCODE_ESCAPE: + emu_running = 0; + break; + default: + break; + } + } return 0; } diff --git a/parallel-rdp/interface.hpp b/parallel-rdp/interface.hpp index c084e858..cf5abd2b 100644 --- a/parallel-rdp/interface.hpp +++ b/parallel-rdp/interface.hpp @@ -5,7 +5,7 @@ extern "C" { #endif - void vk_init(void *mem_base, uint32_t rdram_size); + void vk_init(void *mem_base, uint32_t rdram_size, uint8_t fullscreen); void vk_close(); void set_sdl_window(void *_window); void rdp_set_vi_register(uint32_t reg, uint32_t value); diff --git a/src/ui/video.rs b/src/ui/video.rs index 54ba79a4..089d8339 100644 --- a/src/ui/video.rs +++ b/src/ui/video.rs @@ -1,7 +1,7 @@ use crate::ui; extern "C" { - pub fn vk_init(rdram_ptr: usize, rdram_size: u32); + pub fn vk_init(rdram_ptr: usize, rdram_size: u32, fullscreen: u8); pub fn set_sdl_window(window: usize); pub fn rdp_update_screen() -> u8; pub fn rdp_set_vi_register(reg: u32, value: u32); @@ -24,7 +24,7 @@ pub fn init(ui: &mut ui::Ui, rdram_ptr: *mut u8, rdram_size: usize, fullscreen: ui.window = Some(builder.build().unwrap()); unsafe { set_sdl_window(ui.window.as_mut().unwrap().raw() as usize); - vk_init(rdram_ptr as usize, rdram_size as u32) + vk_init(rdram_ptr as usize, rdram_size as u32, fullscreen as u8) } }