Skip to content

modetest: allocate and commit atomic request around set_property()

Fixes #65 (closed)

Currently the atomic request is only assigned after set_property() is called, leaving dev.req in its uninitialized state causing drmModeAtomicAddProperty() to return an error code, which is printed as "Success" because errno is not set by libdrm (but it would have been when non-atomic drmModeObjectSetProperty() called an IOCTL immediately):

sony-akatsuki-row ~ $ modetest -M msm -a -w 81:ACTIVE:0
failed to set CRTC 81 property ACTIVE to 0: Success

Solve this by assigning a new atomic request object before calling set_property(), when there are properties to set. Likewise, commit these properties after set_property() so that it is applied if no other operation (setting modes or planes) is specified.

Furthermore drmModeObjectSetProperty() is implemented in terms of DRM_IOCTL() which already returns -errno when ioctl() returns -1, so we should instead pass ret to strerror() and get an accurate error string out of drmModeAtomicAddProperty() too.

Fixes: 93220283 ("tests/modetest: Add atomic support")

Edited by Marijn Suijten

Merge request reports