Commit 4154c1c1 by Michael Spang Committed by Commit Bot

Fuchsia: Migrate ScenicWindow to ViewV2

Fuchsia is transitioning its view creation APIs. Migrate to the new one. BUG=angleproject:2475 TEST=angle_end2end_tests on Fuchsia Change-Id: I09abfda18a5e3da46909b5b967325a083586a7d0 Reviewed-on: https://chromium-review.googlesource.com/c/1474337Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Commit-Queue: Michael Spang <spang@chromium.org>
parent 366df2b2
...@@ -59,13 +59,10 @@ ScenicWindow::ScenicWindow() ...@@ -59,13 +59,10 @@ ScenicWindow::ScenicWindow()
: mLoop(GetDefaultLoop()), : mLoop(GetDefaultLoop()),
mServiceRoot(ConnectToServiceRoot()), mServiceRoot(ConnectToServiceRoot()),
mScenic(ConnectToService<fuchsia::ui::scenic::Scenic>(mServiceRoot.get())), mScenic(ConnectToService<fuchsia::ui::scenic::Scenic>(mServiceRoot.get())),
mViewManager(ConnectToService<fuchsia::ui::viewsv1::ViewManager>(mServiceRoot.get())),
mPresenter(ConnectToService<fuchsia::ui::policy::Presenter>(mServiceRoot.get())), mPresenter(ConnectToService<fuchsia::ui::policy::Presenter>(mServiceRoot.get())),
mScenicSession(mScenic.get()), mScenicSession(mScenic.get()),
mParent(&mScenicSession),
mShape(&mScenicSession), mShape(&mScenicSession),
mMaterial(&mScenicSession), mMaterial(&mScenicSession)
mViewListenerBinding(this)
{} {}
ScenicWindow::~ScenicWindow() ScenicWindow::~ScenicWindow()
...@@ -76,24 +73,20 @@ ScenicWindow::~ScenicWindow() ...@@ -76,24 +73,20 @@ ScenicWindow::~ScenicWindow()
bool ScenicWindow::initialize(const std::string &name, size_t width, size_t height) bool ScenicWindow::initialize(const std::string &name, size_t width, size_t height)
{ {
// Set up scenic resources. // Set up scenic resources.
zx::eventpair parentExportToken;
mParent.BindAsRequest(&parentExportToken);
mParent.SetEventMask(fuchsia::ui::gfx::kMetricsEventMask);
mParent.AddChild(mShape);
mShape.SetShape(scenic::Rectangle(&mScenicSession, width, height)); mShape.SetShape(scenic::Rectangle(&mScenicSession, width, height));
mShape.SetMaterial(mMaterial); mShape.SetMaterial(mMaterial);
// Create view and present it. // Create view.
zx::eventpair viewHolderToken; zx::eventpair viewHolderToken;
zx::eventpair viewToken; zx::eventpair viewToken;
zx_status_t status = zx::eventpair::create(0 /* options */, &viewToken, &viewHolderToken); zx_status_t status = zx::eventpair::create(0 /* options */, &viewToken, &viewHolderToken);
ASSERT(status == ZX_OK); ASSERT(status == ZX_OK);
mView = std::make_unique<scenic::View>(&mScenicSession, std::move(viewToken), name);
mView->AddChild(mShape);
mScenicSession.Present(0, [](fuchsia::images::PresentationInfo info) {});
// Present view.
mPresenter->Present2(std::move(viewHolderToken), nullptr); mPresenter->Present2(std::move(viewHolderToken), nullptr);
mViewManager->CreateView2(mView.NewRequest(), std::move(viewToken),
mViewListenerBinding.NewBinding(), std::move(parentExportToken),
name);
mView.set_error_handler(fit::bind_member(this, &ScenicWindow::OnScenicError));
mViewListenerBinding.set_error_handler(fit::bind_member(this, &ScenicWindow::OnScenicError));
mWidth = width; mWidth = width;
mHeight = height; mHeight = height;
...@@ -161,12 +154,6 @@ void ScenicWindow::setVisible(bool isVisible) {} ...@@ -161,12 +154,6 @@ void ScenicWindow::setVisible(bool isVisible) {}
void ScenicWindow::signalTestEvent() {} void ScenicWindow::signalTestEvent() {}
void ScenicWindow::OnPropertiesChanged(fuchsia::ui::viewsv1::ViewProperties properties,
OnPropertiesChangedCallback callback)
{
UNIMPLEMENTED();
}
void ScenicWindow::OnScenicEvents(std::vector<fuchsia::ui::scenic::Event> events) void ScenicWindow::OnScenicEvents(std::vector<fuchsia::ui::scenic::Event> events)
{ {
UNIMPLEMENTED(); UNIMPLEMENTED();
......
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
#ifndef UTIL_FUCHSIA_SCENIC_WINDOW_H #ifndef UTIL_FUCHSIA_SCENIC_WINDOW_H
#define UTIL_FUCHSIA_SCENIC_WINDOW_H #define UTIL_FUCHSIA_SCENIC_WINDOW_H
#include <fuchsia/ui/input/cpp/fidl.h>
#include <fuchsia/ui/policy/cpp/fidl.h> #include <fuchsia/ui/policy/cpp/fidl.h>
#include <fuchsia/ui/scenic/cpp/fidl.h> #include <fuchsia/ui/scenic/cpp/fidl.h>
#include <fuchsia/ui/viewsv1/cpp/fidl.h>
#include <fuchsia_egl.h> #include <fuchsia_egl.h>
#include <lib/async-loop/cpp/loop.h> #include <lib/async-loop/cpp/loop.h>
#include <lib/ui/scenic/cpp/commands.h> #include <lib/ui/scenic/cpp/commands.h>
...@@ -29,7 +29,7 @@ struct FuchsiaEGLWindowDeleter ...@@ -29,7 +29,7 @@ struct FuchsiaEGLWindowDeleter
void operator()(fuchsia_egl_window *eglWindow) { fuchsia_egl_window_destroy(eglWindow); } void operator()(fuchsia_egl_window *eglWindow) { fuchsia_egl_window_destroy(eglWindow); }
}; };
class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow, public fuchsia::ui::viewsv1::ViewListener class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow
{ {
public: public:
ScenicWindow(); ScenicWindow();
...@@ -48,10 +48,6 @@ class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow, public fuchsia::ui::view ...@@ -48,10 +48,6 @@ class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow, public fuchsia::ui::view
void setVisible(bool isVisible) override; void setVisible(bool isVisible) override;
void signalTestEvent() override; void signalTestEvent() override;
// views::ViewListener:
void OnPropertiesChanged(fuchsia::ui::viewsv1::ViewProperties properties,
OnPropertiesChangedCallback callback) override;
// FIDL callbacks: // FIDL callbacks:
void OnScenicEvents(std::vector<fuchsia::ui::scenic::Event> events); void OnScenicEvents(std::vector<fuchsia::ui::scenic::Event> events);
void OnScenicError(zx_status_t status); void OnScenicError(zx_status_t status);
...@@ -63,18 +59,15 @@ class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow, public fuchsia::ui::view ...@@ -63,18 +59,15 @@ class ANGLE_UTIL_EXPORT ScenicWindow : public OSWindow, public fuchsia::ui::view
// System services. // System services.
zx::channel mServiceRoot; zx::channel mServiceRoot;
fuchsia::ui::scenic::ScenicPtr mScenic; fuchsia::ui::scenic::ScenicPtr mScenic;
fuchsia::ui::viewsv1::ViewManagerPtr mViewManager;
fuchsia::ui::policy::PresenterPtr mPresenter; fuchsia::ui::policy::PresenterPtr mPresenter;
// Scenic session & resources. // Scenic session & resources.
scenic::Session mScenicSession; scenic::Session mScenicSession;
scenic::ImportNode mParent;
scenic::ShapeNode mShape; scenic::ShapeNode mShape;
scenic::Material mMaterial; scenic::Material mMaterial;
// Scenic view & listener. // Scenic view.
fuchsia::ui::viewsv1::ViewPtr mView; std::unique_ptr<scenic::View> mView;
fidl::Binding<fuchsia::ui::viewsv1::ViewListener> mViewListenerBinding;
// EGL native window. // EGL native window.
std::unique_ptr<fuchsia_egl_window, FuchsiaEGLWindowDeleter> mFuchsiaEGLWindow; std::unique_ptr<fuchsia_egl_window, FuchsiaEGLWindowDeleter> mFuchsiaEGLWindow;
......
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