| 138 | SDL_Window* window; |
| 139 | |
| 140 | ultramodern::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 | |
| 179 | void update_gfx(void*) { |
| 180 | recomp::handle_events(); |
nothing calls this directly
no test coverage detected