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.
For all 4 cases (flip and non-flip paths, each with or without sync-to-vblank):
Xwayland running in
valgrind, no leaks or other errors reported.
struct xwl_present_events which are only cleaned up when the window is destroyed.