I feel like this patch is making things more convoluted and difficult to review. For example, the line between virtual desktop display devices and real display devices was clearer before this patch. Also, why should update_display_cache() concern itself with whether to use the current display mode? And calling is_virtual_desktop() in xrandr14_get_adapters() seems weird. I am afraid that you have to simplify it a bit more.