diff --git a/server/src/main/java/com/genymobile/scrcpy/wrappers/WindowManager.java b/server/src/main/java/com/genymobile/scrcpy/wrappers/WindowManager.java
index 2fc7ee0233..e1a3340a7d 100644
--- a/server/src/main/java/com/genymobile/scrcpy/wrappers/WindowManager.java
+++ b/server/src/main/java/com/genymobile/scrcpy/wrappers/WindowManager.java
@@ -52,10 +52,17 @@ private Method getFreezeDisplayRotationMethod() throws NoSuchMethodException {
freezeDisplayRotationMethod = manager.getClass().getMethod("freezeRotation", int.class);
freezeDisplayRotationMethodVersion = 0;
} catch (NoSuchMethodException e) {
- // New method added by this commit:
- //
- freezeDisplayRotationMethod = manager.getClass().getMethod("freezeDisplayRotation", int.class, int.class);
- freezeDisplayRotationMethodVersion = 1;
+ try {
+ // New method added by this commit:
+ //
+ freezeDisplayRotationMethod = manager.getClass().getMethod("freezeDisplayRotation", int.class, int.class);
+ freezeDisplayRotationMethodVersion = 1;
+ } catch (NoSuchMethodException e1) {
+ // Android 15 preview and 14 QPR3 Beta added a String caller parameter for debugging:
+ //
+ freezeDisplayRotationMethod = manager.getClass().getMethod("freezeDisplayRotation", int.class, int.class, String.class);
+ freezeDisplayRotationMethodVersion = 2;
+ }
}
}
return freezeDisplayRotationMethod;
@@ -82,10 +89,17 @@ private Method getThawDisplayRotationMethod() throws NoSuchMethodException {
thawDisplayRotationMethod = manager.getClass().getMethod("thawRotation");
thawDisplayRotationMethodVersion = 0;
} catch (NoSuchMethodException e) {
- // New method added by this commit:
- //
- thawDisplayRotationMethod = manager.getClass().getMethod("thawDisplayRotation", int.class);
- thawDisplayRotationMethodVersion = 1;
+ try {
+ // New method added by this commit:
+ //
+ thawDisplayRotationMethod = manager.getClass().getMethod("thawDisplayRotation", int.class);
+ thawDisplayRotationMethodVersion = 1;
+ } catch (NoSuchMethodException e1) {
+ // Android 15 preview and 14 QPR3 Beta added a String caller parameter for debugging:
+ //
+ thawDisplayRotationMethod = manager.getClass().getMethod("thawDisplayRotation", int.class, String.class);
+ thawDisplayRotationMethodVersion = 2;
+ }
}
}
return thawDisplayRotationMethod;
@@ -112,9 +126,12 @@ public void freezeRotation(int displayId, int rotation) {
}
method.invoke(manager, rotation);
break;
- default:
+ case 1:
method.invoke(manager, displayId, rotation);
break;
+ default:
+ method.invoke(manager, displayId, rotation, "scrcpy#freezeRotation");
+ break;
}
} catch (ReflectiveOperationException e) {
Ln.e("Could not invoke method", e);
@@ -151,9 +168,12 @@ public void thawRotation(int displayId) {
}
method.invoke(manager);
break;
- default:
+ case 1:
method.invoke(manager, displayId);
break;
+ default:
+ method.invoke(manager, displayId, "scrcpy#thawRotation");
+ break;
}
} catch (ReflectiveOperationException e) {
Ln.e("Could not invoke method", e);