diff --git a/src/she/skia/skia_window_osx.mm b/src/she/skia/skia_window_osx.mm index 094e6dba7..a98d7f319 100644 --- a/src/she/skia/skia_window_osx.mm +++ b/src/she/skia/skia_window_osx.mm @@ -24,18 +24,26 @@ public: gfx::Size clientSize; gfx::Size restoredSize; + Impl() { + closing = false; + scale = 1; + window = [OSXWindow new]; + [window setCloseDelegate:this]; + } + void notifyClose() override { closing = true; } }; SkiaWindow::SkiaWindow(EventQueue* queue, SkiaDisplay* display) - : m_impl(new SkiaWindow::Impl) + : m_impl(nullptr) { - m_impl->closing = false; - m_impl->scale = 1; - m_impl->window = [OSXWindow new]; - [m_impl->window setCloseDelegate:m_impl]; + dispatch_sync( + dispatch_get_main_queue(), + ^{ + m_impl = new SkiaWindow::Impl; + }); } SkiaWindow::~SkiaWindow()