Mercurial > repos > blastem
comparison io.c @ 1396:aca496957999
Only capture mouse if an emulated mouse is attached
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 12 Jun 2017 21:12:28 -0700 |
parents | 65f1d6558e9e |
children | 08116cb5ffaa |
comparison
equal
deleted
inserted
replaced
1395:efa7225e0f07 | 1396:aca496957999 |
---|---|
79 UI_SCREENSHOT, | 79 UI_SCREENSHOT, |
80 UI_EXIT | 80 UI_EXIT |
81 } ui_action; | 81 } ui_action; |
82 | 82 |
83 typedef enum { | 83 typedef enum { |
84 MOUSE_NONE, //mouse is ignored | |
84 MOUSE_ABSOLUTE, //really only useful for menu ROM | 85 MOUSE_ABSOLUTE, //really only useful for menu ROM |
85 MOUSE_RELATIVE, //for full screen | 86 MOUSE_RELATIVE, //for full screen |
86 MOUSE_CAPTURE //for windowed mode | 87 MOUSE_CAPTURE //for windowed mode |
87 } mouse_modes; | 88 } mouse_modes; |
88 | 89 |
608 if (mouse >= MAX_MICE || !mice[mouse].motion_port) { | 609 if (mouse >= MAX_MICE || !mice[mouse].motion_port) { |
609 return; | 610 return; |
610 } | 611 } |
611 switch(current_io->mouse_mode) | 612 switch(current_io->mouse_mode) |
612 { | 613 { |
614 case MOUSE_NONE: | |
615 break; | |
613 case MOUSE_ABSOLUTE: { | 616 case MOUSE_ABSOLUTE: { |
614 float scale_x = 640.0 / ((float)render_width()); | 617 float scale_x = 640.0 / ((float)render_width()); |
615 float scale_y = 480.0 / ((float)render_height()); | 618 float scale_y = 480.0 / ((float)render_height()); |
616 float scale = scale_x > scale_y ? scale_y : scale_x; | 619 float scale = scale_x > scale_y ? scale_y : scale_x; |
617 mice[mouse].motion_port->device.mouse.cur_x = x * scale_x; | 620 mice[mouse].motion_port->device.mouse.cur_x = x * scale_x; |
893 | 896 |
894 process_device(io_1, ports); | 897 process_device(io_1, ports); |
895 process_device(io_2, ports+1); | 898 process_device(io_2, ports+1); |
896 process_device(io_ext, ports+2); | 899 process_device(io_ext, ports+2); |
897 | 900 |
898 if (render_fullscreen()) { | 901 if (ports[0].device_type == IO_MOUSE || ports[1].device_type == IO_MOUSE || ports[2].device_type == IO_MOUSE) { |
899 current_io->mouse_mode = MOUSE_RELATIVE; | 902 if (render_fullscreen()) { |
900 render_relative_mouse(1); | 903 current_io->mouse_mode = MOUSE_RELATIVE; |
904 render_relative_mouse(1); | |
905 } else { | |
906 if (rom->mouse_mode && !strcmp(rom->mouse_mode, "absolute")) { | |
907 current_io->mouse_mode = MOUSE_ABSOLUTE; | |
908 } else { | |
909 current_io->mouse_mode = MOUSE_CAPTURE; | |
910 } | |
911 } | |
901 } else { | 912 } else { |
902 if (rom->mouse_mode && !strcmp(rom->mouse_mode, "absolute")) { | 913 current_io->mouse_mode = MOUSE_NONE; |
903 current_io->mouse_mode = MOUSE_ABSOLUTE; | |
904 } else { | |
905 current_io->mouse_mode = MOUSE_CAPTURE; | |
906 } | |
907 } | 914 } |
908 | 915 |
909 for (int i = 0; i < 3; i++) | 916 for (int i = 0; i < 3; i++) |
910 { | 917 { |
911 #ifndef _WIN32 | 918 #ifndef _WIN32 |