| 232 | } |
| 233 | |
| 234 | int receiver_main(int argc, char* argv[]) |
| 235 | { |
| 236 | auto id = skr_get_current_process_id(); |
| 237 | SKR_LOG_DEBUG(u8"exec_mode: %s, process id: %lld", argv[1], id); |
| 238 | const SProcessId provider_id = std::stol(argv[2]); |
| 239 | SKR_LOG_TRACE(u8"provider id: %lld", provider_id); |
| 240 | |
| 241 | MDB_env* env = nullptr; |
| 242 | MDB_dbi dbi = ~0; |
| 243 | env_create(&env); |
| 244 | |
| 245 | // initialize renderer |
| 246 | if (SDL_Init(SDL_INIT_EVERYTHING) != 0) return -1; |
| 247 | auto renderer = SkrNew<ReceiverRenderer>(); |
| 248 | renderer->create_window(); |
| 249 | renderer->create_api_objects(); |
| 250 | renderer->create_blit_pipeline(); |
| 251 | |
| 252 | // initialize render graph |
| 253 | namespace render_graph = skr::render_graph; |
| 254 | auto graph = render_graph::RenderGraph::create( |
| 255 | [=](render_graph::RenderGraphBuilder& builder) { |
| 256 | builder.with_device(renderer->device) |
| 257 | .with_gfx_queue(renderer->gfx_queue); |
| 258 | }); |
| 259 | |
| 260 | // loop |
| 261 | bool quit = false; |
| 262 | CGPUTextureId cached_texture = nullptr; |
| 263 | STimer db_timer; |
| 264 | int64_t elapsed_ms = 0; |
| 265 | skr_init_timer(&db_timer); |
| 266 | while (!quit) |
| 267 | { |
| 268 | if (dbi == ~0) |
| 269 | { |
| 270 | elapsed_ms += skr_timer_get_msec(&db_timer, true); |
| 271 | if (elapsed_ms >= 500) |
| 272 | { |
| 273 | dbi_create(env, &dbi, true); |
| 274 | SKR_LOG_TRACE(u8"db id: %u", dbi); |
| 275 | elapsed_ms = 0; |
| 276 | } |
| 277 | } |
| 278 | |
| 279 | SDL_Event event; |
| 280 | while (SDL_PollEvent(&event)) |
| 281 | { |
| 282 | if (SDL_GetWindowID(renderer->sdl_window) == event.window.windowID) |
| 283 | { |
| 284 | if (!SDLEventHandler(&event, renderer->sdl_window)) |
| 285 | { |
| 286 | quit = true; |
| 287 | } |
| 288 | } |
| 289 | if (event.type == SDL_WINDOWEVENT) |
| 290 | { |
| 291 | Uint8 window_event = event.window.event; |
no test coverage detected