Intercepting GDI calls

Roderick Colenbrander thunderbird2k at gmail.com
Sun Feb 14 12:22:09 CST 2010


On Sun, Feb 14, 2010 at 6:31 PM, David Gerard <dgerard at gmail.com> wrote:
> On 12 February 2010 06:11, Jui-Hao Chiang <windtracekimo at 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



More information about the wine-devel mailing list