Merge "SF: Clean up RefreshRateConfigs tests"
diff --git a/include/android/input.h b/include/android/input.h
index fbd61b5..e6ad943f 100644
--- a/include/android/input.h
+++ b/include/android/input.h
@@ -877,6 +877,7 @@
* Keyboard types.
*
* Refer to the documentation on android.view.InputDevice for more details.
+ * Note: When adding a new keyboard type here InputDeviceInfo::setKeyboardType needs to be updated.
*/
enum {
/** none */
diff --git a/include/input/InputDevice.h b/include/input/InputDevice.h
index 22aae19..c4f03c9 100644
--- a/include/input/InputDevice.h
+++ b/include/input/InputDevice.h
@@ -235,7 +235,7 @@
void addBatteryInfo(const InputDeviceBatteryInfo& info);
void addLightInfo(const InputDeviceLightInfo& info);
- inline void setKeyboardType(int32_t keyboardType) { mKeyboardType = keyboardType; }
+ void setKeyboardType(int32_t keyboardType);
inline int32_t getKeyboardType() const { return mKeyboardType; }
inline void setKeyCharacterMap(const std::shared_ptr<KeyCharacterMap> value) {
diff --git a/libs/input/InputDevice.cpp b/libs/input/InputDevice.cpp
index ac84627..0bee1b6 100644
--- a/libs/input/InputDevice.cpp
+++ b/libs/input/InputDevice.cpp
@@ -252,6 +252,13 @@
mLights.insert_or_assign(info.id, info);
}
+void InputDeviceInfo::setKeyboardType(int32_t keyboardType) {
+ static_assert(AINPUT_KEYBOARD_TYPE_NONE < AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC);
+ static_assert(AINPUT_KEYBOARD_TYPE_NON_ALPHABETIC < AINPUT_KEYBOARD_TYPE_ALPHABETIC);
+ // There can be multiple subdevices with different keyboard types, set it to the highest type
+ mKeyboardType = std::max(mKeyboardType, keyboardType);
+}
+
std::vector<InputDeviceSensorInfo> InputDeviceInfo::getSensors() {
std::vector<InputDeviceSensorInfo> infos;
infos.reserve(mSensors.size());
diff --git a/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h b/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h
index bd3022b..6443c2b 100644
--- a/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h
+++ b/services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h
@@ -39,7 +39,7 @@
HWComposer();
~HWComposer() override;
- MOCK_METHOD1(setCallback, void(HWC2::ComposerCallback*));
+ MOCK_METHOD1(setCallback, void(HWC2::ComposerCallback&));
MOCK_CONST_METHOD3(getDisplayIdentificationData,
bool(hal::HWDisplayId, uint8_t*, DisplayIdentificationData*));
MOCK_CONST_METHOD1(hasCapability, bool(hal::Capability));
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
index 1448e56..b1057c3 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp
@@ -30,6 +30,8 @@
#include <algorithm>
#include <cinttypes>
+#include "HWC2.h"
+
namespace android {
using hardware::hidl_handle;
@@ -169,40 +171,47 @@
class AidlIComposerCallbackWrapper : public BnComposerCallback {
public:
- AidlIComposerCallbackWrapper(sp<V2_4::IComposerCallback> callback)
- : mCallback(std::move(callback)) {}
+ AidlIComposerCallbackWrapper(HWC2::ComposerCallback& callback) : mCallback(callback) {}
::ndk::ScopedAStatus onHotplug(int64_t in_display, bool in_connected) override {
const auto connection = in_connected ? V2_4::IComposerCallback::Connection::CONNECTED
: V2_4::IComposerCallback::Connection::DISCONNECTED;
- mCallback->onHotplug(translate<Display>(in_display), connection);
+ mCallback.onComposerHalHotplug(translate<Display>(in_display), connection);
return ::ndk::ScopedAStatus::ok();
}
::ndk::ScopedAStatus onRefresh(int64_t in_display) override {
- mCallback->onRefresh(translate<Display>(in_display));
+ mCallback.onComposerHalRefresh(translate<Display>(in_display));
return ::ndk::ScopedAStatus::ok();
}
+
::ndk::ScopedAStatus onSeamlessPossible(int64_t in_display) override {
- mCallback->onSeamlessPossible(translate<Display>(in_display));
+ mCallback.onComposerHalSeamlessPossible(translate<Display>(in_display));
return ::ndk::ScopedAStatus::ok();
}
+
::ndk::ScopedAStatus onVsync(int64_t in_display, int64_t in_timestamp,
int32_t in_vsyncPeriodNanos) override {
- mCallback->onVsync_2_4(translate<Display>(in_display), in_timestamp,
- static_cast<uint32_t>(in_vsyncPeriodNanos));
+ mCallback.onComposerHalVsync(translate<Display>(in_display), in_timestamp,
+ static_cast<uint32_t>(in_vsyncPeriodNanos));
return ::ndk::ScopedAStatus::ok();
}
+
::ndk::ScopedAStatus onVsyncPeriodTimingChanged(
int64_t in_display, const AidlVsyncPeriodChangeTimeline& in_updatedTimeline) override {
- mCallback->onVsyncPeriodTimingChanged(translate<Display>(in_display),
- translate<V2_4::VsyncPeriodChangeTimeline>(
- in_updatedTimeline));
+ mCallback.onComposerHalVsyncPeriodTimingChanged(translate<Display>(in_display),
+ translate<V2_4::VsyncPeriodChangeTimeline>(
+ in_updatedTimeline));
+ return ::ndk::ScopedAStatus::ok();
+ }
+
+ ::ndk::ScopedAStatus onVsyncIdle(int64_t in_display) override {
+ mCallback.onComposerHalVsyncIdle(translate<Display>(in_display));
return ::ndk::ScopedAStatus::ok();
}
private:
- sp<V2_4::IComposerCallback> mCallback;
+ HWC2::ComposerCallback& mCallback;
};
std::string AidlComposer::instance(const std::string& serviceName) {
@@ -262,10 +271,11 @@
return info;
}
-void AidlComposer::registerCallback(const sp<IComposerCallback>& callback) {
+void AidlComposer::registerCallback(HWC2::ComposerCallback& callback) {
if (mAidlComposerCallback) {
ALOGE("Callback already registered");
}
+
mAidlComposerCallback = ndk::SharedRefBase::make<AidlIComposerCallbackWrapper>(callback);
AIBinder_setMinSchedulerPolicy(mAidlComposerCallback->asBinder().get(), SCHED_FIFO, 2);
diff --git a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
index 6770017..374a436 100644
--- a/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/AidlComposerHal.h
@@ -63,7 +63,7 @@
std::vector<IComposer::Capability> getCapabilities() override;
std::string dumpDebugInfo() override;
- void registerCallback(const sp<IComposerCallback>& callback) override;
+ void registerCallback(HWC2::ComposerCallback& callback) override;
// Reset all pending commands in the command buffer. Useful if you want to
// skip a frame but have already queued some commands.
diff --git a/services/surfaceflinger/DisplayHardware/ComposerHal.h b/services/surfaceflinger/DisplayHardware/ComposerHal.h
index 22f424f..fe55e6b 100644
--- a/services/surfaceflinger/DisplayHardware/ComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/ComposerHal.h
@@ -34,11 +34,17 @@
#include <aidl/android/hardware/graphics/composer3/Color.h>
#include <aidl/android/hardware/graphics/composer3/Composition.h>
#include <aidl/android/hardware/graphics/composer3/DisplayCapability.h>
+#include <aidl/android/hardware/graphics/composer3/IComposerCallback.h>
// TODO(b/129481165): remove the #pragma below and fix conversion issues
#pragma clang diagnostic pop // ignored "-Wconversion -Wextra"
-namespace android::Hwc2 {
+namespace android {
+namespace HWC2 {
+struct ComposerCallback;
+} // namespace HWC2
+
+namespace Hwc2 {
namespace types = hardware::graphics::common;
@@ -46,6 +52,7 @@
namespace V2_2 = hardware::graphics::composer::V2_2;
namespace V2_3 = hardware::graphics::composer::V2_3;
namespace V2_4 = hardware::graphics::composer::V2_4;
+namespace V3_0 = ::aidl::android::hardware::graphics::composer3;
using types::V1_0::ColorTransform;
using types::V1_0::Transform;
@@ -89,7 +96,7 @@
virtual std::vector<IComposer::Capability> getCapabilities() = 0;
virtual std::string dumpDebugInfo() = 0;
- virtual void registerCallback(const sp<IComposerCallback>& callback) = 0;
+ virtual void registerCallback(HWC2::ComposerCallback& callback) = 0;
// Reset all pending commands in the command buffer. Useful if you want to
// skip a frame but have already queued some commands.
@@ -109,9 +116,8 @@
virtual Error destroyLayer(Display display, Layer layer) = 0;
virtual Error getActiveConfig(Display display, Config* outConfig) = 0;
- virtual Error getChangedCompositionTypes(
- Display display, std::vector<Layer>* outLayers,
- std::vector<aidl::android::hardware::graphics::composer3::Composition>* outTypes) = 0;
+ virtual Error getChangedCompositionTypes(Display display, std::vector<Layer>* outLayers,
+ std::vector<V3_0::Composition>* outTypes) = 0;
virtual Error getColorModes(Display display, std::vector<ColorMode>* outModes) = 0;
virtual Error getDisplayAttribute(Display display, Config config,
IComposerClient::Attribute attribute, int32_t* outValue) = 0;
@@ -225,10 +231,8 @@
const DisplayBrightnessOptions& options) = 0;
// Composer HAL 2.4
- virtual Error getDisplayCapabilities(
- Display display,
- std::vector<aidl::android::hardware::graphics::composer3::DisplayCapability>*
- outCapabilities) = 0;
+ virtual Error getDisplayCapabilities(Display display,
+ std::vector<V3_0::DisplayCapability>* outCapabilities) = 0;
virtual V2_4::Error getDisplayConnectionType(
Display display, IComposerClient::DisplayConnectionType* outType) = 0;
virtual V2_4::Error getDisplayVsyncPeriod(Display display,
@@ -263,4 +267,5 @@
virtual Error getPreferredBootDisplayConfig(Display displayId, Config*) = 0;
};
-} // namespace android::Hwc2
+} // namespace Hwc2
+} // namespace android
diff --git a/services/surfaceflinger/DisplayHardware/HWC2.h b/services/surfaceflinger/DisplayHardware/HWC2.h
index 57eb128..0a605a8 100644
--- a/services/surfaceflinger/DisplayHardware/HWC2.h
+++ b/services/surfaceflinger/DisplayHardware/HWC2.h
@@ -72,6 +72,7 @@
virtual void onComposerHalVsyncPeriodTimingChanged(hal::HWDisplayId,
const hal::VsyncPeriodChangeTimeline&) = 0;
virtual void onComposerHalSeamlessPossible(hal::HWDisplayId) = 0;
+ virtual void onComposerHalVsyncIdle(hal::HWDisplayId) = 0;
protected:
~ComposerCallback() = default;
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
index 44e4597..9174ec7 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp
@@ -74,63 +74,6 @@
namespace hal = android::hardware::graphics::composer::hal;
namespace android {
-namespace {
-
-using android::hardware::Return;
-using android::hardware::Void;
-using android::HWC2::ComposerCallback;
-
-class ComposerCallbackBridge : public hal::IComposerCallback {
-public:
- ComposerCallbackBridge(ComposerCallback* callback, bool vsyncSwitchingSupported)
- : mCallback(callback), mVsyncSwitchingSupported(vsyncSwitchingSupported) {}
-
- Return<void> onHotplug(hal::HWDisplayId display, hal::Connection connection) override {
- mCallback->onComposerHalHotplug(display, connection);
- return Void();
- }
-
- Return<void> onRefresh(hal::HWDisplayId display) override {
- mCallback->onComposerHalRefresh(display);
- return Void();
- }
-
- Return<void> onVsync(hal::HWDisplayId display, int64_t timestamp) override {
- if (!mVsyncSwitchingSupported) {
- mCallback->onComposerHalVsync(display, timestamp, std::nullopt);
- } else {
- ALOGW("Unexpected onVsync callback on composer >= 2.4, ignoring.");
- }
- return Void();
- }
-
- Return<void> onVsync_2_4(hal::HWDisplayId display, int64_t timestamp,
- hal::VsyncPeriodNanos vsyncPeriodNanos) override {
- if (mVsyncSwitchingSupported) {
- mCallback->onComposerHalVsync(display, timestamp, vsyncPeriodNanos);
- } else {
- ALOGW("Unexpected onVsync_2_4 callback on composer <= 2.3, ignoring.");
- }
- return Void();
- }
-
- Return<void> onVsyncPeriodTimingChanged(
- hal::HWDisplayId display, const hal::VsyncPeriodChangeTimeline& timeline) override {
- mCallback->onComposerHalVsyncPeriodTimingChanged(display, timeline);
- return Void();
- }
-
- Return<void> onSeamlessPossible(hal::HWDisplayId display) override {
- mCallback->onComposerHalSeamlessPossible(display);
- return Void();
- }
-
-private:
- ComposerCallback* const mCallback;
- const bool mVsyncSwitchingSupported;
-};
-
-} // namespace
HWComposer::~HWComposer() = default;
@@ -149,7 +92,7 @@
mDisplayData.clear();
}
-void HWComposer::setCallback(HWC2::ComposerCallback* callback) {
+void HWComposer::setCallback(HWC2::ComposerCallback& callback) {
loadCapabilities();
loadLayerMetadataSupport();
@@ -159,10 +102,7 @@
}
mRegisteredCallback = true;
- const bool vsyncSwitchingSupported =
- mComposer->isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching);
- mComposer->registerCallback(
- sp<ComposerCallbackBridge>::make(callback, vsyncSwitchingSupported));
+ mComposer->registerCallback(callback);
}
bool HWComposer::getDisplayIdentificationData(hal::HWDisplayId hwcDisplayId, uint8_t* outPort,
diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.h b/services/surfaceflinger/DisplayHardware/HWComposer.h
index 93773fa..3e68028 100644
--- a/services/surfaceflinger/DisplayHardware/HWComposer.h
+++ b/services/surfaceflinger/DisplayHardware/HWComposer.h
@@ -105,7 +105,7 @@
virtual ~HWComposer();
- virtual void setCallback(HWC2::ComposerCallback*) = 0;
+ virtual void setCallback(HWC2::ComposerCallback&) = 0;
virtual bool getDisplayIdentificationData(hal::HWDisplayId, uint8_t* outPort,
DisplayIdentificationData* outData) const = 0;
@@ -272,7 +272,7 @@
~HWComposer() override;
- void setCallback(HWC2::ComposerCallback*) override;
+ void setCallback(HWC2::ComposerCallback&) override;
bool getDisplayIdentificationData(hal::HWDisplayId, uint8_t* outPort,
DisplayIdentificationData* outData) const override;
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
index d3acecb..746ac64 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.cpp
@@ -30,6 +30,7 @@
#include <hidl/HidlTransportUtils.h>
#include <log/log.h>
#include <utils/Trace.h>
+#include "HWC2.h"
#include "Hal.h"
#include <algorithm>
@@ -44,6 +45,63 @@
using hardware::Return;
namespace Hwc2 {
+namespace {
+
+using android::hardware::Return;
+using android::hardware::Void;
+using android::HWC2::ComposerCallback;
+
+class ComposerCallbackBridge : public IComposerCallback {
+public:
+ ComposerCallbackBridge(ComposerCallback& callback, bool vsyncSwitchingSupported)
+ : mCallback(callback), mVsyncSwitchingSupported(vsyncSwitchingSupported) {}
+
+ Return<void> onHotplug(Display display, Connection connection) override {
+ mCallback.onComposerHalHotplug(display, connection);
+ return Void();
+ }
+
+ Return<void> onRefresh(Display display) override {
+ mCallback.onComposerHalRefresh(display);
+ return Void();
+ }
+
+ Return<void> onVsync(Display display, int64_t timestamp) override {
+ if (!mVsyncSwitchingSupported) {
+ mCallback.onComposerHalVsync(display, timestamp, std::nullopt);
+ } else {
+ ALOGW("Unexpected onVsync callback on composer >= 2.4, ignoring.");
+ }
+ return Void();
+ }
+
+ Return<void> onVsync_2_4(Display display, int64_t timestamp,
+ VsyncPeriodNanos vsyncPeriodNanos) override {
+ if (mVsyncSwitchingSupported) {
+ mCallback.onComposerHalVsync(display, timestamp, vsyncPeriodNanos);
+ } else {
+ ALOGW("Unexpected onVsync_2_4 callback on composer <= 2.3, ignoring.");
+ }
+ return Void();
+ }
+
+ Return<void> onVsyncPeriodTimingChanged(Display display,
+ const VsyncPeriodChangeTimeline& timeline) override {
+ mCallback.onComposerHalVsyncPeriodTimingChanged(display, timeline);
+ return Void();
+ }
+
+ Return<void> onSeamlessPossible(Display display) override {
+ mCallback.onComposerHalSeamlessPossible(display);
+ return Void();
+ }
+
+private:
+ ComposerCallback& mCallback;
+ const bool mVsyncSwitchingSupported;
+};
+
+} // namespace
HidlComposer::~HidlComposer() = default;
@@ -1246,6 +1304,13 @@
return Error::NONE;
}
+void HidlComposer::registerCallback(ComposerCallback& callback) {
+ const bool vsyncSwitchingSupported =
+ isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching);
+
+ registerCallback(sp<ComposerCallbackBridge>::make(callback, vsyncSwitchingSupported));
+}
+
CommandReader::~CommandReader() {
resetData();
}
diff --git a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
index c8c7800..1ffca6e 100644
--- a/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
+++ b/services/surfaceflinger/DisplayHardware/HidlComposerHal.h
@@ -172,7 +172,7 @@
std::vector<IComposer::Capability> getCapabilities() override;
std::string dumpDebugInfo() override;
- void registerCallback(const sp<IComposerCallback>& callback) override;
+ void registerCallback(HWC2::ComposerCallback& callback) override;
// Reset all pending commands in the command buffer. Useful if you want to
// skip a frame but have already queued some commands.
@@ -334,6 +334,8 @@
~CommandWriter() override {}
};
+ void registerCallback(const sp<IComposerCallback>& callback);
+
// Many public functions above simply write a command into the command
// queue to batch the calls. validateDisplay and presentDisplay will call
// this function to execute the command queue.
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 74f733e..73a5f58 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -849,7 +849,7 @@
mCompositionEngine->setTimeStats(mTimeStats);
mCompositionEngine->setHwComposer(getFactory().createHWComposer(mHwcServiceName));
- mCompositionEngine->getHwComposer().setCallback(this);
+ mCompositionEngine->getHwComposer().setCallback(*this);
ClientCache::getInstance().setRenderEngine(&getRenderEngine());
if (base::GetBoolProperty("debug.sf.enable_hwc_vds"s, false)) {
@@ -1962,6 +1962,11 @@
scheduleComposite(FrameHint::kNone);
}
+void SurfaceFlinger::onComposerHalVsyncIdle(hal::HWDisplayId) {
+ // TODO(b/198106220): force enable HWVsync to avoid drift problem during
+ // idle.
+}
+
void SurfaceFlinger::setVsyncEnabled(bool enabled) {
ATRACE_CALL();
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 97a32d4..0c990d8 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -631,6 +631,7 @@
void onComposerHalVsyncPeriodTimingChanged(hal::HWDisplayId,
const hal::VsyncPeriodChangeTimeline&) override;
void onComposerHalSeamlessPossible(hal::HWDisplayId) override;
+ void onComposerHalVsyncIdle(hal::HWDisplayId) override;
// ICompositor overrides:
diff --git a/services/surfaceflinger/tests/unittests/Android.bp b/services/surfaceflinger/tests/unittests/Android.bp
index 5af17ec..48f18b9 100644
--- a/services/surfaceflinger/tests/unittests/Android.bp
+++ b/services/surfaceflinger/tests/unittests/Android.bp
@@ -21,6 +21,24 @@
default_applicable_licenses: ["frameworks_native_license"],
}
+filegroup {
+ name: "libsurfaceflinger_mock_sources",
+ srcs: [
+ "mock/DisplayHardware/MockComposer.cpp",
+ "mock/DisplayHardware/MockHWC2.cpp",
+ "mock/DisplayHardware/MockPowerAdvisor.cpp",
+ "mock/MockEventThread.cpp",
+ "mock/MockFrameTimeline.cpp",
+ "mock/MockFrameTracer.cpp",
+ "mock/MockNativeWindowSurface.cpp",
+ "mock/MockSurfaceInterceptor.cpp",
+ "mock/MockTimeStats.cpp",
+ "mock/MockVsyncController.cpp",
+ "mock/MockVSyncTracker.cpp",
+ "mock/system/window/MockNativeWindow.cpp",
+ ],
+}
+
cc_test {
name: "libsurfaceflinger_unittest",
defaults: [
@@ -45,6 +63,7 @@
address: true,
},
srcs: [
+ ":libsurfaceflinger_mock_sources",
":libsurfaceflinger_sources",
"libsurfaceflinger_unittest_main.cpp",
"CachingTest.cpp",
@@ -101,18 +120,6 @@
"VSyncPredictorTest.cpp",
"VSyncReactorTest.cpp",
"VsyncConfigurationTest.cpp",
- "mock/DisplayHardware/MockComposer.cpp",
- "mock/DisplayHardware/MockHWC2.cpp",
- "mock/DisplayHardware/MockPowerAdvisor.cpp",
- "mock/MockEventThread.cpp",
- "mock/MockFrameTimeline.cpp",
- "mock/MockFrameTracer.cpp",
- "mock/MockNativeWindowSurface.cpp",
- "mock/MockSurfaceInterceptor.cpp",
- "mock/MockTimeStats.cpp",
- "mock/MockVsyncController.cpp",
- "mock/MockVSyncTracker.cpp",
- "mock/system/window/MockNativeWindow.cpp",
],
static_libs: [
"android.hardware.common-V2-ndk",
diff --git a/services/surfaceflinger/tests/unittests/HWComposerTest.cpp b/services/surfaceflinger/tests/unittests/HWComposerTest.cpp
index 2af0480..0069441 100644
--- a/services/surfaceflinger/tests/unittests/HWComposerTest.cpp
+++ b/services/surfaceflinger/tests/unittests/HWComposerTest.cpp
@@ -89,6 +89,7 @@
MOCK_METHOD2(onComposerHalVsyncPeriodTimingChanged,
void(hal::HWDisplayId, const hal::VsyncPeriodChangeTimeline&));
MOCK_METHOD1(onComposerHalSeamlessPossible, void(hal::HWDisplayId));
+ MOCK_METHOD1(onComposerHalVsyncIdle, void(hal::HWDisplayId));
};
struct HWComposerSetCallbackTest : testing::Test {
@@ -110,11 +111,9 @@
}),
Return(hardware::graphics::composer::V2_4::Error::NONE)));
EXPECT_CALL(*mHal, registerCallback(_));
- EXPECT_CALL(*mHal, isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching))
- .WillOnce(Return(false));
impl::HWComposer hwc{std::unique_ptr<Hwc2::Composer>(mHal)};
- hwc.setCallback(&mCallback);
+ hwc.setCallback(mCallback);
const auto& supported = hwc.getSupportedLayerGenericMetadata();
EXPECT_EQ(2u, supported.size());
@@ -129,11 +128,9 @@
EXPECT_CALL(*mHal, getLayerGenericMetadataKeys(_))
.WillOnce(Return(hardware::graphics::composer::V2_4::Error::UNSUPPORTED));
EXPECT_CALL(*mHal, registerCallback(_));
- EXPECT_CALL(*mHal, isSupported(Hwc2::Composer::OptionalFeature::RefreshRateSwitching))
- .WillOnce(Return(false));
impl::HWComposer hwc{std::unique_ptr<Hwc2::Composer>(mHal)};
- hwc.setCallback(&mCallback);
+ hwc.setCallback(mCallback);
const auto& supported = hwc.getSupportedLayerGenericMetadata();
EXPECT_EQ(0u, supported.size());
diff --git a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
index 4273401..261e106 100644
--- a/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
+++ b/services/surfaceflinger/tests/unittests/mock/DisplayHardware/MockComposer.h
@@ -19,6 +19,7 @@
#include <gmock/gmock.h>
#include "DisplayHardware/ComposerHal.h"
+#include "DisplayHardware/HWC2.h"
namespace android {
@@ -51,7 +52,7 @@
MOCK_METHOD(bool, isSupported, (OptionalFeature), (const, override));
MOCK_METHOD0(getCapabilities, std::vector<IComposer::Capability>());
MOCK_METHOD0(dumpDebugInfo, std::string());
- MOCK_METHOD1(registerCallback, void(const sp<IComposerCallback>&));
+ MOCK_METHOD1(registerCallback, void(HWC2::ComposerCallback&));
MOCK_METHOD0(resetCommands, void());
MOCK_METHOD0(executeCommands, Error());
MOCK_METHOD0(getMaxVirtualDisplayCount, uint32_t());