I'll bite. Below are a few problems I encountered the last 2 weeks while programming x directly:
1. X treats the mouse wheel as a button (not an axis), which breaks mouse polling (you will never catch wheel movements this way) and makes wheel acceleration impossible.
2a. This wouldn't be an issue if X was able to deliver mouse messages to more than one window at the same time. Unfortunately, it cannot.
2b. The same for keyboard. At least, XQueryKeymap generally works as expected here (faint praise).
3. Even worse, it only offers absolute mouse events, not relative motions. You can emulate relative motions with XWarpPointer but then you lose absolute motions. These three items are why Wine has never been able to emulate mouse movement correctly during this past decade or so. XInput2 fixes those issues but you cannot rely on users having that installed yet.
4. Xlib is an arcane, ill-designed and essentially undocumented API. Yes, we have a few $120 books and an outdated API reference (tronche) - for what's essentially the foundation for our entire graphical environment!
5. How many times was XInput2 (multi-pointer X) delayed? It was finally delivered in 2010. Note that this is functionality that has been available on Windows since 2001!
6. The GLX protocol has stopped evolving. Each vendor makes undocumented additions (either by design or by mistake), making indirect GL completely unreliable for anything more than spinning gears.
7. The threading model sucks. No wait, there is no threading model. You must serialize each and every access (yes, that 6-core machine you are so proud of? It's useless).
8. XRender. Oh god. Software rendering is more reliable and faster (check the Qt blog).
9. Vsync-ed rendering? Sorry, there's no protocol for that. Check back next decade.
10. The whole API is built around 20 year old concepts (palletes, colormaps, ...) This is not 1990 anymore, modern video hardware doesn't even support palleted modes! But no, XCreateWindow has you interact with that stuff directly.
On the whole, X works, just barely, but it is seriously outdated. Wayland cannot come soon enough.


Reply With Quote

