On Sun, Feb 14, 2010 at 6:31 PM, David Gerard dgerard@gmail.com wrote:
On 12 February 2010 06:11, Jui-Hao Chiang windtracekimo@gmail.com wrote:
I am currently starting a project which tries to run a window application on one (source) machine, and display on another (destination) machine. Of course, the VNC or X11 forwarding technique can achieve the same goal, but I am trying to reduce the bandwidth by "not" transferring the video frame buffer but transfer the GDI function calls instead. The way I can see is try to intercept all the calls inside gdi32.dll, and forward the calls and parameters to remote machine by using some RPC library, and then replay the GDI calls on the destination machine.
Sounds like you're actually trying to reproduce Citrix or Tarantella. (Which do rather better than X11 in many ways.) Not that I have useful advice on doing so ...
In the Wine design this would be very, very inefficient. The main issue is that we lack a DIB engine and due to that we forward those calls to X11 and then read the result back. In case of plain remote rendering this would be very inefficient. In case of Wine you might want something like a local framebuffer which you somehow sync with a remote one... First experiment with NX though but it might suffer from these performance issues.
Roderick