Skip to content

Commit

Permalink
Add --videomodes option to show available video modes
Browse files Browse the repository at this point in the history
  • Loading branch information
kahrl authored and sfan5 committed May 9, 2013
1 parent 3332f60 commit 3b1c3ac
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 2 deletions.
3 changes: 3 additions & 0 deletions doc/minetest.6
Expand Up @@ -61,6 +61,9 @@ Run dedicated server
\-\-speedtests
Run speed tests
.TP
\-\-videomodes
List available video modes
.TP
\-\-info
Print more information to console
.TP
Expand Down
59 changes: 57 additions & 2 deletions src/main.cpp
Expand Up @@ -936,6 +936,8 @@ int main(int argc, char *argv[])
allowed_options.insert(std::make_pair("gameid", ValueSpec(VALUETYPE_STRING,
_("Set gameid (\"--gameid list\" prints available ones)"))));
#ifndef SERVER
allowed_options.insert(std::make_pair("videomodes", ValueSpec(VALUETYPE_FLAG,
_("Show available video modes"))));
allowed_options.insert(std::make_pair("speedtests", ValueSpec(VALUETYPE_FLAG,
_("Run speed tests"))));
allowed_options.insert(std::make_pair("address", ValueSpec(VALUETYPE_STRING,
Expand Down Expand Up @@ -1035,7 +1037,7 @@ int main(int argc, char *argv[])
print_worldspecs(worldspecs, dstream);
return 0;
}

// Print startup message
infostream<<PROJECT_NAME<<
" "<<_("with")<<" SER_FMT_VER_HIGHEST="<<(int)SER_FMT_VER_HIGHEST
Expand Down Expand Up @@ -1415,11 +1417,64 @@ int main(int argc, char *argv[])
}

/*
Create device and exit if creation failed
List video modes if requested
*/

MyEventReceiver receiver;

if(cmd_args.getFlag("videomodes")){
IrrlichtDevice *nulldevice;

SIrrlichtCreationParameters params = SIrrlichtCreationParameters();
params.DriverType = video::EDT_NULL;
params.WindowSize = core::dimension2d<u32>(640, 480);
params.Bits = 24;
params.AntiAlias = fsaa;
params.Fullscreen = false;
params.Stencilbuffer = false;
params.Vsync = vsync;
params.EventReceiver = &receiver;

nulldevice = createDeviceEx(params);

if(nulldevice == 0)
return 1;

dstream<<_("Available video modes (WxHxD):")<<std::endl;

video::IVideoModeList *videomode_list =
nulldevice->getVideoModeList();

if(videomode_list == 0){
nulldevice->drop();
return 1;
}

s32 videomode_count = videomode_list->getVideoModeCount();
core::dimension2d<u32> videomode_res;
s32 videomode_depth;
for (s32 i = 0; i < videomode_count; ++i){
videomode_res = videomode_list->getVideoModeResolution(i);
videomode_depth = videomode_list->getVideoModeDepth(i);
dstream<<videomode_res.Width<<"x"<<videomode_res.Height
<<"x"<<videomode_depth<<std::endl;
}

dstream<<_("Active video mode (WxHxD):")<<std::endl;
videomode_res = videomode_list->getDesktopResolution();
videomode_depth = videomode_list->getDesktopDepth();
dstream<<videomode_res.Width<<"x"<<videomode_res.Height
<<"x"<<videomode_depth<<std::endl;

nulldevice->drop();

return 0;
}

/*
Create device and exit if creation failed
*/

IrrlichtDevice *device;

SIrrlichtCreationParameters params = SIrrlichtCreationParameters();
Expand Down

0 comments on commit 3b1c3ac

Please sign in to comment.