MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / FreeRenderer

Function FreeRenderer

Source/utils/display.cpp:108–144  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

106}
107
108void FreeRenderer()
109{
110#if defined(_WIN32) && !defined(NXDK)
111 bool wasD3D9 = false;
112 if (renderer != nullptr) {
113 SDL_RendererInfo previousRendererInfo;
114 SDL_GetRendererInfo(renderer, &previousRendererInfo);
115 wasD3D9 = (string_view(previousRendererInfo.name) == "direct3d");
116 }
117#endif
118
119 if (renderer != nullptr) {
120 SDL_DestroyRenderer(renderer);
121 renderer = nullptr;
122 }
123
124#if defined(_WIN32) && !defined(NXDK) && !defined(USE_SDL1)
125 // On Windows 11 the directx9 VSYNC timer doesn't get recreated properly, see https://github.com/libsdl-org/SDL/issues/5099
126 if (wasD3D9 && *sgOptions.Graphics.upscale && *sgOptions.Graphics.frameRateControl != FrameRateControl::VerticalSync) {
127 std::string title = SDL_GetWindowTitle(ghMainWnd);
128 Uint32 flags = SDL_GetWindowFlags(ghMainWnd);
129 Rectangle dimensions;
130
131 SDL_GetWindowPosition(ghMainWnd, &dimensions.position.x, &dimensions.position.y);
132 SDL_GetWindowSize(ghMainWnd, &dimensions.size.width, &dimensions.size.height);
133 SDL_DestroyWindow(ghMainWnd);
134
135 ghMainWnd = SDL_CreateWindow(
136 title.c_str(),
137 dimensions.position.x,
138 dimensions.position.y,
139 dimensions.size.width,
140 dimensions.size.height,
141 flags);
142 }
143#endif
144}
145
146SDL_DisplayMode GetNearestDisplayMode(Size preferredSize)
147{

Callers 1

ReinitializeRendererFunction · 0.85

Calls 3

SDL_GetWindowPositionFunction · 0.85
SDL_GetWindowSizeFunction · 0.85
SDL_DestroyWindowFunction · 0.85

Tested by

no test coverage detected