MCPcopy Create free account
hub / github.com/RevoSucks/BM64Recomp / create_window

Function create_window

src/main/main.cpp:140–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

138SDL_Window* window;
139
140ultramodern::renderer::WindowHandle create_window(ultramodern::gfx_callbacks_t::gfx_data_t) {
141 uint32_t flags = SDL_WINDOW_RESIZABLE;
142
143#if defined(__APPLE__)
144 flags |= SDL_WINDOW_METAL;
145#elif defined(RT64_SDL_WINDOW_VULKAN)
146 flags |= SDL_WINDOW_VULKAN;
147#endif
148
149 window = SDL_CreateWindow("Bomberman 64: Recompiled", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1600, 960, flags);
150#if defined(__linux__)
151 SetImageAsIcon("icons/512.png",window);
152 if (ultramodern::renderer::get_graphics_config().wm_option == ultramodern::renderer::WindowMode::Fullscreen) { // TODO: Remove once RT64 gets native fullscreen support on Linux
153 SDL_SetWindowFullscreen(window,SDL_WINDOW_FULLSCREEN_DESKTOP);
154 } else {
155 SDL_SetWindowFullscreen(window,0);
156 }
157#endif
158
159 if (window == nullptr) {
160 exit_error("Failed to create window: %s\n", SDL_GetError());
161 }
162
163 SDL_SysWMinfo wmInfo;
164 SDL_VERSION(&wmInfo.version);
165 SDL_GetWindowWMInfo(window, &wmInfo);
166
167#if defined(_WIN32)
168 return ultramodern::renderer::WindowHandle{ wmInfo.info.win.window, GetCurrentThreadId() };
169#elif defined(__linux__) || defined(__ANDROID__)
170 return ultramodern::renderer::WindowHandle{ window };
171#elif defined(__APPLE__)
172 SDL_MetalView view = SDL_Metal_CreateView(window);
173 return ultramodern::renderer::WindowHandle{ wmInfo.info.cocoa.window, SDL_Metal_GetLayer(view) };
174#else
175 static_assert(false && "Unimplemented");
176#endif
177}
178
179void update_gfx(void*) {
180 recomp::handle_events();

Callers

nothing calls this directly

Calls 2

SetImageAsIconFunction · 0.85
exit_errorFunction · 0.85

Tested by

no test coverage detected