Loading libs/gui/Android.bp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,7 @@ filegroup { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", Loading @@ -90,6 +91,7 @@ cc_library_static { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", Loading Loading @@ -136,6 +138,7 @@ aidl_library { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", Loading libs/gui/WindowInfosListenerReporter.cpp +12 −8 Original line number Original line Diff line number Diff line Loading @@ -22,7 +22,6 @@ namespace android { namespace android { using gui::DisplayInfo; using gui::DisplayInfo; using gui::IWindowInfosReportedListener; using gui::WindowInfo; using gui::WindowInfo; using gui::WindowInfosListener; using gui::WindowInfosListener; using gui::aidl_utils::statusTFromBinderStatus; using gui::aidl_utils::statusTFromBinderStatus; Loading @@ -40,8 +39,13 @@ status_t WindowInfosListenerReporter::addWindowInfosListener( { { std::scoped_lock lock(mListenersMutex); std::scoped_lock lock(mListenersMutex); if (mWindowInfosListeners.empty()) { if (mWindowInfosListeners.empty()) { binder::Status s = surfaceComposer->addWindowInfosListener(this); gui::WindowInfosListenerInfo listenerInfo; binder::Status s = surfaceComposer->addWindowInfosListener(this, &listenerInfo); status = statusTFromBinderStatus(s); status = statusTFromBinderStatus(s); if (status == OK) { mWindowInfosPublisher = std::move(listenerInfo.windowInfosPublisher); mListenerId = listenerInfo.listenerId; } } } if (status == OK) { if (status == OK) { Loading Loading @@ -85,8 +89,7 @@ status_t WindowInfosListenerReporter::removeWindowInfosListener( } } binder::Status WindowInfosListenerReporter::onWindowInfosChanged( binder::Status WindowInfosListenerReporter::onWindowInfosChanged( const gui::WindowInfosUpdate& update, const gui::WindowInfosUpdate& update) { const sp<IWindowInfosReportedListener>& windowInfosReportedListener) { std::unordered_set<sp<WindowInfosListener>, gui::SpHash<WindowInfosListener>> std::unordered_set<sp<WindowInfosListener>, gui::SpHash<WindowInfosListener>> windowInfosListeners; windowInfosListeners; Loading @@ -104,9 +107,7 @@ binder::Status WindowInfosListenerReporter::onWindowInfosChanged( listener->onWindowInfosChanged(update); listener->onWindowInfosChanged(update); } } if (windowInfosReportedListener) { mWindowInfosPublisher->ackWindowInfosReceived(update.vsyncId, mListenerId); windowInfosReportedListener->onWindowInfosReported(); } return binder::Status::ok(); return binder::Status::ok(); } } Loading @@ -114,7 +115,10 @@ binder::Status WindowInfosListenerReporter::onWindowInfosChanged( void WindowInfosListenerReporter::reconnect(const sp<gui::ISurfaceComposer>& composerService) { void WindowInfosListenerReporter::reconnect(const sp<gui::ISurfaceComposer>& composerService) { std::scoped_lock lock(mListenersMutex); std::scoped_lock lock(mListenersMutex); if (!mWindowInfosListeners.empty()) { if (!mWindowInfosListeners.empty()) { composerService->addWindowInfosListener(this); gui::WindowInfosListenerInfo listenerInfo; composerService->addWindowInfosListener(this, &listenerInfo); mWindowInfosPublisher = std::move(listenerInfo.windowInfosPublisher); mListenerId = listenerInfo.listenerId; } } } } Loading libs/gui/aidl/android/gui/ISurfaceComposer.aidl +3 −1 Original line number Original line Diff line number Diff line Loading @@ -40,12 +40,14 @@ import android.gui.IScreenCaptureListener; import android.gui.ISurfaceComposerClient; import android.gui.ISurfaceComposerClient; import android.gui.ITunnelModeEnabledListener; import android.gui.ITunnelModeEnabledListener; import android.gui.IWindowInfosListener; import android.gui.IWindowInfosListener; import android.gui.IWindowInfosPublisher; import android.gui.LayerCaptureArgs; import android.gui.LayerCaptureArgs; import android.gui.LayerDebugInfo; import android.gui.LayerDebugInfo; import android.gui.OverlayProperties; import android.gui.OverlayProperties; import android.gui.PullAtomData; import android.gui.PullAtomData; import android.gui.ARect; import android.gui.ARect; import android.gui.StaticDisplayInfo; import android.gui.StaticDisplayInfo; import android.gui.WindowInfosListenerInfo; /** @hide */ /** @hide */ interface ISurfaceComposer { interface ISurfaceComposer { Loading Loading @@ -500,7 +502,7 @@ interface ISurfaceComposer { */ */ int getMaxAcquiredBufferCount(); int getMaxAcquiredBufferCount(); void addWindowInfosListener(IWindowInfosListener windowInfosListener); WindowInfosListenerInfo addWindowInfosListener(IWindowInfosListener windowInfosListener); void removeWindowInfosListener(IWindowInfosListener windowInfosListener); void removeWindowInfosListener(IWindowInfosListener windowInfosListener); Loading libs/gui/aidl/android/gui/WindowInfosListenerInfo.aidl 0 → 100644 +25 −0 Original line number Original line Diff line number Diff line /** * Copyright (c) 2023, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.gui; import android.gui.IWindowInfosPublisher; /** @hide */ parcelable WindowInfosListenerInfo { long listenerId; IWindowInfosPublisher windowInfosPublisher; } No newline at end of file libs/gui/android/gui/IWindowInfosListener.aidl +1 −3 Original line number Original line Diff line number Diff line Loading @@ -16,11 +16,9 @@ package android.gui; package android.gui; import android.gui.IWindowInfosReportedListener; import android.gui.WindowInfosUpdate; import android.gui.WindowInfosUpdate; /** @hide */ /** @hide */ oneway interface IWindowInfosListener { oneway interface IWindowInfosListener { void onWindowInfosChanged( void onWindowInfosChanged(in WindowInfosUpdate update); in WindowInfosUpdate update, in @nullable IWindowInfosReportedListener windowInfosReportedListener); } } Loading
libs/gui/Android.bp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -73,6 +73,7 @@ filegroup { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", Loading @@ -90,6 +91,7 @@ cc_library_static { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", Loading Loading @@ -136,6 +138,7 @@ aidl_library { "android/gui/FocusRequest.aidl", "android/gui/FocusRequest.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/InputApplicationInfo.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosListener.aidl", "android/gui/IWindowInfosPublisher.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/IWindowInfosReportedListener.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfo.aidl", "android/gui/WindowInfosUpdate.aidl", "android/gui/WindowInfosUpdate.aidl", Loading
libs/gui/WindowInfosListenerReporter.cpp +12 −8 Original line number Original line Diff line number Diff line Loading @@ -22,7 +22,6 @@ namespace android { namespace android { using gui::DisplayInfo; using gui::DisplayInfo; using gui::IWindowInfosReportedListener; using gui::WindowInfo; using gui::WindowInfo; using gui::WindowInfosListener; using gui::WindowInfosListener; using gui::aidl_utils::statusTFromBinderStatus; using gui::aidl_utils::statusTFromBinderStatus; Loading @@ -40,8 +39,13 @@ status_t WindowInfosListenerReporter::addWindowInfosListener( { { std::scoped_lock lock(mListenersMutex); std::scoped_lock lock(mListenersMutex); if (mWindowInfosListeners.empty()) { if (mWindowInfosListeners.empty()) { binder::Status s = surfaceComposer->addWindowInfosListener(this); gui::WindowInfosListenerInfo listenerInfo; binder::Status s = surfaceComposer->addWindowInfosListener(this, &listenerInfo); status = statusTFromBinderStatus(s); status = statusTFromBinderStatus(s); if (status == OK) { mWindowInfosPublisher = std::move(listenerInfo.windowInfosPublisher); mListenerId = listenerInfo.listenerId; } } } if (status == OK) { if (status == OK) { Loading Loading @@ -85,8 +89,7 @@ status_t WindowInfosListenerReporter::removeWindowInfosListener( } } binder::Status WindowInfosListenerReporter::onWindowInfosChanged( binder::Status WindowInfosListenerReporter::onWindowInfosChanged( const gui::WindowInfosUpdate& update, const gui::WindowInfosUpdate& update) { const sp<IWindowInfosReportedListener>& windowInfosReportedListener) { std::unordered_set<sp<WindowInfosListener>, gui::SpHash<WindowInfosListener>> std::unordered_set<sp<WindowInfosListener>, gui::SpHash<WindowInfosListener>> windowInfosListeners; windowInfosListeners; Loading @@ -104,9 +107,7 @@ binder::Status WindowInfosListenerReporter::onWindowInfosChanged( listener->onWindowInfosChanged(update); listener->onWindowInfosChanged(update); } } if (windowInfosReportedListener) { mWindowInfosPublisher->ackWindowInfosReceived(update.vsyncId, mListenerId); windowInfosReportedListener->onWindowInfosReported(); } return binder::Status::ok(); return binder::Status::ok(); } } Loading @@ -114,7 +115,10 @@ binder::Status WindowInfosListenerReporter::onWindowInfosChanged( void WindowInfosListenerReporter::reconnect(const sp<gui::ISurfaceComposer>& composerService) { void WindowInfosListenerReporter::reconnect(const sp<gui::ISurfaceComposer>& composerService) { std::scoped_lock lock(mListenersMutex); std::scoped_lock lock(mListenersMutex); if (!mWindowInfosListeners.empty()) { if (!mWindowInfosListeners.empty()) { composerService->addWindowInfosListener(this); gui::WindowInfosListenerInfo listenerInfo; composerService->addWindowInfosListener(this, &listenerInfo); mWindowInfosPublisher = std::move(listenerInfo.windowInfosPublisher); mListenerId = listenerInfo.listenerId; } } } } Loading
libs/gui/aidl/android/gui/ISurfaceComposer.aidl +3 −1 Original line number Original line Diff line number Diff line Loading @@ -40,12 +40,14 @@ import android.gui.IScreenCaptureListener; import android.gui.ISurfaceComposerClient; import android.gui.ISurfaceComposerClient; import android.gui.ITunnelModeEnabledListener; import android.gui.ITunnelModeEnabledListener; import android.gui.IWindowInfosListener; import android.gui.IWindowInfosListener; import android.gui.IWindowInfosPublisher; import android.gui.LayerCaptureArgs; import android.gui.LayerCaptureArgs; import android.gui.LayerDebugInfo; import android.gui.LayerDebugInfo; import android.gui.OverlayProperties; import android.gui.OverlayProperties; import android.gui.PullAtomData; import android.gui.PullAtomData; import android.gui.ARect; import android.gui.ARect; import android.gui.StaticDisplayInfo; import android.gui.StaticDisplayInfo; import android.gui.WindowInfosListenerInfo; /** @hide */ /** @hide */ interface ISurfaceComposer { interface ISurfaceComposer { Loading Loading @@ -500,7 +502,7 @@ interface ISurfaceComposer { */ */ int getMaxAcquiredBufferCount(); int getMaxAcquiredBufferCount(); void addWindowInfosListener(IWindowInfosListener windowInfosListener); WindowInfosListenerInfo addWindowInfosListener(IWindowInfosListener windowInfosListener); void removeWindowInfosListener(IWindowInfosListener windowInfosListener); void removeWindowInfosListener(IWindowInfosListener windowInfosListener); Loading
libs/gui/aidl/android/gui/WindowInfosListenerInfo.aidl 0 → 100644 +25 −0 Original line number Original line Diff line number Diff line /** * Copyright (c) 2023, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.gui; import android.gui.IWindowInfosPublisher; /** @hide */ parcelable WindowInfosListenerInfo { long listenerId; IWindowInfosPublisher windowInfosPublisher; } No newline at end of file
libs/gui/android/gui/IWindowInfosListener.aidl +1 −3 Original line number Original line Diff line number Diff line Loading @@ -16,11 +16,9 @@ package android.gui; package android.gui; import android.gui.IWindowInfosReportedListener; import android.gui.WindowInfosUpdate; import android.gui.WindowInfosUpdate; /** @hide */ /** @hide */ oneway interface IWindowInfosListener { oneway interface IWindowInfosListener { void onWindowInfosChanged( void onWindowInfosChanged(in WindowInfosUpdate update); in WindowInfosUpdate update, in @nullable IWindowInfosReportedListener windowInfosReportedListener); } }