Commit 802f7003 authored by Michael Spang's avatar Michael Spang Committed by Commit Bot

ozone: demo: Defer renderer creation until nonzero size

Fuchsia platform windows are initially 0x0 and this causes vulkan surface
creation to crash. Defer creating a renderer until we have a nonempty
size.

Bug: 861853
Test: run_ozone_demo --ozone-platform=scenic --enable-vulkan

Change-Id: I74e14ed07ab47ebc22730b40cf36217e9ae4873a
Reviewed-on: https://chromium-review.googlesource.com/1229162
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: default avatarSergey Ulanov <sergeyu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#592110}
parent f467816e
......@@ -66,16 +66,16 @@ gfx::Size DemoWindow::GetSize() {
}
void DemoWindow::Start() {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(&DemoWindow::StartOnGpu, weak_ptr_factory_.GetWeakPtr()));
StartRendererIfNecessary();
}
void DemoWindow::Quit() {
window_manager_->Quit();
}
void DemoWindow::OnBoundsChanged(const gfx::Rect& new_bounds) {}
void DemoWindow::OnBoundsChanged(const gfx::Rect& new_bounds) {
StartRendererIfNecessary();
}
void DemoWindow::OnDamageRect(const gfx::Rect& damaged_region) {}
......@@ -105,7 +105,9 @@ void DemoWindow::OnAcceleratedWidgetDestroyed() {
void DemoWindow::OnActivationChanged(bool active) {}
void DemoWindow::StartOnGpu() {
void DemoWindow::StartRendererIfNecessary() {
if (renderer_ || GetSize().IsEmpty())
return;
renderer_ =
renderer_factory_->CreateRenderer(GetAcceleratedWidget(), GetSize());
if (!renderer_->Initialize())
......
......@@ -47,7 +47,7 @@ class DemoWindow : public PlatformWindowDelegate {
private:
// Since we pretend to have a GPU process, we should also pretend to
// initialize the GPU resources via a posted task.
void StartOnGpu();
void StartRendererIfNecessary();
WindowManager* window_manager_; // Not owned.
RendererFactory* renderer_factory_; // Not owned.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment