On Mon, Mar 25, 2013 at 1:48 PM, Diego Guella <diego.gue...@sircomtech.com>wrote:
> ** > Hello list, > > I experience a crash when calling the first drawing function, after a call > to Flip() with a double buffered primary surface. > > The test code is this: (it is a little modification to the tutorial at > http://www.directfb.org/docs/DirectFB_Tutorials/simple.html ): > ---------- > #include <stdio.h> > #include <unistd.h> > #include <directfb.h> > static IDirectFB *dfb = NULL; // This is the super interface, it's > the entry point to all functionality. > static IDirectFBSurface *primary = NULL; // The primary surface, i.e. > the "screen". > // In cooperative level DFSCL_FULLSCREEN it's the surface of > the primary layer. > > static int screen_width = 0; // Store the width and height of the > primary surface here to support all resolutions. > static int screen_height = 0; > > // An error checking macro for a call to DirectFB. > // It is suitable for very simple apllications or tutorials. > // In more sophisticated applications this general error checking should > not be used. > #define DFBCHECK(x...) { \ > DFBResult err = x; \ > if (err != DFB_OK) { \ > fprintf( stderr, "%s <%d>:\n\t", __FILE__, __LINE__ ); \ > DirectFBErrorFatal( #x, err ); \ > } \ > } > > int main (int argc, char **argv) { > DFBSurfaceDescription dsc; // A surface description is needed > to create a surface. > DFBCHECK(DirectFBInit (&argc, &argv)); // Initialize DirectFB > passing argc and argv > // to support the standard DirectFB command line options. > // DirectFB command line options will be stripped out > automatically. > > DFBCHECK(DirectFBCreate (&dfb)); // Create the super interface. > DFBCHECK(dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN)); // We want > to go fullscreen, > // the primary surface will be exclusive access to the > surface of the primary layer. > // If you disable this call a window will be created > implicitly, > // no further changes needed, flipping the surface > updates the window. > > dsc.flags = DSDESC_CAPS; // Specify which fields of the struct > are set. > dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING; // Fill out fields, in > this example we want to have a flippable primary surface. > > DFBCHECK(dfb->CreateSurface( dfb, &dsc, &primary )); // Create the > primary surface by passing our surface description. > DFBCHECK(primary->GetSize (primary, &screen_width, &screen_height)); // > We have exclusive access to the primary layer's surface now, > // get the width and height of the surface, i.e. the > screen resolution. > > unsigned int y=0; > > while (1) { > DFBCHECK (primary->SetColor (primary, 0x00, 0x00, 0x00, 0xff)); > DFBCHECK(primary->FillRectangle (primary, 0, 0, screen_width, > screen_height)); // Clear the screen by filling a rectangle with the size > of the surface. > // Default color is black, default drawing flags are > DSDRAW_NOFX. > > DFBCHECK (primary->SetColor (primary, 0x80, 0x80, 0xff, 0xff)); // > Current color is black, so we have to set another one before. > DFBCHECK (primary->DrawLine (primary, > 0, y, > screen_width - 1, y) > ); // Draw a horizontal line in the middle of the > screen. > > DFBCHECK (primary->Flip (primary, NULL, 0)); // Now flip the > whole surface to make things visible. > sleep (5); // Wait a bit to see the result before > exiting the example application. > > y++; > if (y >= screen_height) > y=0; > } > > // Cleanup in a stack like style. > primary->Release( primary ); > dfb->Release( dfb ); > > return 23; > } > ---------- > > The full output of the program is: > ---------- > root@deb-n2800:/mnt/directfb_test# ./directfb_test_mod > > ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~ > (c) 2001-2008 The world wide DirectFB Open Source Community > (c) 2000-2004 Convergence (integrated media) GmbH > ---------------------------------------------------------------- > > (*) DirectFB/Core: Single Application Core. (2012-05-20 13:17) > (*) Direct/Thread: Started 'VT Switcher' (-1) [CRITICAL OTHER/OTHER 0/0] > <8388608>... > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: DELL DELL USB Keyboard (1) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: HID 413c:3010 (2) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: Power Button (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 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: HDA Digital PCBeep (6) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: HDA Intel Rear Mic (7) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: HDA Intel Line Out (8) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: HDA Intel HDMI/DP,pcm=3 (9) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: PC Speaker (10) 0.1 (directfb.org) > (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] > <8388608>... > (*) DirectFB/Input: Video Bus (11) 0.1 (directfb.org) > (*) 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.6 (directfb.org) > (*) DirectFB/Core/WM: Default 0.3 (directfb.org) > (*) FBDev/Surface: Allocated 1280x1024 32 bit RGB32 buffer (index 0) at > offset 0 and pitch 6144. > (*) FBDev/Surface: Allocated 1280x1024 32 bit RGB32 buffer (index 0) at > offset 0 and pitch 6144. > (*) FBDev/Mode: Setting 1280x1024 RGB32 > (*) FBDev/Mode: Switched to 1280x1024 (virtual 1280x2048) at 32 bit > (RGB32), pitch 6144 > (!!!) *** WARNING [unable to adjust heap offset] *** > [../../../systems/fbdev/surfacemanager.c:167 in > dfb_surfacemanager_adjust_heap_offset()] > (*) FBDev/Surface: Allocated 1280x1024 32 bit RGB32 buffer (index 1) at > offset 6291456 and pitch 6144. > (!) [ 2428: 0.000] --> Caught signal 11 (at 0xb6d29000, invalid > permissions) <-- > Do you have the permissions enough to run this program? > (!!!) *** WARNING [still objects in 'Layer Region Pool'] *** > [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()] > (!!!) *** WARNING [still objects in 'Layer Context Pool'] *** > [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()] > (!!!) *** WARNING [still objects in 'Surface Pool'] *** > [../../../lib/fusion/object.c:241 in fusion_object_pool_destroy()] > Annullato > ---------- > > This is on Debian Wheezy i386, on Atom N2800, kernel 3.8 from Debian > Experimental > DirectFB is version 1.2.10 from Debian: > http://packages.debian.org/wheezy/libdirectfb-1.2-9 > I can reproduce the same behavior with Debian Squeeze i386, on Atom > N270+intel 945GSE > and on Debian Squeeze amd64, on Core 2 Quad Q9300+GeForce 6200LE > > How can I fix this? > > > Thanks, > > Diego Guella > > > _______________________________________________ > directfb-dev mailing list > directfb-dev@directfb.org > http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev > >
_______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev