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;