Hi Howard,

I have written dfbfreerdp along with libgdi mainly as a "proof of concept"
for libgdi in the first. libgdi, however, is not the ideal way of rendering
GDI for dfbfreerdp, I agree. It was, however, a good way of getting
something that renders correctly, which I was having a lot of trouble with.
libgdi is unit tested, and known to be pretty much complete at this point,
with the exception of advanced optional graphical messages.

There was a discussion some time ago about what should be done with libgdi:
it is a nice library, but using it means loosing the 2D acceleration
provided by specific libraries like DirectFB or X11. So here's the deal:
libgdi is going to be used for rapid porting of FreeRDP to new platforms,
and also as a starting point for other UIs to provide their own
library-specific implementations. By that I mean that dfbfreerdp currently
works using libgdi, so now someone can work on re-implementing the GDI calls
using DirectFB instead of libgdi, until a full DirectFB GDI implementation
is done.

We want to refactor all of our UIs at some point to follow a consistent
structure based that can map directly to libgdi. Each UI would "override"
the default software-based GDI implementation (libgdi) to provide one of its
own, faster. By doing this, we will ensure better consistency and we could
even think of doing unit tests by comparison with the libgdi rendering.
Implementing GDI is quite hard and prone to errors, so just having the
equivalent (and correct) function in libgdi will actually help the
library-specific implementations.

If you want to work on it, you should work in dfb_win.c, and register all
the missing callbacks that xfreerdp would register in the same place.
dfbfreerdp will call libgdi, which will register its own set of callbacks.
You must re-implement all the callbacks registered by libgdi within
dfb_win.c and provide a full GDI implementation using DirectFB. This is
unfortunately the only way to benefit from those accelerated graphical
operations through DirectFB.

On Fri, May 6, 2011 at 9:39 AM, Howard Su <[email protected]> wrote:

> I am reading your code change. But i do have a question about libgdi. In my
> case, I am using DFB in a ARM11 board. CPU is relative slow compare desktop
> machine. But Samsung offer a graphics card which supports some 2D function
> like BitBlt. Do you have any idea how we can support it in libgdi? We
> definitely can leverage DFB then the question is how libgdi leverage DFB to
> do some operations like fillRect, Line and BitBlt?
>
> --
> -Howard
>
------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Freerdp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Reply via email to