On Thursday 17 October 2002 5:32 pm, you wrote:

You seem to have had exactly the same problems as I had recently:
a lack of mouse cursor (cured by removing the call to SetCooperativeMode)
and then a small drawing surface.

I found that explicitly calling SetVideoMode ensured that the primary surface
was the correct size.

My experience with DirectFB has been pretty positive.  I managed to port
a graphics application onto it without much grief (aside from the mouse
cursor problems above).  The application originally ran on microwindows
and the speedup through using DirectFB was impressive -- and made our
application usable!

Thanks,
stephen

>   This is part-rant, part-question, so please bear with me.
>
> I seem to be having a hard time getting started with DirectFB due to a
> general lack of documentation and examples.  (Yes, I've looked at all
> the sample code, tutorials, and docs on the web site)  I keep getting
> hit with undocumented gotchas like the mouse cursor being unavailble if
> you are in fullscreen mode.  (Why?)  If the sample code, such as
> df_window.c, were documented with not just what it is doing, but why
> it's doing it that way as opposed to another way, I don't know how many
> days that would have saved me.
>
> My product, Cosmoe, is a GUI front-end to Linux that provided a API very
> similar to the BeOS.  I'm trying to move Cosmoe to use DirectFB as
> opposed to the raw framebuffer it is using now.  Here are the specifics:
> 1. It needs to use the DirectFB cursor.
> 2. It is not currently using the DFB window stack (yet).  It handles
> window-drawing/stacking/handling internally and just uses DirectFB for
> drawing.
>
> When I used SetCooperativeMode(FULLSCREEN) or (EXCLUSIVE), everything
> drew fine but I had no cursor.  When I took that line out, I got a
> cursor, but the drawing was confined to a 640x480 surface in the middle
> of the screen regardless of what I size I asked for.  I believe this is
> related to creating the main surface with DSCAPS_PRIMARY.  If I remove
> the DSCAPS_PRIMARY flag from the surface description, then the surface
> is created at the right size but nothing draws at all to the screen.
>  Aaaargh!
>
> Finally, the question:  How do I get both a mouse cursor and a
> full-screen-size surface on which to draw? This shouldn't be that hard!
>  Here is my current, flawed DirectFB init code:
>
> bool DirectFBDriver::Open( void )
> {
>     DFBResult                err;
>     DFBDisplayLayerConfig    config;
>     DFBSurfaceDescription    dsc;
>
>     if (DirectFBInit(NULL, NULL) != DFB_OK)
>         return false;
>
>     if (DirectFBCreate( &DFBObject ) != DFB_OK)
>         return false;
>
> // DFSCL_FULLSCREEN makes all the drawing look right,but I get no cursor
> //    DFBObject->SetCooperativeLevel( DFBObject, DFSCL_FULLSCREEN );
>
>     DFBObject->GetDisplayLayer( DFBObject, DLID_PRIMARY, &mLayer );
>     err = mLayer->GetConfiguration( mLayer, &config );
>     if (err != DFB_OK)
>     {
>         dbprintf( "DFBDriver: Could not get layer config\n");
>     }
>
>     // See if we can create our primary surface
>
>     dsc.flags = (DFBSurfaceDescriptionFlags)(DSDESC_CAPS | DSDESC_WIDTH
>
> | DSDESC_HEIGHT);
>
>     dsc.caps  = (DFBSurfaceCapabilities)(DSCAPS_PRIMARY | DSCAPS_FLIPPING);
>     dsc.width = config.width;
>     dsc.height = config.height;
>
>     err = DFBObject->CreateSurface( DFBObject, &dsc, &mPrimarySurface );
>     if (err != DFB_OK)
>     {
>         dbprintf( "DFBDriver: Failed creating primary surface\n");
>         mLayer->Release( mLayer );
>         DFBObject->Release( DFBObject );
>         return false;
>     }
>
>     unsigned int width, height;
>     mPrimarySurface->GetSize( mPrimarySurface, &width, &height );
>
> // *** if I keep the DSCAPS_PRIMARY flags in the call to CreateSurface, the
> // *** GetSize calls *always* returns 640x480
> // *** However, if I remove DSCAPS_PRIMARY, GetSize returns the correct
> value
> // *** but no drawing shows up on screen.
>
>     return( true );
> }
>
>
> Any help will be *greatly* appreciated as this is driving me up the wall.
>
> Thanks,
> Bill



--
Info: To unsubscribe send a mail to [EMAIL PROTECTED] with
"unsubscribe directfb-users" as subject.

Reply via email to