Date: Thu, 24 Jun 2004 15:13:40 +0300 (EEST)
authorSam Lantinga <slouken@libsdl.org>
Fri, 25 Jun 2004 05:24:50 +0000
changeset 901 fd4a6847ddc0
parent 900 c3c8739f7844
child 902 99f439d6ee4a
Date: Thu, 24 Jun 2004 15:13:40 +0300 (EEST) From: Martin_Storsj´┐Ż Subject: Small patches for SDL/win32 I've tried playing with running SDL compiled for Windows with Wine (and WineX) under Linux. It didn't originally work too well, but I somehow managed to make it work. Most of the fixes was patches to Wine(X), but I also found something in video/windx5/SDL_dx5video.c which, as far as I can tell, actually is a bug in SDL. The result from the COM method Release, which returns the new reference count, is compared to DD_OK. Because QueryInterface is called immediately before, the reference count shouldn't be DD_OK (== 0).
src/video/windx5/SDL_dx5video.c
--- a/src/video/windx5/SDL_dx5video.c	Thu May 27 22:57:30 2004 +0000
+++ b/src/video/windx5/SDL_dx5video.c	Fri Jun 25 05:24:50 2004 +0000
@@ -1323,11 +1323,7 @@
 		SetDDerror("DirectDrawSurface::QueryInterface", result);
 		return(NULL);
 	}
-	result = IDirectDrawSurface_Release(dd_surface1);
-	if ( result != DD_OK ) {
-		SetDDerror("DirectDrawSurface::Release", result);
-		return(NULL);
-	}
+	IDirectDrawSurface_Release(dd_surface1);
 
 	/* Get the format of the primary DirectDraw surface */
 	memset(&ddsd, 0, sizeof(ddsd));
@@ -1335,7 +1331,7 @@
 	ddsd.dwFlags = DDSD_PIXELFORMAT|DDSD_CAPS;
 	result = IDirectDrawSurface3_GetSurfaceDesc(SDL_primary, &ddsd);
 	if ( result != DD_OK ) {
-		SetDDerror("DirectDrawSurface::Release", result);
+		SetDDerror("DirectDrawSurface::GetSurfaceDesc", result);
 		return(NULL);
 	}
 	if ( ! (ddsd.ddpfPixelFormat.dwFlags&DDPF_RGB) ) {