Discussion:
[directfb-users] [directfb-dev] program blocks system
Krzysztof Konopko
2013-12-30 06:43:03 UTC
Permalink
Hello,
I have following code, which blocks the system if it startet.
I'm not a DFB developer but this question looks to me like one for the
"users" mailing list.
What is wrong with this code?
First of all you don't check for error codes. This is the fundamentally
what's "wrong with this code". Secondly, have you tried to debug it, at
least with "print" statements to find out which call "blocks the system"?
Have you tried `strace` it?

Cheers,
Kris
Thanks for reply
Jens
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include <directfb.h>
#include <directfb_util.h>
#include <directfb_version.h>
#include <direct/util.h>
static IDirectFBInputDevice *keyboard = NULL;
int main( int argc, char *argv[] )
{
IDirectFB *dfb;
IDirectFBDisplayLayer *layer;
IDirectFBImageProvider *provider;
IDirectFBVideoProvider *video_provider;
IDirectFBWindow *window1;
IDirectFBSurface *window_surface1;
IDirectFBEventBuffer *buffer;
DFBDisplayLayerConfig layer_config;
DFBGraphicsDeviceDescription gdesc;
IDirectFBWindow* upper;
DFBWindowID id1;
int quit = 0;
IDirectFBWindow* active = NULL;
int grabbed = 0;
DirectFBInit( &argc, &argv );
DirectFBCreate( &dfb );
dfb->GetDeviceDescription( dfb, &gdesc );
dfb->GetDisplayLayer( dfb, DLID_PRIMARY, &layer );
layer->SetCooperativeLevel( layer, DLSCL_ADMINISTRATIVE );
layer->GetConfiguration( layer, &layer_config );
layer->EnableCursor ( layer, 1 );
DFBWindowDescription desc;
desc.flags = ( DWDESC_POSX | DWDESC_POSY |
DWDESC_WIDTH | DWDESC_HEIGHT |
DWDESC_CAPS |
DWDESC_STACKING | DWDESC_SURFACE_CAPS );
desc.posx = 200;
desc.posy = 200;
desc.width = 512;
desc.height = 145;
desc.caps = DWCAPS_ALPHACHANNEL;
desc.surface_caps = DSCAPS_PREMULTIPLIED;
layer->CreateWindow( layer, &desc, &window1 );
window1->GetSurface( window1, &window_surface1 );
dfb->GetInputDevice (dfb, DIDID_KEYBOARD, &keyboard);
keyboard->CreateEventBuffer (keyboard, &buffer);
// window1->CreateEventBuffer( window1, &buffer );
window_surface1->Clear( window_surface1,
0xff,0xff,0xff,0xff); ////0xc0, 0xb0, 0x90, 0xFF );
window_surface1->SetDrawingFlags( window_surface1,
DSDRAW_SRC_PREMULTIPLY );
window_surface1->SetColor( window_surface1, 0xFF, 0x20, 0x20,
0x90 );
window_surface1->DrawRectangle( window_surface1,
0, 0, desc.width,
desc.height );
window1->SetOpacity( window1, 0xFF );
window1->GetID( window1, &id1 );
upper = window1;
while (!quit)
{
DFBInputEvent event;
buffer->WaitForEvent (buffer);
while (buffer->GetEvent (buffer, DFB_EVENT(&event)) == DFB_OK)
{
if (event.type == DIET_KEYPRESS)
{
if (event.key_id == DIKI_ESCAPE)
quit = 1;
}
}
}
//return 42;
buffer->Release( buffer );
window_surface1->Release( window_surface1 );
window1->Release( window1 );
// layer->Release( layer );
dfb->Release( dfb );
return 42;
}
_______________________________________________
directfb-dev mailing list
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev
Loading...