Merge "Add vsync id and timestamp to WindowInfosListener" into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-05 16:19:42 +00:00
committed by Android (Google) Code Review
4 changed files with 11 additions and 10 deletions

View File

@@ -21,6 +21,7 @@
#include <android_runtime/Log.h> #include <android_runtime/Log.h>
#include <gui/DisplayInfo.h> #include <gui/DisplayInfo.h>
#include <gui/SurfaceComposerClient.h> #include <gui/SurfaceComposerClient.h>
#include <gui/WindowInfosUpdate.h>
#include <nativehelper/JNIHelp.h> #include <nativehelper/JNIHelp.h>
#include <nativehelper/ScopedLocalFrame.h> #include <nativehelper/ScopedLocalFrame.h>
#include <utils/Log.h> #include <utils/Log.h>
@@ -91,8 +92,7 @@ struct WindowInfosListener : public gui::WindowInfosListener {
WindowInfosListener(JNIEnv* env, jobject listener) WindowInfosListener(JNIEnv* env, jobject listener)
: mListener(env->NewWeakGlobalRef(listener)) {} : mListener(env->NewWeakGlobalRef(listener)) {}
void onWindowInfosChanged(const std::vector<WindowInfo>& windowInfos, void onWindowInfosChanged(const gui::WindowInfosUpdate& update) override {
const std::vector<DisplayInfo>& displayInfos) override {
JNIEnv* env = AndroidRuntime::getJNIEnv(); JNIEnv* env = AndroidRuntime::getJNIEnv();
LOG_ALWAYS_FATAL_IF(env == nullptr, "Unable to retrieve JNIEnv in onWindowInfoChanged."); LOG_ALWAYS_FATAL_IF(env == nullptr, "Unable to retrieve JNIEnv in onWindowInfoChanged.");
@@ -103,8 +103,10 @@ struct WindowInfosListener : public gui::WindowInfosListener {
return; return;
} }
ScopedLocalRef<jobjectArray> jWindowHandlesArray(env, fromWindowInfos(env, windowInfos)); ScopedLocalRef<jobjectArray> jWindowHandlesArray(env,
ScopedLocalRef<jobjectArray> jDisplayInfoArray(env, fromDisplayInfos(env, displayInfos)); fromWindowInfos(env, update.windowInfos));
ScopedLocalRef<jobjectArray> jDisplayInfoArray(env,
fromDisplayInfos(env, update.displayInfos));
env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged, env->CallVoidMethod(listener, gListenerClassInfo.onWindowInfosChanged,
jWindowHandlesArray.get(), jDisplayInfoArray.get()); jWindowHandlesArray.get(), jDisplayInfoArray.get());

View File

@@ -45,14 +45,13 @@ const ui::Transform kIdentityTransform;
// --- PointerController::DisplayInfoListener --- // --- PointerController::DisplayInfoListener ---
void PointerController::DisplayInfoListener::onWindowInfosChanged( void PointerController::DisplayInfoListener::onWindowInfosChanged(
const std::vector<android::gui::WindowInfo>&, const gui::WindowInfosUpdate& update) {
const std::vector<android::gui::DisplayInfo>& displayInfos) {
std::scoped_lock lock(mLock); std::scoped_lock lock(mLock);
if (mPointerController == nullptr) return; if (mPointerController == nullptr) return;
// PointerController uses DisplayInfoListener's lock. // PointerController uses DisplayInfoListener's lock.
base::ScopedLockAssertion assumeLocked(mPointerController->getLock()); base::ScopedLockAssertion assumeLocked(mPointerController->getLock());
mPointerController->onDisplayInfosChangedLocked(displayInfos); mPointerController->onDisplayInfosChangedLocked(update.displayInfos);
} }
void PointerController::DisplayInfoListener::onPointerControllerDestroyed() { void PointerController::DisplayInfoListener::onPointerControllerDestroyed() {

View File

@@ -19,6 +19,7 @@
#include <PointerControllerInterface.h> #include <PointerControllerInterface.h>
#include <gui/DisplayEventReceiver.h> #include <gui/DisplayEventReceiver.h>
#include <gui/WindowInfosUpdate.h>
#include <input/DisplayViewport.h> #include <input/DisplayViewport.h>
#include <input/Input.h> #include <input/Input.h>
#include <utils/BitSet.h> #include <utils/BitSet.h>
@@ -114,8 +115,7 @@ private:
class DisplayInfoListener : public gui::WindowInfosListener { class DisplayInfoListener : public gui::WindowInfosListener {
public: public:
explicit DisplayInfoListener(PointerController* pc) : mPointerController(pc){}; explicit DisplayInfoListener(PointerController* pc) : mPointerController(pc){};
void onWindowInfosChanged(const std::vector<android::gui::WindowInfo>&, void onWindowInfosChanged(const gui::WindowInfosUpdate&) override;
const std::vector<android::gui::DisplayInfo>&) override;
void onPointerControllerDestroyed(); void onPointerControllerDestroyed();
// This lock is also used by PointerController. See PointerController::getLock(). // This lock is also used by PointerController. See PointerController::getLock().

View File

@@ -343,7 +343,7 @@ TEST_F(PointerControllerWindowInfoListenerTest,
localListenerCopy = registeredListener; localListenerCopy = registeredListener;
} }
EXPECT_EQ(nullptr, registeredListener) << "WindowInfosListener was not unregistered"; EXPECT_EQ(nullptr, registeredListener) << "WindowInfosListener was not unregistered";
localListenerCopy->onWindowInfosChanged({}, {}); localListenerCopy->onWindowInfosChanged({{}, {}, 0, 0});
} }
} // namespace android } // namespace android