Skip to content

Commit 401e169

Browse files
authored
Pointer sanitization, rwebinput driver (#17327)
1 parent 2e3fc4f commit 401e169

File tree

1 file changed

+6
-24
lines changed

1 file changed

+6
-24
lines changed

input/drivers/rwebinput_input.c

+6-24
Original file line numberDiff line numberDiff line change
@@ -507,26 +507,17 @@ static int16_t rwebinput_input_state(
507507
case RARCH_DEVICE_POINTER_SCREEN:
508508
if (idx == 0)
509509
{
510-
struct video_viewport vp;
510+
struct video_viewport vp = {0};
511511
rwebinput_mouse_state_t
512512
*mouse = &rwebinput->mouse;
513-
const int edge_detect = 32700;
514513
bool screen = device ==
515514
RARCH_DEVICE_POINTER_SCREEN;
516-
bool inside = false;
517515
int16_t res_x = 0;
518516
int16_t res_y = 0;
519517
int16_t res_screen_x = 0;
520518
int16_t res_screen_y = 0;
521519

522-
vp.x = 0;
523-
vp.y = 0;
524-
vp.width = 0;
525-
vp.height = 0;
526-
vp.full_width = 0;
527-
vp.full_height = 0;
528-
529-
if (!(video_driver_translate_coord_viewport_wrap(
520+
if (!(video_driver_translate_coord_viewport_confined_wrap(
530521
&vp, mouse->x, mouse->y,
531522
&res_x, &res_y, &res_screen_x, &res_screen_y)))
532523
return 0;
@@ -537,25 +528,16 @@ static int16_t rwebinput_input_state(
537528
res_y = res_screen_y;
538529
}
539530

540-
inside = (res_x >= -edge_detect)
541-
&& (res_y >= -edge_detect)
542-
&& (res_x <= edge_detect)
543-
&& (res_y <= edge_detect);
544-
545531
switch (id)
546532
{
547533
case RETRO_DEVICE_ID_POINTER_X:
548-
if (inside)
549-
return res_x;
550-
break;
534+
return res_x;
551535
case RETRO_DEVICE_ID_POINTER_Y:
552-
if (inside)
553-
return res_y;
554-
break;
536+
return res_y;
555537
case RETRO_DEVICE_ID_POINTER_PRESSED:
556538
return !!(mouse->buttons & (1 << RWEBINPUT_MOUSE_BTNL));
557-
case RETRO_DEVICE_ID_LIGHTGUN_IS_OFFSCREEN:
558-
return !inside;
539+
case RETRO_DEVICE_ID_POINTER_IS_OFFSCREEN:
540+
return input_driver_pointer_is_offscreen(res_x, res_y);
559541
default:
560542
break;
561543
}

0 commit comments

Comments
 (0)