static DFBResult primaryInitLayer( CoreLayer *layer, void *driver_data, void *layer_data, DFBDisplayLayerDescription *description, DFBDisplayLayerConfig *config, DFBColorAdjustment *adjustment ) { /* set capabilities and type */ description->caps = DLCAPS_SURFACE; description->type = DLTF_GRAPHICS; /* set name */ snprintf( description->name, DFB_DISPLAY_LAYER_DESC_NAME_LENGTH, "SDL Primary Layer" ); /* fill out the default configuration */ config->flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_BUFFERMODE; config->buffermode = DLBM_FRONTONLY; if (dfb_config->mode.width) config->width = dfb_config->mode.width; else config->width = 640; if (dfb_config->mode.height) config->height = dfb_config->mode.height; else config->height = 480; if (dfb_config->mode.format != DSPF_UNKNOWN) config->pixelformat = dfb_config->mode.format; else if (dfb_config->mode.depth > 0) config->pixelformat = dfb_pixelformat_for_depth( dfb_config->mode.depth ); else config->pixelformat = DSPF_RGB16; /* Initialize update lock and condition. */ pthread_mutex_init( &dfb_sdl->update.lock, NULL ); pthread_cond_init( &dfb_sdl->update.cond, NULL ); /* Start update thread. */ dfb_sdl->update.thread = direct_thread_create( DTT_OUTPUT, ScreenUpdateLoop, NULL, "Screen Update" ); if (!dfb_sdl->update.thread) return DFB_FAILURE; return DFB_OK; }
static DFBResult primaryInitLayer( CoreLayer *layer, void *driver_data, void *layer_data, DFBDisplayLayerDescription *description, DFBDisplayLayerConfig *config, DFBColorAdjustment *adjustment ) { D_DEBUG( "DirectFB/RTD: primaryInitLayer\n"); /* set capabilities and type */ description->caps = DLCAPS_SURFACE; description->type = DLTF_GRAPHICS; /* set name */ snprintf( description->name, DFB_DISPLAY_LAYER_DESC_NAME_LENGTH, "RTD Primary Layer" ); /* fill out the default configuration */ config->flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_BUFFERMODE; config->buffermode = DLBM_FRONTONLY; if (dfb_config->mode.width) config->width = dfb_config->mode.width; else config->width = 640; if (dfb_config->mode.height) config->height = dfb_config->mode.height; else config->height = 480; if (dfb_config->mode.format != DSPF_UNKNOWN) config->pixelformat = dfb_config->mode.format; else if (dfb_config->mode.depth > 0) config->pixelformat = dfb_pixelformat_for_depth( dfb_config->mode.depth ); else config->pixelformat = DSPF_RGB24; return DFB_OK; }
static DFBResult primaryInitLayer( CoreLayer *layer, void *driver_data, void *layer_data, DFBDisplayLayerDescription *description, DFBDisplayLayerConfig *config, DFBColorAdjustment *adjustment ) { DFBX11 *x11 = driver_data; DFBX11Shared *shared = x11->shared; char *name; D_DEBUG_AT( X11_Layer, "%s()\n", __FUNCTION__ ); { static int layer_counter = 0; X11LayerData *lds = layer_data; char *names[] = { "Primary", "Secondary", "Tertiary" }; name = "Other"; if( layer_counter < 3 ) name = names[layer_counter]; lds->layer_id = layer_counter; layer_counter++; } /* set capabilities and type */ description->caps = DLCAPS_SURFACE | DLCAPS_SCREEN_LOCATION | DLCAPS_ALPHACHANNEL; description->type = DLTF_GRAPHICS; /* set name */ snprintf( description->name, DFB_DISPLAY_LAYER_DESC_NAME_LENGTH, "X11 %s Layer", name ); /* fill out the default configuration */ config->flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_BUFFERMODE; config->buffermode = DLBM_FRONTONLY; if (dfb_config->mode.width) config->width = dfb_config->mode.width; else config->width = shared->screen_size.w; if (dfb_config->mode.height) config->height = dfb_config->mode.height; else config->height = shared->screen_size.h; if (dfb_config->mode.format != DSPF_UNKNOWN) config->pixelformat = dfb_config->mode.format; else if (dfb_config->mode.depth > 0) config->pixelformat = dfb_pixelformat_for_depth( dfb_config->mode.depth ); else { int depth = DefaultDepthOfScreen( x11->screenptr ); switch (depth) { case 15: config->pixelformat = DSPF_RGB555; break; case 16: config->pixelformat = DSPF_RGB16; break; case 24: config->pixelformat = DSPF_RGB32; break; case 32: config->pixelformat = DSPF_ARGB; break; default: printf(" Unsupported X11 screen depth %d \n",depth); return DFB_UNSUPPORTED; } } return DFB_OK; }
static DFBResult primaryInitLayer( CoreLayer *layer, void *driver_data, void *layer_data, DFBDisplayLayerDescription *description, DFBDisplayLayerConfig *config, DFBColorAdjustment *adjustment ) { DFBX11 *x11 = driver_data; DFBX11Shared *shared = x11->shared; /* set capabilities and type */ description->caps = DLCAPS_SURFACE; description->type = DLTF_GRAPHICS; /* set name */ snprintf( description->name, DFB_DISPLAY_LAYER_DESC_NAME_LENGTH, "X11 Primary Layer" ); /* fill out the default configuration */ config->flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_BUFFERMODE; config->buffermode = DLBM_FRONTONLY; if (dfb_config->mode.width) config->width = dfb_config->mode.width; else config->width = shared->screen_size.w; if (dfb_config->mode.height) config->height = dfb_config->mode.height; else config->height = shared->screen_size.h; if (dfb_config->mode.format != DSPF_UNKNOWN) config->pixelformat = dfb_config->mode.format; else if (dfb_config->mode.depth > 0) config->pixelformat = dfb_pixelformat_for_depth( dfb_config->mode.depth ); else { int depth = DefaultDepthOfScreen( x11->screenptr ); switch (depth) { case 15: config->pixelformat = DSPF_RGB555; break; case 16: config->pixelformat = DSPF_RGB16; break; case 24: config->pixelformat = DSPF_RGB32; break; case 32: config->pixelformat = DSPF_ARGB; break; default: printf(" Unsupported X11 screen depth %d \n",depth); return DFB_UNSUPPORTED; } } return DFB_OK; }