| 51 | } |
| 52 | |
| 53 | bool cWindow::InitWindow( const std::string& pWindowTitle ) { |
| 54 | |
| 55 | if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) != 0) { |
| 56 | g_Debugger->Error("Failed to initialise SDL"); |
| 57 | exit( 1 ); |
| 58 | return false; |
| 59 | } |
| 60 | |
| 61 | ToggleFullscreen(); |
| 62 | |
| 63 | mWindow = SDL_CreateWindow(pWindowTitle.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, GetWindowSize().mWidth, GetWindowSize().mHeight, SDL_WINDOW_SHOWN ); |
| 64 | if (!mWindow) { |
| 65 | g_Debugger->Error("Failed to create window"); |
| 66 | exit( 1 ); |
| 67 | return false; |
| 68 | } |
| 69 | |
| 70 | size_t flags = SDL_RENDERER_ACCELERATED; |
| 71 | |
| 72 | //if (!g_Fodder->mParams->mUnitTesting || g_Fodder->mParams->mDemoRecord) |
| 73 | // flags |= SDL_RENDERER_PRESENTVSYNC; |
| 74 | |
| 75 | mRenderer = SDL_CreateRenderer(mWindow, -1, flags ); |
| 76 | if (!mRenderer) { |
| 77 | g_Debugger->Error("Failed to create rendered"); |
| 78 | exit( 1 ); |
| 79 | return false; |
| 80 | } |
| 81 | |
| 82 | if (g_Fodder->mParams->mIntegerScaling || mWindowMode) { |
| 83 | SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "nearest" ); |
| 84 | } |
| 85 | else { |
| 86 | SDL_SetHint( SDL_HINT_RENDER_SCALE_QUALITY, "linear" ); |
| 87 | } |
| 88 | |
| 89 | SDL_SetHintWithPriority(SDL_HINT_MOUSE_RELATIVE_MODE_WARP, "1", SDL_HINT_OVERRIDE); |
| 90 | |
| 91 | SetCursor(); |
| 92 | |
| 93 | if (g_Fodder->mParams->mWindowMode) { |
| 94 | ToggleFullscreen(); |
| 95 | CalculateWindowSize(); |
| 96 | } |
| 97 | else { |
| 98 | ToggleFullscreen(); |
| 99 | ToggleFullscreen(); |
| 100 | } |
| 101 | |
| 102 | if (!g_Fodder->mParams->mMouseAlternative || (g_Fodder->mParams->mMouseAlternative && g_Fodder->mParams->mMouseLocked)) |
| 103 | SDL_SetRelativeMouseMode(SDL_TRUE); |
| 104 | |
| 105 | return true; |
| 106 | } |
| 107 | |
| 108 | void cWindow::ToggleVSync(bool pEnabled) { |
| 109 | SDL_RenderSetVSync(mRenderer, pEnabled ? 1 : 0); |