Loading services/surfaceflinger/BufferQueueLayer.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -441,7 +441,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { mQueueItemCondition.broadcast(); mQueueItemCondition.broadcast(); } } mFlinger->mInterceptor->saveBufferUpdate(this, item.mGraphicBuffer->getWidth(), mFlinger->mInterceptor->saveBufferUpdate(layerId, item.mGraphicBuffer->getWidth(), item.mGraphicBuffer->getHeight(), item.mFrameNumber); item.mGraphicBuffer->getHeight(), item.mFrameNumber); mFlinger->signalLayerUpdate(); mFlinger->signalLayerUpdate(); Loading services/surfaceflinger/SurfaceInterceptor.cpp +12 −5 Original line number Original line Diff line number Diff line Loading @@ -524,11 +524,11 @@ void SurfaceInterceptor::addSurfaceDeletionLocked(Increment* increment, deletion->set_id(getLayerId(layer)); deletion->set_id(getLayerId(layer)); } } void SurfaceInterceptor::addBufferUpdateLocked(Increment* increment, const sp<const Layer>& layer, void SurfaceInterceptor::addBufferUpdateLocked(Increment* increment, int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) uint32_t width, uint32_t height, uint64_t frameNumber) { { BufferUpdate* update(increment->mutable_buffer_update()); BufferUpdate* update(increment->mutable_buffer_update()); update->set_id(getLayerId(layer)); update->set_id(layerId); update->set_w(width); update->set_w(width); update->set_h(height); update->set_h(height); update->set_frame_number(frameNumber); update->set_frame_number(frameNumber); Loading Loading @@ -644,15 +644,22 @@ void SurfaceInterceptor::saveSurfaceDeletion(const sp<const Layer>& layer) { addSurfaceDeletionLocked(createTraceIncrementLocked(), layer); addSurfaceDeletionLocked(createTraceIncrementLocked(), layer); } } void SurfaceInterceptor::saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, /** * Here we pass the layer by ID instead of by sp<> since this is called without * holding the state-lock from a Binder thread. If we required the caller * to pass 'this' by sp<> the temporary sp<> constructed could end up * being the last reference and we might accidentally destroy the Layer * from this binder thread. */ void SurfaceInterceptor::saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) uint32_t height, uint64_t frameNumber) { { if (!mEnabled || layer == nullptr) { if (!mEnabled) { return; return; } } ATRACE_CALL(); ATRACE_CALL(); std::lock_guard<std::mutex> protoGuard(mTraceMutex); std::lock_guard<std::mutex> protoGuard(mTraceMutex); addBufferUpdateLocked(createTraceIncrementLocked(), layer, width, height, frameNumber); addBufferUpdateLocked(createTraceIncrementLocked(), layerId, width, height, frameNumber); } } void SurfaceInterceptor::saveVSyncEvent(nsecs_t timestamp) { void SurfaceInterceptor::saveVSyncEvent(nsecs_t timestamp) { Loading services/surfaceflinger/SurfaceInterceptor.h +3 −3 Original line number Original line Diff line number Diff line Loading @@ -67,7 +67,7 @@ public: // Intercept surface data // Intercept surface data virtual void saveSurfaceCreation(const sp<const Layer>& layer) = 0; virtual void saveSurfaceCreation(const sp<const Layer>& layer) = 0; virtual void saveSurfaceDeletion(const sp<const Layer>& layer) = 0; virtual void saveSurfaceDeletion(const sp<const Layer>& layer) = 0; virtual void saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, uint32_t height, virtual void saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) = 0; uint64_t frameNumber) = 0; // Intercept display data // Intercept display data Loading Loading @@ -102,7 +102,7 @@ public: // Intercept surface data // Intercept surface data void saveSurfaceCreation(const sp<const Layer>& layer) override; void saveSurfaceCreation(const sp<const Layer>& layer) override; void saveSurfaceDeletion(const sp<const Layer>& layer) override; void saveSurfaceDeletion(const sp<const Layer>& layer) override; void saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, uint32_t height, void saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) override; uint64_t frameNumber) override; // Intercept display data // Intercept display data Loading Loading @@ -130,7 +130,7 @@ private: Increment* createTraceIncrementLocked(); Increment* createTraceIncrementLocked(); void addSurfaceCreationLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceCreationLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceDeletionLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceDeletionLocked(Increment* increment, const sp<const Layer>& layer); void addBufferUpdateLocked(Increment* increment, const sp<const Layer>& layer, uint32_t width, void addBufferUpdateLocked(Increment* increment, int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber); uint32_t height, uint64_t frameNumber); void addVSyncUpdateLocked(Increment* increment, nsecs_t timestamp); void addVSyncUpdateLocked(Increment* increment, nsecs_t timestamp); void addDisplayCreationLocked(Increment* increment, const DisplayDeviceState& info); void addDisplayCreationLocked(Increment* increment, const DisplayDeviceState& info); Loading services/surfaceflinger/tests/unittests/mock/MockSurfaceInterceptor.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,7 @@ public: const Vector<DisplayState>&, uint32_t)); const Vector<DisplayState>&, uint32_t)); MOCK_METHOD1(saveSurfaceCreation, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceCreation, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceDeletion, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceDeletion, void(const sp<const Layer>&)); MOCK_METHOD4(saveBufferUpdate, void(const sp<const Layer>&, uint32_t, uint32_t, uint64_t)); MOCK_METHOD4(saveBufferUpdate, void(int32_t, uint32_t, uint32_t, uint64_t)); MOCK_METHOD1(saveDisplayCreation, void(const DisplayDeviceState&)); MOCK_METHOD1(saveDisplayCreation, void(const DisplayDeviceState&)); MOCK_METHOD1(saveDisplayDeletion, void(int32_t)); MOCK_METHOD1(saveDisplayDeletion, void(int32_t)); MOCK_METHOD2(savePowerModeUpdate, void(int32_t, int32_t)); MOCK_METHOD2(savePowerModeUpdate, void(int32_t, int32_t)); Loading Loading
services/surfaceflinger/BufferQueueLayer.cpp +1 −1 Original line number Original line Diff line number Diff line Loading @@ -441,7 +441,7 @@ void BufferQueueLayer::onFrameAvailable(const BufferItem& item) { mQueueItemCondition.broadcast(); mQueueItemCondition.broadcast(); } } mFlinger->mInterceptor->saveBufferUpdate(this, item.mGraphicBuffer->getWidth(), mFlinger->mInterceptor->saveBufferUpdate(layerId, item.mGraphicBuffer->getWidth(), item.mGraphicBuffer->getHeight(), item.mFrameNumber); item.mGraphicBuffer->getHeight(), item.mFrameNumber); mFlinger->signalLayerUpdate(); mFlinger->signalLayerUpdate(); Loading
services/surfaceflinger/SurfaceInterceptor.cpp +12 −5 Original line number Original line Diff line number Diff line Loading @@ -524,11 +524,11 @@ void SurfaceInterceptor::addSurfaceDeletionLocked(Increment* increment, deletion->set_id(getLayerId(layer)); deletion->set_id(getLayerId(layer)); } } void SurfaceInterceptor::addBufferUpdateLocked(Increment* increment, const sp<const Layer>& layer, void SurfaceInterceptor::addBufferUpdateLocked(Increment* increment, int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) uint32_t width, uint32_t height, uint64_t frameNumber) { { BufferUpdate* update(increment->mutable_buffer_update()); BufferUpdate* update(increment->mutable_buffer_update()); update->set_id(getLayerId(layer)); update->set_id(layerId); update->set_w(width); update->set_w(width); update->set_h(height); update->set_h(height); update->set_frame_number(frameNumber); update->set_frame_number(frameNumber); Loading Loading @@ -644,15 +644,22 @@ void SurfaceInterceptor::saveSurfaceDeletion(const sp<const Layer>& layer) { addSurfaceDeletionLocked(createTraceIncrementLocked(), layer); addSurfaceDeletionLocked(createTraceIncrementLocked(), layer); } } void SurfaceInterceptor::saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, /** * Here we pass the layer by ID instead of by sp<> since this is called without * holding the state-lock from a Binder thread. If we required the caller * to pass 'this' by sp<> the temporary sp<> constructed could end up * being the last reference and we might accidentally destroy the Layer * from this binder thread. */ void SurfaceInterceptor::saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) uint32_t height, uint64_t frameNumber) { { if (!mEnabled || layer == nullptr) { if (!mEnabled) { return; return; } } ATRACE_CALL(); ATRACE_CALL(); std::lock_guard<std::mutex> protoGuard(mTraceMutex); std::lock_guard<std::mutex> protoGuard(mTraceMutex); addBufferUpdateLocked(createTraceIncrementLocked(), layer, width, height, frameNumber); addBufferUpdateLocked(createTraceIncrementLocked(), layerId, width, height, frameNumber); } } void SurfaceInterceptor::saveVSyncEvent(nsecs_t timestamp) { void SurfaceInterceptor::saveVSyncEvent(nsecs_t timestamp) { Loading
services/surfaceflinger/SurfaceInterceptor.h +3 −3 Original line number Original line Diff line number Diff line Loading @@ -67,7 +67,7 @@ public: // Intercept surface data // Intercept surface data virtual void saveSurfaceCreation(const sp<const Layer>& layer) = 0; virtual void saveSurfaceCreation(const sp<const Layer>& layer) = 0; virtual void saveSurfaceDeletion(const sp<const Layer>& layer) = 0; virtual void saveSurfaceDeletion(const sp<const Layer>& layer) = 0; virtual void saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, uint32_t height, virtual void saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) = 0; uint64_t frameNumber) = 0; // Intercept display data // Intercept display data Loading Loading @@ -102,7 +102,7 @@ public: // Intercept surface data // Intercept surface data void saveSurfaceCreation(const sp<const Layer>& layer) override; void saveSurfaceCreation(const sp<const Layer>& layer) override; void saveSurfaceDeletion(const sp<const Layer>& layer) override; void saveSurfaceDeletion(const sp<const Layer>& layer) override; void saveBufferUpdate(const sp<const Layer>& layer, uint32_t width, uint32_t height, void saveBufferUpdate(int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber) override; uint64_t frameNumber) override; // Intercept display data // Intercept display data Loading Loading @@ -130,7 +130,7 @@ private: Increment* createTraceIncrementLocked(); Increment* createTraceIncrementLocked(); void addSurfaceCreationLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceCreationLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceDeletionLocked(Increment* increment, const sp<const Layer>& layer); void addSurfaceDeletionLocked(Increment* increment, const sp<const Layer>& layer); void addBufferUpdateLocked(Increment* increment, const sp<const Layer>& layer, uint32_t width, void addBufferUpdateLocked(Increment* increment, int32_t layerId, uint32_t width, uint32_t height, uint64_t frameNumber); uint32_t height, uint64_t frameNumber); void addVSyncUpdateLocked(Increment* increment, nsecs_t timestamp); void addVSyncUpdateLocked(Increment* increment, nsecs_t timestamp); void addDisplayCreationLocked(Increment* increment, const DisplayDeviceState& info); void addDisplayCreationLocked(Increment* increment, const DisplayDeviceState& info); Loading
services/surfaceflinger/tests/unittests/mock/MockSurfaceInterceptor.h +1 −1 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,7 @@ public: const Vector<DisplayState>&, uint32_t)); const Vector<DisplayState>&, uint32_t)); MOCK_METHOD1(saveSurfaceCreation, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceCreation, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceDeletion, void(const sp<const Layer>&)); MOCK_METHOD1(saveSurfaceDeletion, void(const sp<const Layer>&)); MOCK_METHOD4(saveBufferUpdate, void(const sp<const Layer>&, uint32_t, uint32_t, uint64_t)); MOCK_METHOD4(saveBufferUpdate, void(int32_t, uint32_t, uint32_t, uint64_t)); MOCK_METHOD1(saveDisplayCreation, void(const DisplayDeviceState&)); MOCK_METHOD1(saveDisplayCreation, void(const DisplayDeviceState&)); MOCK_METHOD1(saveDisplayDeletion, void(int32_t)); MOCK_METHOD1(saveDisplayDeletion, void(int32_t)); MOCK_METHOD2(savePowerModeUpdate, void(int32_t, int32_t)); MOCK_METHOD2(savePowerModeUpdate, void(int32_t, int32_t)); Loading