Testing shows this problem only occurs with KMS active.
Debugging with gdb shows we get a new frontbuffer when we logout and the xserver is reset. However, the new frontbuffer is not connected to the crtc .
in drmmode_set_mode_major we have:
if (drmmode->fb_id == 0) {
ret = drmModeAddFB(drmmode->fd,
and because fb_id is not null when the xserver is reset, drmModeAddFB is not called.
Attached patch solves this problem for me. I consider this a proof of concept patch; upstream may want to fix the issue in a different way (I don't like I had to add a new public function in drmmode_display.c).
Can someone confirm this patch solves the issue for them as well? If so, I will forward the bug and patch upstream tomorrow.
Testing shows this problem only occurs with KMS active.
Debugging with gdb shows we get a new frontbuffer when we logout and the xserver is reset. However, the new frontbuffer is not connected to the crtc . set_mode_ major we have: drmmode- >fd,
in drmmode_
if (drmmode->fb_id == 0) {
ret = drmModeAddFB(
and because fb_id is not null when the xserver is reset, drmModeAddFB is not called.
Attached patch solves this problem for me. I consider this a proof of concept patch; upstream may want to fix the issue in a different way (I don't like I had to add a new public function in drmmode_display.c).
Can someone confirm this patch solves the issue for them as well? If so, I will forward the bug and patch upstream tomorrow.