From afaca80b375a2fbdb966c15f52645abb578071f4 Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Fri, 5 Sep 2025 18:41:49 +0200 Subject: [PATCH] Fix virtual display after Android 16 upgrade Several methods have been added upstream to IDisplayWindowListener.aidl, causing an AbstractMethodError when they are called on the listener instance implemented by scrcpy. Fixes #6234 Fixes #6331 --- .../aidl/android/view/IDisplayWindowListener.aidl | 8 ++++++++ .../scrcpy/wrappers/DisplayWindowListener.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/server/src/main/aidl/android/view/IDisplayWindowListener.aidl b/server/src/main/aidl/android/view/IDisplayWindowListener.aidl index 2b331175..3e664e81 100644 --- a/server/src/main/aidl/android/view/IDisplayWindowListener.aidl +++ b/server/src/main/aidl/android/view/IDisplayWindowListener.aidl @@ -63,4 +63,12 @@ oneway interface IDisplayWindowListener { * Called when the keep clear ares on a display have changed. */ void onKeepClearAreasChanged(int displayId, in List restricted, in List unrestricted); + + /** + * Called when the eligibility of the desktop mode for a display have changed. + */ + void onDesktopModeEligibleChanged(int displayId); + + void onDisplayAddSystemDecorations(int displayId); + void onDisplayRemoveSystemDecorations(int displayId); } diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/DisplayWindowListener.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/DisplayWindowListener.java index f2ecb158..b8b00e44 100644 --- a/server/src/main/java/com/genymobile/scrcpy/wrappers/DisplayWindowListener.java +++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/DisplayWindowListener.java @@ -36,4 +36,19 @@ public class DisplayWindowListener extends IDisplayWindowListener.Stub { public void onKeepClearAreasChanged(int displayId, List restricted, List unrestricted) { // empty default implementation } + + @Override + public void onDesktopModeEligibleChanged(int displayId) { + // empty default implementation + } + + @Override + public void onDisplayAddSystemDecorations(int displayId) { + // empty default implementation + } + + @Override + public void onDisplayRemoveSystemDecorations(int displayId) { + // empty default implementation + } }