Mercurial > sdl-ios-xcode
diff src/video/directfb/SDL_DirectFB_modes.c @ 2815:e759ad5e6f43
Date: Mon, 01 Dec 2008 00:57:15 +0100
From: Couriersud
Subject: SDL : Diff for directfb driver
please find attached a diff against SVN containing the following:
- Updated README.DirectFB a bit
- Fix compile issue with debug output
- Fix display mode setting/switching for directfb >= 1.2.2
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 01 Dec 2008 00:10:49 +0000 |
parents | 140a7edcf2bd |
children | 483f85e35a1a |
line wrap: on
line diff
--- a/src/video/directfb/SDL_DirectFB_modes.c Mon Dec 01 00:07:45 2008 +0000 +++ b/src/video/directfb/SDL_DirectFB_modes.c Mon Dec 01 00:10:49 2008 +0000 @@ -290,7 +290,7 @@ SDL_DFB_DEBUG("SDL directfb video driver - %s %s\n", __DATE__, __TIME__); SDL_DFB_DEBUG("Using %s (%s) driver.\n", caps.name, caps.vendor); - SDL_DFB_DEBUG("Found %d screens\n", devdata->numscreens); + SDL_DFB_DEBUG("Found %d screens\n", screencbdata->numscreens); for (i = 0; i < screencbdata->numscreens; i++) { SDL_DFB_CHECKERR(devdata->dfb-> @@ -315,9 +315,8 @@ } } - SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer, DLSCL_SHARED)); - /* Query layer configuration to determine the current mode and pixelformat */ + dlc.flags = DLCONF_ALL; layer->GetConfiguration(layer, &dlc); if (DFBToSDLPixelFormat(dlc.pixelformat, &mode.format) != 0) { @@ -348,6 +347,13 @@ display.current_mode = mode; display.driverdata = dispdata; +#if (DIRECTFB_MAJOR_VERSION == 1) && (DIRECTFB_MINOR_VERSION >= 2) + dlc.flags = DLCONF_WIDTH | DLCONF_HEIGHT | DLCONF_PIXELFORMAT | DLCONF_OPTIONS; + ret = layer->SetConfiguration(layer, &dlc); + #endif + + SDL_DFB_CHECKERR(layer->SetCooperativeLevel(layer, DLSCL_SHARED)); + SDL_AddVideoDisplay(&display); } SDL_DFB_FREE(screencbdata); @@ -442,6 +448,11 @@ SDL_DFB_DEBUG("Trace\n"); config.flags &= ~fail; SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config)); +#if (DIRECTFB_MAJOR_VERSION == 1) && (DIRECTFB_MINOR_VERSION >= 2) + /* Need to call this twice ! */ + SDL_DFB_CHECKERR(data->layer->SetConfiguration(data->layer, &config)); + //SDL_DFB_CHECKERR(data->layer->SetSourceRectangle(data->layer, 0, 0, config.width, config.height)); +#endif /* Double check */ SDL_DFB_CHECKERR(data->layer->GetConfiguration(data->layer, &rconfig)); @@ -456,7 +467,7 @@ mode->format); return -1; } - + data->pixelformat = rconfig.pixelformat; data->cw = config.width; data->ch = config.height;