MCPcopy Create free account
hub / github.com/MrNeRF/LichtFeld-Studio / updateWindowSize

Method updateWindowSize

src/visualizer/window/window_manager.cpp:399–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

397 }
398
399 void WindowManager::updateWindowSize(const char* const reason, const ResizeIntent intent) {
400 if (!window_) {
401 return;
402 }
403
404 int winW, winH, fbW, fbH;
405 SDL_GetWindowSize(window_, &winW, &winH);
406 SDL_GetWindowSizeInPixels(window_, &fbW, &fbH);
407 const glm::ivec2 next_window_size(winW, winH);
408 const glm::ivec2 next_framebuffer_size(fbW, fbH);
409 const bool window_size_changed = next_window_size != window_size_;
410 const bool framebuffer_size_changed = next_framebuffer_size != framebuffer_size_;
411 const bool size_changed = window_size_changed || framebuffer_size_changed;
412
413 const auto flags = SDL_GetWindowFlags(window_);
414 if (size_changed) {
415 last_window_size_change_time_ = std::chrono::steady_clock::now();
416 LOG_DEBUG("Window size update [{}]: logical {}x{} -> {}x{}, framebuffer {}x{} -> {}x{}, fullscreen={}, flags=0x{:x}",
417 reason,
418 window_size_.x,
419 window_size_.y,
420 next_window_size.x,
421 next_window_size.y,
422 framebuffer_size_.x,
423 framebuffer_size_.y,
424 next_framebuffer_size.x,
425 next_framebuffer_size.y,
426 is_fullscreen_,
427 static_cast<unsigned>(flags));
428 } else {
429 LOG_DEBUG("Window size update [{}]: unchanged logical {}x{}, framebuffer {}x{}, fullscreen={}, flags=0x{:x}",
430 reason,
431 next_window_size.x,
432 next_window_size.y,
433 next_framebuffer_size.x,
434 next_framebuffer_size.y,
435 is_fullscreen_,
436 static_cast<unsigned>(flags));
437 }
438
439 window_size_ = next_window_size;
440 framebuffer_size_ = next_framebuffer_size;
441 if (vulkan_context_ && framebuffer_size_changed) {
442 const ResizeIntent effective_intent =
443 intent == ResizeIntent::Interactive && (is_fullscreen_ || isMaximized())
444 ? ResizeIntent::Exact
445 : intent;
446 const auto vulkan_resize_intent =
447 effective_intent == ResizeIntent::Interactive
448 ? VulkanContext::ResizeIntent::Interactive
449 : VulkanContext::ResizeIntent::Exact;
450 vulkan_context_->notifyFramebufferResized(fbW, fbH, vulkan_resize_intent);
451 }
452 if (size_changed) {
453 lfs::core::events::ui::WindowResized{.width = fbW, .height = fbH}.emit();
454 }
455 }
456

Callers 3

initializeMethod · 0.80
updateMethod · 0.80
renderMethod · 0.80

Calls 2

emitMethod · 0.45

Tested by

no test coverage detected