Loading services/surfaceflinger/BufferStateLayer.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -540,10 +540,16 @@ bool BufferStateLayer::setApi(int32_t api) { bool BufferStateLayer::setSidebandStream(const sp<NativeHandle>& sidebandStream) { if (mDrawingState.sidebandStream == sidebandStream) return false; if (mDrawingState.sidebandStream != nullptr && sidebandStream == nullptr) { mFlinger->mTunnelModeEnabledReporter->decrementTunnelModeCount(); } else if (sidebandStream != nullptr) { mFlinger->mTunnelModeEnabledReporter->incrementTunnelModeCount(); } mDrawingState.sidebandStream = sidebandStream; mDrawingState.modified = true; setTransactionFlags(eTransactionNeeded); if (!mSidebandStreamChanged.exchange(true)) { // mSidebandStreamChanged was false mFlinger->signalLayerUpdate(); Loading services/surfaceflinger/Layer.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ #include "MonitoredProducer.h" #include "SurfaceFlinger.h" #include "TimeStats/TimeStats.h" #include "TunnelModeEnabledReporter.h" #include "input/InputWindow.h" #define DEBUG_RESIZE 0 Loading Loading @@ -172,6 +173,10 @@ Layer::~Layer() { mFrameTracker.logAndResetStats(mName); mFlinger->onLayerDestroyed(this); if (mDrawingState.sidebandStream != nullptr) { mFlinger->mTunnelModeEnabledReporter->decrementTunnelModeCount(); } } LayerCreationArgs::LayerCreationArgs(SurfaceFlinger* flinger, sp<Client> client, std::string name, Loading services/surfaceflinger/SurfaceFlinger.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -342,6 +342,7 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) mEventQueue(mFactory.createMessageQueue()), mCompositionEngine(mFactory.createCompositionEngine()), mHwcServiceName(base::GetProperty("debug.sf.hwc_service_name"s, "default"s)), mTunnelModeEnabledReporter(new TunnelModeEnabledReporter()), mInternalDisplayDensity(getDensityFromProperty("ro.sf.lcd_density", true)), mEmulatedDisplayDensity(getDensityFromProperty("qemu.sf.lcd_density", false)) { ALOGI("Using HWComposer service: %s", mHwcServiceName.c_str()); Loading Loading @@ -3153,7 +3154,6 @@ void SurfaceFlinger::initScheduler(const DisplayDeviceState& displayState) { mRegionSamplingThread = new RegionSamplingThread(*this, RegionSamplingThread::EnvironmentTimingTunables()); mFpsReporter = new FpsReporter(*mFrameTimeline, *this); mTunnelModeEnabledReporter = new TunnelModeEnabledReporter(*this); // Dispatch a mode change request for the primary display on scheduler // initialization, so that the EventThreads always contain a reference to a // prior configuration. Loading services/surfaceflinger/SurfaceFlinger.h +1 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,7 @@ private: // For unit tests friend class TestableSurfaceFlinger; friend class TransactionApplicationTest; friend class TunnelModeEnabledReporterTest; using RefreshRate = scheduler::RefreshRateConfigs::RefreshRate; using VsyncModulator = scheduler::VsyncModulator; Loading services/surfaceflinger/TunnelModeEnabledReporter.cpp +2 −9 Original line number Diff line number Diff line Loading @@ -26,17 +26,10 @@ namespace android { TunnelModeEnabledReporter::TunnelModeEnabledReporter(SurfaceFlinger& flinger) : mFlinger(flinger) {} TunnelModeEnabledReporter::TunnelModeEnabledReporter() {} void TunnelModeEnabledReporter::updateTunnelModeStatus() { bool tunnelModeEnabled = false; mFlinger.mCurrentState.traverse([&](Layer* layer) { auto& state = layer->getDrawingState(); if (state.sidebandStream != nullptr) { tunnelModeEnabled = true; return; } }); bool tunnelModeEnabled = mTunnelModeCount > 0; dispatchTunnelModeEnabled(tunnelModeEnabled); } Loading Loading
services/surfaceflinger/BufferStateLayer.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -540,10 +540,16 @@ bool BufferStateLayer::setApi(int32_t api) { bool BufferStateLayer::setSidebandStream(const sp<NativeHandle>& sidebandStream) { if (mDrawingState.sidebandStream == sidebandStream) return false; if (mDrawingState.sidebandStream != nullptr && sidebandStream == nullptr) { mFlinger->mTunnelModeEnabledReporter->decrementTunnelModeCount(); } else if (sidebandStream != nullptr) { mFlinger->mTunnelModeEnabledReporter->incrementTunnelModeCount(); } mDrawingState.sidebandStream = sidebandStream; mDrawingState.modified = true; setTransactionFlags(eTransactionNeeded); if (!mSidebandStreamChanged.exchange(true)) { // mSidebandStreamChanged was false mFlinger->signalLayerUpdate(); Loading
services/surfaceflinger/Layer.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ #include "MonitoredProducer.h" #include "SurfaceFlinger.h" #include "TimeStats/TimeStats.h" #include "TunnelModeEnabledReporter.h" #include "input/InputWindow.h" #define DEBUG_RESIZE 0 Loading Loading @@ -172,6 +173,10 @@ Layer::~Layer() { mFrameTracker.logAndResetStats(mName); mFlinger->onLayerDestroyed(this); if (mDrawingState.sidebandStream != nullptr) { mFlinger->mTunnelModeEnabledReporter->decrementTunnelModeCount(); } } LayerCreationArgs::LayerCreationArgs(SurfaceFlinger* flinger, sp<Client> client, std::string name, Loading
services/surfaceflinger/SurfaceFlinger.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -342,6 +342,7 @@ SurfaceFlinger::SurfaceFlinger(Factory& factory, SkipInitializationTag) mEventQueue(mFactory.createMessageQueue()), mCompositionEngine(mFactory.createCompositionEngine()), mHwcServiceName(base::GetProperty("debug.sf.hwc_service_name"s, "default"s)), mTunnelModeEnabledReporter(new TunnelModeEnabledReporter()), mInternalDisplayDensity(getDensityFromProperty("ro.sf.lcd_density", true)), mEmulatedDisplayDensity(getDensityFromProperty("qemu.sf.lcd_density", false)) { ALOGI("Using HWComposer service: %s", mHwcServiceName.c_str()); Loading Loading @@ -3153,7 +3154,6 @@ void SurfaceFlinger::initScheduler(const DisplayDeviceState& displayState) { mRegionSamplingThread = new RegionSamplingThread(*this, RegionSamplingThread::EnvironmentTimingTunables()); mFpsReporter = new FpsReporter(*mFrameTimeline, *this); mTunnelModeEnabledReporter = new TunnelModeEnabledReporter(*this); // Dispatch a mode change request for the primary display on scheduler // initialization, so that the EventThreads always contain a reference to a // prior configuration. Loading
services/surfaceflinger/SurfaceFlinger.h +1 −0 Original line number Diff line number Diff line Loading @@ -364,6 +364,7 @@ private: // For unit tests friend class TestableSurfaceFlinger; friend class TransactionApplicationTest; friend class TunnelModeEnabledReporterTest; using RefreshRate = scheduler::RefreshRateConfigs::RefreshRate; using VsyncModulator = scheduler::VsyncModulator; Loading
services/surfaceflinger/TunnelModeEnabledReporter.cpp +2 −9 Original line number Diff line number Diff line Loading @@ -26,17 +26,10 @@ namespace android { TunnelModeEnabledReporter::TunnelModeEnabledReporter(SurfaceFlinger& flinger) : mFlinger(flinger) {} TunnelModeEnabledReporter::TunnelModeEnabledReporter() {} void TunnelModeEnabledReporter::updateTunnelModeStatus() { bool tunnelModeEnabled = false; mFlinger.mCurrentState.traverse([&](Layer* layer) { auto& state = layer->getDrawingState(); if (state.sidebandStream != nullptr) { tunnelModeEnabled = true; return; } }); bool tunnelModeEnabled = mTunnelModeCount > 0; dispatchTunnelModeEnabled(tunnelModeEnabled); } Loading