xwayland/present: Move DIX Present WNMD code to Xwayland DDX
The WNMD abstraction serves no purpose for Xwayland alone. No other users have emerged in the 3 years it's been there, and I'm not aware of any plans for other users.
So, this MR abolishes the abstraction and moves the WNMD specific code to the Xwayland DDX. This then opens up various simplifications and cleanups, which will make it easier to extend and improve Xwayland's Present support.
struct xwl_present_event
now embeds present_vblank_rec
, and all but one of its other members are eliminated. The remaining pixmap
member could be eliminated as well, but it's a bit more complicated. And I suspect more members might be added for other purposes in the near future, e.g. for presentation-time
protocol support. If that turns out not to be the case, I can remove it in a later MR.
Testing performed
For all 4 cases (flip and non-flip paths, each with or without sync-to-vblank):
- Verified correct operation with
glxgears
. - Same with
Xwayland
running invalgrind
, no leaks or other errors reported. - Same with an additional debugging patch to confirm there's no build-up of lingering
struct xwl_present_event
s which are only cleaned up when the window is destroyed.