screencap not working on waydroid
Hi,
when using waydroid with hardware acceleration screencap doesn't create readable files anymore.
The issue with waydroid and hardware acceleration is that, the native screencap in adb shell is writing out an error /vendor/etc/hwdata/amdgpu.ids: No such file or directory but still creates a valid image file. If called via ppadb there is no error thrown, just the file that has been written is not a valid image anymore. The error message is written at the start of the file instead.
I slightly adapted the example code to test this:
client = AdbClient(host='127.0.0.1', port=5037)
devices = client.devices()
device = devices[0]
response = device.shell('wm size')
print(response)
result = device.screencap()
with open("screen.png", "wb") as fp:
fp.write(result)
As a workaround changing the cmd in the screencap method of command/transport/init.py from
cmd = "shell:/system/bin/screencap -p" to cmd = "shell:/system/bin/screencap 2>/dev/null -p"
works for me
Do you feel this will be all devices, or just waydroid? May be best to fix with a feature toggle?
2>/dev/null
Did you want to trial https://github.com/spm5065/pure-python-adb/pull/4 and see if passing the extra arguments works, with BC breaks?