diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index d54519c12..f343c5214 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -358,22 +358,26 @@ SDL_PrivateSendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state if (clicks < 0) { SDL_MouseClickState *clickstate = GetMouseClickState(mouse, button); - if (state == SDL_PRESSED) { - Uint32 now = SDL_GetTicks(); + if (clickstate) { + if (state == SDL_PRESSED) { + Uint32 now = SDL_GetTicks(); - if (SDL_TICKS_PASSED(now, clickstate->last_timestamp + SDL_double_click_time) || - SDL_abs(mouse->x - clickstate->last_x) > SDL_double_click_radius || - SDL_abs(mouse->y - clickstate->last_y) > SDL_double_click_radius) { - clickstate->click_count = 0; - } - clickstate->last_timestamp = now; - clickstate->last_x = mouse->x; - clickstate->last_y = mouse->y; - if (clickstate->click_count < 255) { - ++clickstate->click_count; + if (SDL_TICKS_PASSED(now, clickstate->last_timestamp + SDL_double_click_time) || + SDL_abs(mouse->x - clickstate->last_x) > SDL_double_click_radius || + SDL_abs(mouse->y - clickstate->last_y) > SDL_double_click_radius) { + clickstate->click_count = 0; + } + clickstate->last_timestamp = now; + clickstate->last_x = mouse->x; + clickstate->last_y = mouse->y; + if (clickstate->click_count < 255) { + ++clickstate->click_count; + } } + clicks = clickstate->click_count; + } else { + clicks = 1; } - clicks = clickstate->click_count; } /* Post the event, if desired */