Skip to content

Commit

Permalink
tests: Fix tests when run with the --high-pixel-density flag
Browse files Browse the repository at this point in the history
Scales pointer coordinates where needed to fix the following tests when run with the --high-pixel-density flag:

- testaudio
- testaudiostreamdynamicresample
- testhittesting
- testintersections
- testmanymouse
- testoverlay
- testwm
  • Loading branch information
Kontrabant committed Sep 19, 2024
1 parent 745d5e4 commit fd0ce75
Show file tree
Hide file tree
Showing 7 changed files with 33 additions and 6 deletions.
1 change: 1 addition & 0 deletions test/testaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1119,6 +1119,7 @@ SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
Thing *thing = NULL;

saw_event = true;
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(SDL_GetWindowFromEvent(event)), event);

switch (event->type) {
case SDL_EVENT_MOUSE_MOTION:
Expand Down
15 changes: 15 additions & 0 deletions test/testaudiostreamdynamicresample.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,20 @@ static const char *AudioChansToStr(const int channels)
return "?";
}

static void scale_mouse_coords(SDL_FPoint *p)
{
SDL_Window *window = SDL_GetMouseFocus();
if (window) {
int w, p_w;
float scale;
SDL_GetWindowSize(window, &w, NULL);
SDL_GetWindowSizeInPixels(window, &p_w, NULL);
scale = (float)p_w / (float)w;
p->x *= scale;
p->y *= scale;
}
}

static void loop(void)
{
int i, j;
Expand Down Expand Up @@ -228,6 +242,7 @@ static void loop(void)
}

if (SDL_GetMouseState(&p.x, &p.y) & SDL_BUTTON_LMASK) {
scale_mouse_coords(&p);
if (active_slider == -1) {
for (i = 0; i < NUM_SLIDERS; ++i) {
if (SDL_PointInRectFloat(&p, &sliders[i].area)) {
Expand Down
16 changes: 12 additions & 4 deletions test/testhittesting.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,25 @@ static SDL_HitTestResult SDLCALL
hitTest(SDL_Window *window, const SDL_Point *pt, void *data)
{
int i;
int w, h;
int w, h, p_w;
SDL_Point adj_pt;
float scale;

SDL_GetWindowSize(window, &w, &h);
SDL_GetWindowSizeInPixels(window, &p_w, NULL);

scale = (float)p_w / (float)w;

adj_pt.x = (int)SDL_floorf(pt->x * scale);
adj_pt.y = (int)SDL_floorf(pt->y * scale);

for (i = 0; i < numareas; i++) {
if (SDL_PointInRect(pt, &areas[i])) {
if (SDL_PointInRect(&adj_pt, &areas[i])) {
SDL_Log("HIT-TEST: DRAGGABLE\n");
return SDL_HITTEST_DRAGGABLE;
}
}

SDL_GetWindowSize(window, &w, &h);

#define REPORT_RESIZE_HIT(name) \
{ \
SDL_Log("HIT-TEST: RESIZE_" #name "\n"); \
Expand Down
1 change: 1 addition & 0 deletions test/testintersections.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ static void loop(void *arg)
/* Check for events */
while (SDL_PollEvent(&event)) {
SDLTest_CommonEvent(state, &event, done);
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(SDL_GetWindowFromEvent(&event)), &event);
switch (event.type) {
case SDL_EVENT_MOUSE_BUTTON_DOWN:
mouse_begin_x = event.button.x;
Expand Down
4 changes: 2 additions & 2 deletions test/testmanymouse.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ static void HandleMouseAdded(SDL_MouseID instance_id)
SDL_Window *window = state->windows[0];
int i, w = 0, h = 0;

SDL_GetWindowSize(window, &w, &h);
SDL_GetWindowSizeInPixels(window, &w, &h);

for (i = 0; i < SDL_arraysize(mice); ++i) {
MouseState *mouse_state = &mice[i];
Expand Down Expand Up @@ -237,7 +237,7 @@ static void HandleMouseMotion(SDL_MouseMotionEvent *event)

ActivateMouse(event->which);

SDL_GetWindowSize(window, &w, &h);
SDL_GetWindowSizeInPixels(window, &w, &h);

for (i = 0; i < SDL_arraysize(mice); ++i) {
MouseState *mouse_state = &mice[i];
Expand Down
1 change: 1 addition & 0 deletions test/testoverlay.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,7 @@ static void loop(void)
/* Check for events */
while (SDL_PollEvent(&event)) {
SDLTest_CommonEvent(state, &event, &done);
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(SDL_GetWindowFromEvent(&event)), &event);

switch (event.type) {
case SDL_EVENT_WINDOW_RESIZED:
Expand Down
1 change: 1 addition & 0 deletions test/testwm.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ static void loop(void)

while (SDL_PollEvent(&event)) {
SDLTest_CommonEvent(state, &event, &done);
SDL_ConvertEventToRenderCoordinates(SDL_GetRenderer(SDL_GetWindowFromEvent(&event)), &event);

if (event.type == SDL_EVENT_WINDOW_RESIZED) {
SDL_Window *window = SDL_GetWindowFromEvent(&event);
Expand Down

0 comments on commit fd0ce75

Please sign in to comment.