Disable Xbios video driver if FVDI present, but still allow it to be used when setting SDL_VIDEODRIVER SDL-1.2
authorPatrice Mandin <patmandin@gmail.com>
Mon, 13 Oct 2008 20:50:20 +0000
branchSDL-1.2
changeset 4155 4d743a3d0bc1
parent 4154 db4007f17bc8
child 4156 de46a1bfcbdb
Disable Xbios video driver if FVDI present, but still allow it to be used when setting SDL_VIDEODRIVER
src/video/xbios/SDL_xbios.c
--- a/src/video/xbios/SDL_xbios.c	Mon Sep 15 20:47:55 2008 +0000
+++ b/src/video/xbios/SDL_xbios.c	Mon Oct 13 20:50:20 2008 +0000
@@ -53,6 +53,10 @@
 
 #define XBIOS_VID_DRIVER_NAME "xbios"
 
+#ifndef C_fVDI
+#define C_fVDI 0x66564449L
+#endif
+
 /* Debug print info */
 #if 0
 #define DEBUG_PRINT(what) \
@@ -95,6 +99,8 @@
 static int XBIOS_Available(void)
 {
 	unsigned long cookie_vdo, cookie_mil, cookie_hade, cookie_scpn;
+	unsigned long cookie_fvdi;
+	const char *envr = SDL_getenv("SDL_VIDEODRIVER");
 
 	/* Milan/Hades Atari clones do not have an Atari video chip */
 	if ( (Getcookie(C__MIL, &cookie_mil) == C_FOUND) ||
@@ -102,6 +108,17 @@
 		return 0;
 	}
 
+	/* fVDI means graphic card, so no Xbios with it */
+	if (Getcookie(C_fVDI, &cookie_fvdi) == C_FOUND) {
+		if (!envr) {
+			return 0;
+		}
+		if (SDL_strcmp(envr, XBIOS_VID_DRIVER_NAME)!=0) {
+			return 0;
+		}
+		/* Except if we force Xbios usage, through env var */
+	}
+
 	/* Cookie _VDO present ? if not, assume ST machine */
 	if (Getcookie(C__VDO, &cookie_vdo) != C_FOUND) {
 		cookie_vdo = VDO_ST << 16;