X-Git-Url: https://www.hackdaworld.org/gitweb/?a=blobdiff_plain;f=old%2Fdfbapi.c;fp=old%2Fdfbapi.c;h=f1444e1fc0e01ff60c2e3980a9d544b316a5c1b5;hb=0e2dd277897f8959e363564b91dd7d098fb4873c;hp=0000000000000000000000000000000000000000;hpb=6b894156a6cd304f35a959d4388dfb1e1342e844;p=my-code%2Fivac.git diff --git a/old/dfbapi.c b/old/dfbapi.c new file mode 100644 index 0000000..f1444e1 --- /dev/null +++ b/old/dfbapi.c @@ -0,0 +1,72 @@ +/* dfb functions + * + * author: hackbard@hackdaworld.dyndns.org + * + */ + +#include +#include +#include "ivac.h" + +int flip_blit_callback(void *ctx) { + struct ivac *ivac=ctx; + + ivac->dfb_stuff.v_surface->Flip(ivac->dfb_stuff.v_surface,NULL,0); + + return 1; +} + +int dfb_play_video(struct ivac *ivac) { + + ivac->dfb_stuff.v_provider->PlayTo(ivac->dfb_stuff.v_provider,ivac->dfb_stuff.v_surface,NULL,flip_blit_callback,(void *)ivac); + + return 1; +} + +int dfb_stop_video(struct ivac *ivac) { + + ivac->dfb_stuff.v_provider->Stop(ivac->dfb_stuff.v_provider); + + return 1; +} + +int dfb_init(int arg_c,char **arg_v,struct ivac *ivac) { + DFBSurfaceDescription sdsc; + // DFBFontDescription fdsc; + DFBWindowDescription wdsc; + + /* init */ + DirectFBInit(&arg_c,&arg_v); + DirectFBCreate(&(ivac->dfb_stuff.dfb)); + + /* input devices and event stuff */ + ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_MOUSE,&(ivac->dfb_stuff.mouse)); + ivac->dfb_stuff.dfb->GetInputDevice(ivac->dfb_stuff.dfb,DIDID_KEYBOARD,&(ivac->dfb_stuff.keyboard)); + ivac->dfb_stuff.mouse->CreateEventBuffer(ivac->dfb_stuff.mouse,&(ivac->dfb_stuff.buffer)); + + /* first window -- video window */ + ivac->dfb_stuff.dfb->GetDisplayLayer(ivac->dfb_stuff.dfb,DLID_PRIMARY,&(ivac->dfb_stuff.layer)); + ivac->dfb_stuff.dfb->CreateVideoProvider(ivac->dfb_stuff.dfb,ivac->video_dev,&(ivac->dfb_stuff.v_provider)); + ivac->dfb_stuff.v_provider->GetSurfaceDescription(ivac->dfb_stuff.v_provider,&sdsc); + + wdsc.flags=DWDESC_POSX|DWDESC_POSY|DWDESC_WIDTH|DWDESC_HEIGHT; + wdsc.posx=0; + wdsc.posy=0; + wdsc.width=sdsc.width; + wdsc.height=sdsc.height; + + ivac->dfb_stuff.layer->CreateWindow(ivac->dfb_stuff.layer,&wdsc,&(ivac->dfb_stuff.v_window)); + ivac->dfb_stuff.v_window->GetSurface(ivac->dfb_stuff.v_window,&(ivac->dfb_stuff.v_surface)); + ivac->dfb_stuff.v_window->SetOpacity(ivac->dfb_stuff.v_window,0xff); + + return 1; +} + +int dfb_tini(struct ivac *ivac) { + ivac->dfb_stuff.v_provider->Release(ivac->dfb_stuff.v_provider); + ivac->dfb_stuff.v_window->Release(ivac->dfb_stuff.v_window); + ivac->dfb_stuff.layer->Release(ivac->dfb_stuff.layer); + ivac->dfb_stuff.dfb->Release(ivac->dfb_stuff.dfb); + + return 1; +}