Loading libs/binder/RpcSession.cpp +10 −4 Original line number Diff line number Diff line Loading @@ -853,10 +853,16 @@ status_t RpcSession::ExclusiveConnection::find(const sp<RpcSession>& session, Co } if (session->mConnections.mOutgoing.size() == 0) { ALOGE("Session has no client connections. This is required for an RPC server to make " "any non-nested (e.g. oneway or on another thread) calls. Use: %d. Server " "connections: %zu", static_cast<int>(use), session->mConnections.mIncoming.size()); ALOGE("Session has no outgoing connections. This is required for an RPC server to make " "any non-nested (e.g. oneway or on another thread) calls. Use code request " "reason: %d. Incoming connections: %zu. %s.", static_cast<int>(use), session->mConnections.mIncoming.size(), (session->server() ? "This is a server session, so see RpcSession::setMaxIncomingThreads " "for the corresponding client" : "This is a client session, so see RpcSession::setMaxOutgoingThreads " "for this client or RpcServer::setMaxThreads for the corresponding " "server")); return WOULD_BLOCK; } Loading services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h +2 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ public: status_t(PhysicalDisplayId, std::optional<aidl::android::hardware::graphics::common:: DisplayDecorationSupport>* support)); MOCK_METHOD2(setIdleTimerEnabled, status_t(PhysicalDisplayId, std::chrono::milliseconds)); MOCK_METHOD1(hasDisplayIdleTimerCapability, bool(PhysicalDisplayId displayId)); }; } // namespace mock Loading services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -248,6 +248,7 @@ bool AidlComposer::isSupported(OptionalFeature feature) const { case OptionalFeature::ExpectedPresentTime: case OptionalFeature::DisplayBrightnessCommand: case OptionalFeature::BootDisplayConfig: case OptionalFeature::KernelIdleTimer: return true; } } Loading Loading @@ -475,6 +476,19 @@ Error AidlComposer::getDozeSupport(Display display, bool* outSupport) { return Error::NONE; } Error AidlComposer::hasDisplayIdleTimerCapability(Display display, bool* outSupport) { std::vector<AidlDisplayCapability> capabilities; const auto status = mAidlComposerClient->getDisplayCapabilities(translate<int64_t>(display), &capabilities); if (!status.isOk()) { ALOGE("getDisplayCapabilities failed %s", status.getDescription().c_str()); return static_cast<Error>(status.getServiceSpecificError()); } *outSupport = std::find(capabilities.begin(), capabilities.end(), AidlDisplayCapability::DISPLAY_IDLE_TIMER) != capabilities.end(); return Error::NONE; } Error AidlComposer::getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) { Loading Loading @@ -1100,5 +1114,17 @@ Error AidlComposer::getDisplayDecorationSupport(Display display, } return Error::NONE; } Error AidlComposer::setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) { const auto status = mAidlComposerClient->setIdleTimerEnabled(translate<int64_t>(displayId), translate<int32_t>(timeout.count())); if (!status.isOk()) { ALOGE("setIdleTimerEnabled failed %s", status.getDescription().c_str()); return static_cast<Error>(status.getServiceSpecificError()); } return Error::NONE; } } // namespace Hwc2 } // namespace android services/surfaceflinger/DisplayHardware/AidlComposerHal.h +2 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public: std::vector<uint32_t>* outLayerRequestMasks) override; Error getDozeSupport(Display display, bool* outSupport) override; Error hasDisplayIdleTimerCapability(Display display, bool* outSupport) override; Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Loading Loading @@ -220,6 +221,7 @@ public: Error getPreferredBootDisplayConfig(Display displayId, Config*) override; Error getDisplayDecorationSupport(Display display, std::optional<DisplayDecorationSupport>* support) override; Error setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) override; private: // Many public functions above simply write a command into the command Loading services/surfaceflinger/DisplayHardware/ComposerHal.h +3 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ public: // Whether setDisplayBrightness is able to be applied as part of a display command. DisplayBrightnessCommand, BootDisplayConfig, KernelIdleTimer, }; virtual bool isSupported(OptionalFeature) const = 0; Loading Loading @@ -134,6 +135,7 @@ public: std::vector<uint32_t>* outLayerRequestMasks) = 0; virtual Error getDozeSupport(Display display, bool* outSupport) = 0; virtual Error hasDisplayIdleTimerCapability(Display display, bool* outSupport) = 0; virtual Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) = 0; Loading Loading @@ -274,6 +276,7 @@ public: Display display, std::optional<::aidl::android::hardware::graphics::common::DisplayDecorationSupport>* support) = 0; virtual Error setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) = 0; }; } // namespace Hwc2 Loading Loading
libs/binder/RpcSession.cpp +10 −4 Original line number Diff line number Diff line Loading @@ -853,10 +853,16 @@ status_t RpcSession::ExclusiveConnection::find(const sp<RpcSession>& session, Co } if (session->mConnections.mOutgoing.size() == 0) { ALOGE("Session has no client connections. This is required for an RPC server to make " "any non-nested (e.g. oneway or on another thread) calls. Use: %d. Server " "connections: %zu", static_cast<int>(use), session->mConnections.mIncoming.size()); ALOGE("Session has no outgoing connections. This is required for an RPC server to make " "any non-nested (e.g. oneway or on another thread) calls. Use code request " "reason: %d. Incoming connections: %zu. %s.", static_cast<int>(use), session->mConnections.mIncoming.size(), (session->server() ? "This is a server session, so see RpcSession::setMaxIncomingThreads " "for the corresponding client" : "This is a client session, so see RpcSession::setMaxOutgoingThreads " "for this client or RpcServer::setMaxThreads for the corresponding " "server")); return WOULD_BLOCK; } Loading
services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h +2 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,8 @@ public: status_t(PhysicalDisplayId, std::optional<aidl::android::hardware::graphics::common:: DisplayDecorationSupport>* support)); MOCK_METHOD2(setIdleTimerEnabled, status_t(PhysicalDisplayId, std::chrono::milliseconds)); MOCK_METHOD1(hasDisplayIdleTimerCapability, bool(PhysicalDisplayId displayId)); }; } // namespace mock Loading
services/surfaceflinger/DisplayHardware/AidlComposerHal.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -248,6 +248,7 @@ bool AidlComposer::isSupported(OptionalFeature feature) const { case OptionalFeature::ExpectedPresentTime: case OptionalFeature::DisplayBrightnessCommand: case OptionalFeature::BootDisplayConfig: case OptionalFeature::KernelIdleTimer: return true; } } Loading Loading @@ -475,6 +476,19 @@ Error AidlComposer::getDozeSupport(Display display, bool* outSupport) { return Error::NONE; } Error AidlComposer::hasDisplayIdleTimerCapability(Display display, bool* outSupport) { std::vector<AidlDisplayCapability> capabilities; const auto status = mAidlComposerClient->getDisplayCapabilities(translate<int64_t>(display), &capabilities); if (!status.isOk()) { ALOGE("getDisplayCapabilities failed %s", status.getDescription().c_str()); return static_cast<Error>(status.getServiceSpecificError()); } *outSupport = std::find(capabilities.begin(), capabilities.end(), AidlDisplayCapability::DISPLAY_IDLE_TIMER) != capabilities.end(); return Error::NONE; } Error AidlComposer::getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) { Loading Loading @@ -1100,5 +1114,17 @@ Error AidlComposer::getDisplayDecorationSupport(Display display, } return Error::NONE; } Error AidlComposer::setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) { const auto status = mAidlComposerClient->setIdleTimerEnabled(translate<int64_t>(displayId), translate<int32_t>(timeout.count())); if (!status.isOk()) { ALOGE("setIdleTimerEnabled failed %s", status.getDescription().c_str()); return static_cast<Error>(status.getServiceSpecificError()); } return Error::NONE; } } // namespace Hwc2 } // namespace android
services/surfaceflinger/DisplayHardware/AidlComposerHal.h +2 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ public: std::vector<uint32_t>* outLayerRequestMasks) override; Error getDozeSupport(Display display, bool* outSupport) override; Error hasDisplayIdleTimerCapability(Display display, bool* outSupport) override; Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) override; Loading Loading @@ -220,6 +221,7 @@ public: Error getPreferredBootDisplayConfig(Display displayId, Config*) override; Error getDisplayDecorationSupport(Display display, std::optional<DisplayDecorationSupport>* support) override; Error setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) override; private: // Many public functions above simply write a command into the command Loading
services/surfaceflinger/DisplayHardware/ComposerHal.h +3 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,7 @@ public: // Whether setDisplayBrightness is able to be applied as part of a display command. DisplayBrightnessCommand, BootDisplayConfig, KernelIdleTimer, }; virtual bool isSupported(OptionalFeature) const = 0; Loading Loading @@ -134,6 +135,7 @@ public: std::vector<uint32_t>* outLayerRequestMasks) = 0; virtual Error getDozeSupport(Display display, bool* outSupport) = 0; virtual Error hasDisplayIdleTimerCapability(Display display, bool* outSupport) = 0; virtual Error getHdrCapabilities(Display display, std::vector<Hdr>* outTypes, float* outMaxLuminance, float* outMaxAverageLuminance, float* outMinLuminance) = 0; Loading Loading @@ -274,6 +276,7 @@ public: Display display, std::optional<::aidl::android::hardware::graphics::common::DisplayDecorationSupport>* support) = 0; virtual Error setIdleTimerEnabled(Display displayId, std::chrono::milliseconds timeout) = 0; }; } // namespace Hwc2 Loading