Skip to content

Commit

Permalink
Added test/testdisplayinfo.c
Browse files Browse the repository at this point in the history
  • Loading branch information
icculus committed Jul 15, 2015
1 parent 0c19501 commit b7ecc67
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 0 deletions.
1 change: 1 addition & 0 deletions .hgignore
Expand Up @@ -117,6 +117,7 @@ test/testver
test/testviewport
test/testwm2
test/torturethread
test/testdisplayinfo
test/*.exe
test/*.dSYM
buildbot
Expand Down
4 changes: 4 additions & 0 deletions test/Makefile.in
Expand Up @@ -60,6 +60,7 @@ TARGETS = \
torturethread$(EXE) \
testrendercopyex$(EXE) \
testmessage$(EXE) \
testdisplayinfo$(EXE) \
controllermap$(EXE) \

all: Makefile $(TARGETS)
Expand Down Expand Up @@ -266,6 +267,9 @@ testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c
testmessage$(EXE): $(srcdir)/testmessage.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

testdisplayinfo$(EXE): $(srcdir)/testdisplayinfo.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

controllermap$(EXE): $(srcdir)/controllermap.c
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)

Expand Down
88 changes: 88 additions & 0 deletions test/testdisplayinfo.c
@@ -0,0 +1,88 @@
/*
Copyright (C) 1997-2015 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely.
*/

/* Program to test hotplugging of audio devices */

#include "SDL.h"

#include <stdio.h>
#include <stdlib.h>

static void
print_mode(const char *prefix, const SDL_DisplayMode *mode)
{
if (!mode)
return;

SDL_Log("%s: fmt=%s w=%d h=%d refresh=%d\n",
prefix, SDL_GetPixelFormatName(mode->format),
mode->w, mode->h, mode->refresh_rate);
}

int
main(int argc, char *argv[])
{
SDL_DisplayMode mode;
int num_displays, dpy;

/* Enable standard application logging */
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);

/* Load the SDL library */
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
return 1;
}

SDL_Log("Using video target '%s'.\n", SDL_GetCurrentVideoDriver());
num_displays = SDL_GetNumVideoDisplays();

SDL_Log("See %d displays.\n", num_displays);

for (dpy = 0; dpy < num_displays; dpy++) {
const int num_modes = SDL_GetNumDisplayModes(dpy);
SDL_Rect rect = { 0, 0, 0, 0 };
int m;

SDL_GetDisplayBounds(dpy, &rect);
SDL_Log("%d: \"%s\" (%dx%d, (%d, %d)), %d modes.\n", dpy, SDL_GetDisplayName(dpy), rect.w, rect.h, rect.x, rect.y, num_modes);

if (SDL_GetCurrentDisplayMode(dpy, &mode) == -1) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, " CURRENT: failed to query (%s)\n", SDL_GetError());
} else {
print_mode("CURRENT", &mode);
}

if (SDL_GetDesktopDisplayMode(dpy, &mode) == -1) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, " DESKTOP: failed to query (%s)\n", SDL_GetError());
} else {
print_mode("DESKTOP", &mode);
}

for (m = 0; m < num_modes; m++) {
if (SDL_GetDisplayMode(dpy, m, &mode) == -1) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, " MODE %d: failed to query (%s)\n", m, SDL_GetError());
} else {
char prefix[64];
SDL_snprintf(prefix, sizeof (prefix), " MODE %d", m);
print_mode(prefix, &mode);
}
}

SDL_Log("\n");
}

return 0;
}

/* vi: set ts=4 sw=4 expandtab: */

0 comments on commit b7ecc67

Please sign in to comment.