Hello everyone,
I don't know if anybody's reading these lists anymore (my last question didn't get any replies whatsoever), but I'll try it once more:

I see the nice example of a sideways window on directfb.org (http://www.directfb.org/screenshots/LayerWindowRotate.png), and I wouldn't even need something that complicated: I want to turn the whole display (because the monitor is used in portrait orientation) by 90 or 270 degrees, so that I get a 1080x1920 display instead of a 1920x1080 one.

I use dfb++, but those are only wrappers for the directfb calls, so that shouldn't be the problem, I think.

At the moment, I pass "layer-rotate:90" via argc/argv which seems to be recognized fine, but then I get:

 (!!!)  *** UNIMPLEMENTED [dfb_surface_create] *** [surface.c:179]
 (!!!)  *** UNIMPLEMENTED [dfb_surface_reconfig] *** [surface.c:525]

and the display remains in landscape orientation. As far as I can see from the DirectFB sources (surface.c), rotation is indeed unimplemented in the surfaces.

My program works like this:

1. I call the Init routine:

DirectFB::Init (&argc, &argv);

2. I call Create():

   dfb=DirectFB::Create();

3. I define surface capabilities for a primary surface:

   dsc.flags = DSDESC_CAPS;
   DFB_ADD_SURFACE_CAPS( dsc.caps, DSCAPS_PRIMARY);
   DFB_ADD_SURFACE_CAPS( dsc.caps, DSCAPS_SYSTEMONLY);
   DFB_ADD_SURFACE_CAPS( dsc.caps, DSCAPS_DOUBLE);
   DFB_ADD_SURFACE_DESC(dsc.flags, DSDESC_PIXELFORMAT);
   dsc.pixelformat= DSPF_RGB32;

6. I create that surface:

   primary=dfb->CreateSurface(dsc);

All my DrawString(), SetColor(), FillRectangle() etc. operations to fill the display with the intended information are done in regard to this primary surface, or they are made on other surfaces I create and then Blit() to the primary surface. I don't use any window objects as I don't have a window layout on screen, but just one full-screen display.

What am I doing wrong? Can anyone give me any pointers how to get the rotation I want to see? 180 degrees works fine, just 90 and 270 don't do anything.

I even tried to retrieve the primary layer of the display:

prim_layer=dfb->GetDisplayLayer(DLID_PRIMARY);

and rotate that directly:

   prim_layer->SetRotation(180);

but that just results in an exception:

 IDirectFBDisplayLayer::SetRotation(int) -> Access denied!

So that doesn't work either? Is there another way that I just fail to see?



I'm currently using DirectFB 1.4.17 with DFB++ 1.2.0 running on an Intel Atom Board using kernel 3.4.9 with modesetting enabled. This is my debug output:

   ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.4.17 |~~~~~~~~~~~~~~~~~~~~~~~~~~
        (c) 2001-2012  The world wide DirectFB Open Source Community
        (c) 2000-2004  Convergence (integrated media) GmbH
----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2012-08-22 17:53) [ DEBUG ][ TRACE ] (*) Direct/Thread: Started 'VT Switcher' (10410) [CRITICAL OTHER/OTHER 0/0] <8388608>... (*) Direct/Thread: Started 'VT Flusher' (-1) [DEFAULT OTHER/OTHER 0/0] <8388608>... (*) DirectFB/FBDev: Found 'inteldrmfb' (ID 0) with frame buffer at 0xd0030000, 8100k (MMIO 0x00000000, 0k) (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Microsoft Microsoft Notebook Op (1) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: HID Keyboard Device (2) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: HID Keyboard Device (3) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Sleep Button (4) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Power Button (5) 0.1 (directfb.org)
(*) Direct/Thread: Started 'Hotplug with Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Hot-plug detection enabled with Linux Input Driver
(*) Direct/Thread: Started 'Keyboard Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: Keyboard 0.9 (directfb.org)
(*) Direct/Thread: Started 'PS/2 Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: IMPS/2 Mouse (1) 1.0 (directfb.org)
(*) Direct/Thread: Started 'PS/2 Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: IMPS/2 Mouse (2) 1.0 (directfb.org)
(*) DirectFB/Genefx: MMX detected and enabled
(*) DirectFB/Graphics: MMX Software Rasterizer 0.7 (directfb.org)
(*) DirectFB/Core/WM: Default 0.3 (directfb.org)
 (!!!)  *** UNIMPLEMENTED [dfb_surface_create] *** [surface.c:179]
 (!!!)  *** UNIMPLEMENTED [dfb_surface_reconfig] *** [surface.c:525]

If you need any further information, just ask. I'm grateful for any help on the subject, as I'm starting to go nuts here. :-)

Greetings
Kasi Mir





_______________________________________________
directfb-users mailing list
directfb-users@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-users

Reply via email to