fakehwc, libvr_hwc-hal: update for ComposerHal changes
removeClient and enableCallback are removed. dumpDebugInfo,
registerCallback, and unregisterCallback are added.
Test: builds
Change-Id: If366fb24b555393abe5c7bf326027c30c3ceafa4
diff --git a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.cpp b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.cpp
index e16e7ec..973156a 100644
--- a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.cpp
+++ b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.cpp
@@ -145,8 +145,7 @@
} // namespace
FakeComposerClient::FakeComposerClient()
- : mCallbacksOn(false),
- mClient(nullptr),
+ : mEventCallback(nullptr),
mCurrentConfig(NULL_DISPLAY_CONFIG),
mVsyncEnabled(false),
mLayers(),
@@ -160,30 +159,32 @@
return false;
}
-void FakeComposerClient::removeClient() {
- ALOGV("removeClient");
- // TODO: Ahooga! Only thing current lifetime management choices in
- // APIs make possible. Sad.
- delete this;
+std::string FakeComposerClient::dumpDebugInfo() {
+ return {};
}
-void FakeComposerClient::enableCallback(bool enable) {
- ALOGV("enableCallback");
- mCallbacksOn = enable;
- if (mCallbacksOn) {
- mClient->onHotplug(PRIMARY_DISPLAY, IComposerCallback::Connection::CONNECTED);
+void FakeComposerClient::registerEventCallback(EventCallback* callback) {
+ ALOGV("registerEventCallback");
+ mEventCallback = callback;
+ if (mEventCallback) {
+ mEventCallback->onHotplug(PRIMARY_DISPLAY, IComposerCallback::Connection::CONNECTED);
}
}
+void FakeComposerClient::unregisterEventCallback() {
+ ALOGV("unregisterEventCallback");
+ mEventCallback = nullptr;
+}
+
void FakeComposerClient::hotplugDisplay(Display display, IComposerCallback::Connection state) {
- if (mCallbacksOn) {
- mClient->onHotplug(display, state);
+ if (mEventCallback) {
+ mEventCallback->onHotplug(display, state);
}
}
void FakeComposerClient::refreshDisplay(Display display) {
- if (mCallbacksOn) {
- mClient->onRefresh(display);
+ if (mEventCallback) {
+ mEventCallback->onRefresh(display);
}
}
@@ -500,12 +501,8 @@
//////////////////////////////////////////////////////////////////
-void FakeComposerClient::setClient(ComposerClient* client) {
- mClient = client;
-}
-
void FakeComposerClient::requestVSync(uint64_t vsyncTime) {
- if (mCallbacksOn) {
+ if (mEventCallback) {
uint64_t timestamp = vsyncTime;
ALOGV("Vsync");
if (timestamp == 0) {
@@ -516,7 +513,7 @@
if (mSurfaceComposer != nullptr) {
mSurfaceComposer->injectVSync(timestamp);
} else {
- mClient->onVsync(PRIMARY_DISPLAY, timestamp);
+ mEventCallback->onVsync(PRIMARY_DISPLAY, timestamp);
}
}
}
diff --git a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h
index 95c274a..d115d79 100644
--- a/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h
+++ b/services/surfaceflinger/tests/fakehwc/FakeComposerClient.h
@@ -61,8 +61,10 @@
bool hasCapability(hwc2_capability_t capability) override;
- void removeClient() override;
- void enableCallback(bool enable) override;
+ std::string dumpDebugInfo() override;
+ void registerEventCallback(EventCallback* callback) override;
+ void unregisterEventCallback() override;
+
uint32_t getMaxVirtualDisplayCount() override;
Error createVirtualDisplay(uint32_t width, uint32_t height, PixelFormat* format,
Display* outDisplay) override;
@@ -147,8 +149,7 @@
private:
LayerImpl& getLayerImpl(Layer handle);
- bool mCallbacksOn;
- ComposerClient* mClient;
+ EventCallback* mEventCallback;
Config mCurrentConfig;
bool mVsyncEnabled;
std::vector<std::unique_ptr<LayerImpl>> mLayers;
diff --git a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp
index 74b2efc..9b31985 100644
--- a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp
+++ b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp
@@ -169,7 +169,6 @@
// change the situation.
mMockComposer = new MockComposerClient;
sp<ComposerClient> client = new ComposerClient(mMockComposer);
- mMockComposer->setClient(client.get());
mFakeService = new FakeComposerService(client);
(void)mFakeService->registerAsService("mock");
@@ -447,7 +446,6 @@
// the lifetime of the FakeComposerClient.
sFakeComposer = new FakeComposerClient;
sp<ComposerClient> client = new ComposerClient(sFakeComposer);
- sFakeComposer->setClient(client.get());
sp<IComposer> fakeService = new FakeComposerService(client);
(void)fakeService->registerAsService("mock");
diff --git a/services/vr/hardware_composer/impl/vr_hwc.cpp b/services/vr/hardware_composer/impl/vr_hwc.cpp
index d5664d5..180e232 100644
--- a/services/vr/hardware_composer/impl/vr_hwc.cpp
+++ b/services/vr/hardware_composer/impl/vr_hwc.cpp
@@ -234,13 +234,10 @@
bool VrHwc::hasCapability(hwc2_capability_t /* capability */) { return false; }
-void VrHwc::removeClient() {
- std::lock_guard<std::mutex> guard(mutex_);
- client_ = nullptr;
-}
+void VrHwc::registerEventCallback(EventCallback* callback) {
+ event_callback_ = callback;
-void VrHwc::enableCallback(bool enable) {
- if (enable && client_ != nullptr) {
+ if (client_ != nullptr) {
{
int32_t width, height;
GetPrimaryDisplaySize(&width, &height);
@@ -249,8 +246,8 @@
// VR HWC and SurfaceFlinger.
displays_[kDefaultDisplayId].reset(new HwcDisplay(width, height));
}
- client_.promote()->onHotplug(kDefaultDisplayId,
- IComposerCallback::Connection::CONNECTED);
+ event_callback_->onHotplug(kDefaultDisplayId,
+ IComposerCallback::Connection::CONNECTED);
}
}
@@ -857,9 +854,9 @@
void VrHwc::ForceDisplaysRefresh() {
std::lock_guard<std::mutex> guard(mutex_);
- if (client_ != nullptr) {
+ if (event_callback_ != nullptr) {
for (const auto& pair : displays_)
- client_.promote()->onRefresh(pair.first);
+ event_callback_->onRefresh(pair.first);
}
}
diff --git a/services/vr/hardware_composer/impl/vr_hwc.h b/services/vr/hardware_composer/impl/vr_hwc.h
index 39747dc..1c308f2 100644
--- a/services/vr/hardware_composer/impl/vr_hwc.h
+++ b/services/vr/hardware_composer/impl/vr_hwc.h
@@ -207,8 +207,9 @@
// ComposerHal
bool hasCapability(hwc2_capability_t capability) override;
- void removeClient() override;
- void enableCallback(bool enable) override;
+ std::string dumpDebugInfo() override { return {}; }
+ void registerEventCallback(EventCallback* callback) override;
+ void unregisterEventCallback() override {}
uint32_t getMaxVirtualDisplayCount() override;
Error createVirtualDisplay(uint32_t width, uint32_t height,
@@ -304,6 +305,7 @@
std::unordered_map<Display, std::unique_ptr<HwcDisplay>> displays_;
Display display_count_ = 2;
+ EventCallback* event_callback_ = nullptr;
Observer* observer_ = nullptr;
VrHwc(const VrHwc&) = delete;