summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--genesis.c2
-rw-r--r--io.c15
-rw-r--r--io.h2
3 files changed, 19 insertions, 0 deletions
diff --git a/genesis.c b/genesis.c
index 755cf31..5e70c56 100644
--- a/genesis.c
+++ b/genesis.c
@@ -1063,6 +1063,7 @@ static void handle_reset_requests(genesis_context *gen)
resume_68k(gen->m68k);
}
}
+ io_release_capture(&gen->io);
vdp_release_framebuffer(gen->vdp);
render_pause_source(gen->ym->audio);
render_pause_source(gen->psg->audio);
@@ -1111,6 +1112,7 @@ static void resume_genesis(system_header *system)
genesis_context *gen = (genesis_context *)system;
map_all_bindings(&gen->io);
render_set_video_standard((gen->version_reg & HZ50) ? VID_PAL : VID_NTSC);
+ io_reacquire_capture(&gen->io);
vdp_reacquire_framebuffer(gen->vdp);
render_resume_source(gen->ym->audio);
render_resume_source(gen->psg->audio);
diff --git a/io.c b/io.c
index 76bd8a0..9ad6fb1 100644
--- a/io.c
+++ b/io.c
@@ -674,6 +674,21 @@ void handle_mouse_moved(int mouse, uint16_t x, uint16_t y, int16_t deltax, int16
}
}
+void io_release_capture(sega_io *io)
+{
+ if (io->mouse_mode == MOUSE_RELATIVE || (io->mouse_mode == MOUSE_CAPTURE && io->mouse_captured)) {
+ render_relative_mouse(0);
+ }
+ current_io->keyboard_captured = 0;
+}
+
+void io_reacquire_capture(sega_io *io)
+{
+ if (io->mouse_mode == MOUSE_RELATIVE || (io->mouse_mode == MOUSE_CAPTURE && io->mouse_captured)) {
+ render_relative_mouse(1);
+ }
+}
+
int parse_binding_target(char * target, tern_node * padbuttons, tern_node *mousebuttons, int * ui_out, int * padnum_out, int * padbutton_out)
{
const int gpadslen = strlen("gamepads.");
diff --git a/io.h b/io.h
index 6e077ba..380ccc1 100644
--- a/io.h
+++ b/io.h
@@ -110,6 +110,8 @@ void handle_mousedown(int mouse, int button);
void handle_mouseup(int mouse, int button);
void io_serialize(io_port *port, serialize_buffer *buf);
void io_deserialize(deserialize_buffer *buf, void *vport);
+void io_release_capture(sega_io *io);
+void io_reacquire_capture(sega_io *io);
extern const char * device_type_names[];