Loading services/vr/hardware_composer/impl/vr_composer_client.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,10 @@ void VrComposerClient::onHotplug(Display display, client_->onHotplug(display, connected); } void VrComposerClient::onRefresh(Display display) { client_->onRefresh(display); } Return<void> VrComposerClient::registerCallback( const sp<IComposerCallback>& callback) { return client_->registerCallback(callback); Loading services/vr/hardware_composer/impl/vr_composer_client.h +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class VrComposerClient : public IVrComposerClient { virtual ~VrComposerClient(); void onHotplug(Display display, IComposerCallback::Connection connected); void onRefresh(Display display); // IComposerClient Return<void> registerCallback(const sp<IComposerCallback>& callback) override; Loading services/vr/hardware_composer/impl/vr_hwc.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -851,6 +851,14 @@ Return<void> VrHwc::createClient(createClient_cb hidl_cb) { return Void(); } void VrHwc::ForceDisplaysRefresh() { std::lock_guard<std::mutex> guard(mutex_); if (client_ != nullptr) { for (const auto& pair : displays_) client_.promote()->onRefresh(pair.first); } } void VrHwc::RegisterObserver(Observer* observer) { std::lock_guard<std::mutex> guard(mutex_); if (observer_) Loading services/vr/hardware_composer/impl/vr_hwc.h +2 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ class ComposerView { virtual ~ComposerView() {} virtual void ForceDisplaysRefresh() = 0; virtual void RegisterObserver(Observer* observer) = 0; virtual void UnregisterObserver(Observer* observer) = 0; }; Loading Loading @@ -288,6 +289,7 @@ class VrHwc : public IComposer, public ComposerBase, public ComposerView { Return<void> createClient(createClient_cb hidl_cb) override; // ComposerView: void ForceDisplaysRefresh() override; void RegisterObserver(Observer* observer) override; void UnregisterObserver(Observer* observer) override; Loading @@ -295,7 +297,6 @@ class VrHwc : public IComposer, public ComposerBase, public ComposerView { HwcDisplay* FindDisplay(Display display); wp<VrComposerClient> client_; sp<IComposerCallback> callbacks_; // Guard access to internal state from binder threads. std::mutex mutex_; Loading services/vr/hardware_composer/tests/vr_composer_test.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,24 @@ namespace { const char kVrDisplayName[] = "VrDisplay_Test"; class TestComposerView : public ComposerView { public: TestComposerView() {} ~TestComposerView() override = default; size_t display_refresh_count() const { return display_refresh_count_; } void ForceDisplaysRefresh() override { display_refresh_count_++; } void RegisterObserver(Observer* observer) override {} void UnregisterObserver(Observer* observer) override {} TestComposerView(const TestComposerView&) = delete; void operator=(const TestComposerView&) = delete; private: size_t display_refresh_count_ = 0; }; class TestComposerCallback : public BnVrComposerCallback { public: TestComposerCallback() {} Loading Loading @@ -57,7 +75,7 @@ sp<GraphicBuffer> CreateBuffer() { class VrComposerTest : public testing::Test { public: VrComposerTest() : composer_(new VrComposer()) {} VrComposerTest() : composer_(new VrComposer(&composer_view_)) {} ~VrComposerTest() override = default; sp<IVrComposer> GetComposerProxy() const { Loading @@ -72,6 +90,7 @@ class VrComposerTest : public testing::Test { } protected: TestComposerView composer_view_; sp<VrComposer> composer_; VrComposerTest(const VrComposerTest&) = delete; Loading @@ -89,7 +108,9 @@ TEST_F(VrComposerTest, TestWithoutObserver) { TEST_F(VrComposerTest, TestWithObserver) { sp<IVrComposer> composer = GetComposerProxy(); sp<TestComposerCallback> callback = new TestComposerCallback(); ASSERT_EQ(0, composer_view_.display_refresh_count()); ASSERT_TRUE(composer->registerObserver(callback).isOk()); ASSERT_EQ(1, composer_view_.display_refresh_count()); ComposerView::Frame frame; base::unique_fd fence = composer_->OnNewFrame(frame); Loading Loading
services/vr/hardware_composer/impl/vr_composer_client.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,10 @@ void VrComposerClient::onHotplug(Display display, client_->onHotplug(display, connected); } void VrComposerClient::onRefresh(Display display) { client_->onRefresh(display); } Return<void> VrComposerClient::registerCallback( const sp<IComposerCallback>& callback) { return client_->registerCallback(callback); Loading
services/vr/hardware_composer/impl/vr_composer_client.h +1 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class VrComposerClient : public IVrComposerClient { virtual ~VrComposerClient(); void onHotplug(Display display, IComposerCallback::Connection connected); void onRefresh(Display display); // IComposerClient Return<void> registerCallback(const sp<IComposerCallback>& callback) override; Loading
services/vr/hardware_composer/impl/vr_hwc.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -851,6 +851,14 @@ Return<void> VrHwc::createClient(createClient_cb hidl_cb) { return Void(); } void VrHwc::ForceDisplaysRefresh() { std::lock_guard<std::mutex> guard(mutex_); if (client_ != nullptr) { for (const auto& pair : displays_) client_.promote()->onRefresh(pair.first); } } void VrHwc::RegisterObserver(Observer* observer) { std::lock_guard<std::mutex> guard(mutex_); if (observer_) Loading
services/vr/hardware_composer/impl/vr_hwc.h +2 −1 Original line number Diff line number Diff line Loading @@ -103,6 +103,7 @@ class ComposerView { virtual ~ComposerView() {} virtual void ForceDisplaysRefresh() = 0; virtual void RegisterObserver(Observer* observer) = 0; virtual void UnregisterObserver(Observer* observer) = 0; }; Loading Loading @@ -288,6 +289,7 @@ class VrHwc : public IComposer, public ComposerBase, public ComposerView { Return<void> createClient(createClient_cb hidl_cb) override; // ComposerView: void ForceDisplaysRefresh() override; void RegisterObserver(Observer* observer) override; void UnregisterObserver(Observer* observer) override; Loading @@ -295,7 +297,6 @@ class VrHwc : public IComposer, public ComposerBase, public ComposerView { HwcDisplay* FindDisplay(Display display); wp<VrComposerClient> client_; sp<IComposerCallback> callbacks_; // Guard access to internal state from binder threads. std::mutex mutex_; Loading
services/vr/hardware_composer/tests/vr_composer_test.cpp +22 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,24 @@ namespace { const char kVrDisplayName[] = "VrDisplay_Test"; class TestComposerView : public ComposerView { public: TestComposerView() {} ~TestComposerView() override = default; size_t display_refresh_count() const { return display_refresh_count_; } void ForceDisplaysRefresh() override { display_refresh_count_++; } void RegisterObserver(Observer* observer) override {} void UnregisterObserver(Observer* observer) override {} TestComposerView(const TestComposerView&) = delete; void operator=(const TestComposerView&) = delete; private: size_t display_refresh_count_ = 0; }; class TestComposerCallback : public BnVrComposerCallback { public: TestComposerCallback() {} Loading Loading @@ -57,7 +75,7 @@ sp<GraphicBuffer> CreateBuffer() { class VrComposerTest : public testing::Test { public: VrComposerTest() : composer_(new VrComposer()) {} VrComposerTest() : composer_(new VrComposer(&composer_view_)) {} ~VrComposerTest() override = default; sp<IVrComposer> GetComposerProxy() const { Loading @@ -72,6 +90,7 @@ class VrComposerTest : public testing::Test { } protected: TestComposerView composer_view_; sp<VrComposer> composer_; VrComposerTest(const VrComposerTest&) = delete; Loading @@ -89,7 +108,9 @@ TEST_F(VrComposerTest, TestWithoutObserver) { TEST_F(VrComposerTest, TestWithObserver) { sp<IVrComposer> composer = GetComposerProxy(); sp<TestComposerCallback> callback = new TestComposerCallback(); ASSERT_EQ(0, composer_view_.display_refresh_count()); ASSERT_TRUE(composer->registerObserver(callback).isOk()); ASSERT_EQ(1, composer_view_.display_refresh_count()); ComposerView::Frame frame; base::unique_fd fence = composer_->OnNewFrame(frame); Loading