I've finished the first version of xepdmgr, but I've to recompile the X libraries for the iliad as I don't have the needed libXdamage.so.1 and related headers in the scratchbox environment
Anyway, if someone wants to look at how it's at the moment and try it in his desktop (you will have a nice line in stdout when the iliad refresh would be invoked), here it is.
To compile, just do "make" in the directory.
It has two modes of being used, as an standalone server and as a wrapper for one program only.
As a standalone server:
1. In one window launch ./xepdmgr :0
2. In another window exec ./xepdmgrtest
3. To futher tests, exec ./xepdmgrtest --help
4. When you want to stop the server, just hit Ctrl-C in the server window
As a wrapper for one program only:
1. Just exec ./xepdmgr :0 ./xepdmgrtest
(or ./xepdmgr :0 xterm)
2. When you exit the launched program, xepdmgr also exits
I'll document the inner workings and the meaning of the different commands that can be send with xepdmgrtest on another messsage, as today is somewhat late for me :-).
OTOH, the xepdmgrclient.h and xepdmgrclient.c are intended to be included in your programs to be able to communicate with the server; see xepdmgrtest.c for an example. Multiple clients are allowed at once, but races can occur in that case (if two programs send a message to the server in the same exact moment, one of the messages will be lost).
Something that makes this interesting as an alternative to the hacked libX11 is that [when I manage to compile xepdmgr for the iliad] the problem of having exported windows on the iliad will vanish, as they would auto-refresh correctly ;-).
Advantages of this approach:
- lets the application force refreshes (or delay them) when needed, unlike the hacked libX11.
- Has some heuristics as to when to use the full refresh or the Typing refresh, as it knows how big the portion to refresh is (for small portions it will use the Typing refresh, and for large portions the Full refresh).
Enjoy your hacking!