Loading services/surfaceflinger/SurfaceFlinger.cpp +17 −6 Original line number Diff line number Diff line Loading @@ -276,6 +276,7 @@ const String16 sHardwareTest("android.permission.HARDWARE_TEST"); const String16 sAccessSurfaceFlinger("android.permission.ACCESS_SURFACE_FLINGER"); const String16 sRotateSurfaceFlinger("android.permission.ROTATE_SURFACE_FLINGER"); const String16 sReadFramebuffer("android.permission.READ_FRAME_BUFFER"); const String16 sUseBackgroundBlur("android.permission.USE_BACKGROUND_BLUR"); const String16 sDump("android.permission.DUMP"); const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled"; Loading Loading @@ -333,6 +334,10 @@ bool callingThreadHasRotateSurfaceFlingerAccess() { PermissionCache::checkPermission(sRotateSurfaceFlinger, pid, uid); } bool originalCallerCanUseBlurs(int originPid, int originUid) { return PermissionCache::checkPermission(sUseBackgroundBlur, originPid, originUid); } SurfaceFlingerBE::SurfaceFlingerBE() : mHwcServiceName(getHwcServiceName()) {} SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) Loading Loading @@ -3438,9 +3443,10 @@ void SurfaceFlinger::applyTransactionState( std::unordered_set<ListenerCallbacks, ListenerCallbacksHash> listenerCallbacksWithSurfaces; uint32_t clientStateFlags = 0; for (const ComposerState& state : states) { clientStateFlags |= setClientStateLocked(frameTimelineVsyncId, state, desiredPresentTime, clientStateFlags |= setClientStateLocked(frameTimelineVsyncId, state, desiredPresentTime, isAutoTimestamp, postTime, privileged, listenerCallbacksWithSurfaces); listenerCallbacksWithSurfaces, originPid, originUid); if ((flags & eAnimation) && state.state.surface) { if (const auto layer = fromHandleLocked(state.state.surface).promote(); layer) { mScheduler->recordLayerHistory(layer.get(), Loading Loading @@ -3620,7 +3626,8 @@ bool SurfaceFlinger::callingThreadHasUnscopedSurfaceFlingerAccess(bool usePermis uint32_t SurfaceFlinger::setClientStateLocked( int64_t frameTimelineVsyncId, const ComposerState& composerState, int64_t desiredPresentTime, bool isAutoTimestamp, int64_t postTime, bool privileged, std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks) { std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks, int originPid, int originUid) { const layer_state_t& s = composerState.state; for (auto& listener : s.listeners) { Loading Loading @@ -3764,10 +3771,14 @@ uint32_t SurfaceFlinger::setClientStateLocked( if (layer->setCornerRadius(s.cornerRadius)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBackgroundBlurRadiusChanged && !mDisableBlurs && mSupportsBlur) { if (what & layer_state_t::eBackgroundBlurRadiusChanged && !mDisableBlurs && mSupportsBlur && originalCallerCanUseBlurs(originPid, originUid)) { if (layer->setBackgroundBlurRadius(s.backgroundBlurRadius)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBlurRegionsChanged) { if (what & layer_state_t::eBlurRegionsChanged && originalCallerCanUseBlurs(originPid, originUid)) { if (layer->setBlurRegions(s.blurRegions)) flags |= eTraversalNeeded; } if (what & layer_state_t::eLayerStackChanged) { Loading services/surfaceflinger/SurfaceFlinger.h +2 −2 Original line number Diff line number Diff line Loading @@ -344,8 +344,8 @@ protected: virtual uint32_t setClientStateLocked( int64_t frameTimelineVsyncId, const ComposerState& composerState, int64_t desiredPresentTime, bool isAutoTimestamp, int64_t postTime, bool privileged, std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks) REQUIRES(mStateLock); std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks, int originPid, int originUid) REQUIRES(mStateLock); virtual void commitTransactionLocked(); // Used internally by computeLayerBounds() to gets the clip rectangle to use for the Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +17 −6 Original line number Diff line number Diff line Loading @@ -276,6 +276,7 @@ const String16 sHardwareTest("android.permission.HARDWARE_TEST"); const String16 sAccessSurfaceFlinger("android.permission.ACCESS_SURFACE_FLINGER"); const String16 sRotateSurfaceFlinger("android.permission.ROTATE_SURFACE_FLINGER"); const String16 sReadFramebuffer("android.permission.READ_FRAME_BUFFER"); const String16 sUseBackgroundBlur("android.permission.USE_BACKGROUND_BLUR"); const String16 sDump("android.permission.DUMP"); const char* KERNEL_IDLE_TIMER_PROP = "graphics.display.kernel_idle_timer.enabled"; Loading Loading @@ -333,6 +334,10 @@ bool callingThreadHasRotateSurfaceFlingerAccess() { PermissionCache::checkPermission(sRotateSurfaceFlinger, pid, uid); } bool originalCallerCanUseBlurs(int originPid, int originUid) { return PermissionCache::checkPermission(sUseBackgroundBlur, originPid, originUid); } SurfaceFlingerBE::SurfaceFlingerBE() : mHwcServiceName(getHwcServiceName()) {} SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) Loading Loading @@ -3438,9 +3443,10 @@ void SurfaceFlinger::applyTransactionState( std::unordered_set<ListenerCallbacks, ListenerCallbacksHash> listenerCallbacksWithSurfaces; uint32_t clientStateFlags = 0; for (const ComposerState& state : states) { clientStateFlags |= setClientStateLocked(frameTimelineVsyncId, state, desiredPresentTime, clientStateFlags |= setClientStateLocked(frameTimelineVsyncId, state, desiredPresentTime, isAutoTimestamp, postTime, privileged, listenerCallbacksWithSurfaces); listenerCallbacksWithSurfaces, originPid, originUid); if ((flags & eAnimation) && state.state.surface) { if (const auto layer = fromHandleLocked(state.state.surface).promote(); layer) { mScheduler->recordLayerHistory(layer.get(), Loading Loading @@ -3620,7 +3626,8 @@ bool SurfaceFlinger::callingThreadHasUnscopedSurfaceFlingerAccess(bool usePermis uint32_t SurfaceFlinger::setClientStateLocked( int64_t frameTimelineVsyncId, const ComposerState& composerState, int64_t desiredPresentTime, bool isAutoTimestamp, int64_t postTime, bool privileged, std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks) { std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks, int originPid, int originUid) { const layer_state_t& s = composerState.state; for (auto& listener : s.listeners) { Loading Loading @@ -3764,10 +3771,14 @@ uint32_t SurfaceFlinger::setClientStateLocked( if (layer->setCornerRadius(s.cornerRadius)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBackgroundBlurRadiusChanged && !mDisableBlurs && mSupportsBlur) { if (what & layer_state_t::eBackgroundBlurRadiusChanged && !mDisableBlurs && mSupportsBlur && originalCallerCanUseBlurs(originPid, originUid)) { if (layer->setBackgroundBlurRadius(s.backgroundBlurRadius)) flags |= eTraversalNeeded; } if (what & layer_state_t::eBlurRegionsChanged) { if (what & layer_state_t::eBlurRegionsChanged && originalCallerCanUseBlurs(originPid, originUid)) { if (layer->setBlurRegions(s.blurRegions)) flags |= eTraversalNeeded; } if (what & layer_state_t::eLayerStackChanged) { Loading
services/surfaceflinger/SurfaceFlinger.h +2 −2 Original line number Diff line number Diff line Loading @@ -344,8 +344,8 @@ protected: virtual uint32_t setClientStateLocked( int64_t frameTimelineVsyncId, const ComposerState& composerState, int64_t desiredPresentTime, bool isAutoTimestamp, int64_t postTime, bool privileged, std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks) REQUIRES(mStateLock); std::unordered_set<ListenerCallbacks, ListenerCallbacksHash>& listenerCallbacks, int originPid, int originUid) REQUIRES(mStateLock); virtual void commitTransactionLocked(); // Used internally by computeLayerBounds() to gets the clip rectangle to use for the Loading