Date: Thu, 24 Jun 2004 15:13:40 +0300 (EEST)
authorSam Lantinga
Fri, 25 Jun 2004 05:24:50 +0000
changeset 901fd4a6847ddc0
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
     1.1 --- a/src/video/windx5/SDL_dx5video.c	Thu May 27 22:57:30 2004 +0000
     1.2 +++ b/src/video/windx5/SDL_dx5video.c	Fri Jun 25 05:24:50 2004 +0000
     1.3 @@ -1323,11 +1323,7 @@
     1.4  		SetDDerror("DirectDrawSurface::QueryInterface", result);
     1.5  		return(NULL);
     1.6  	}
     1.7 -	result = IDirectDrawSurface_Release(dd_surface1);
     1.8 -	if ( result != DD_OK ) {
     1.9 -		SetDDerror("DirectDrawSurface::Release", result);
    1.10 -		return(NULL);
    1.11 -	}
    1.12 +	IDirectDrawSurface_Release(dd_surface1);
    1.13  
    1.14  	/* Get the format of the primary DirectDraw surface */
    1.15  	memset(&ddsd, 0, sizeof(ddsd));
    1.16 @@ -1335,7 +1331,7 @@
    1.17  	ddsd.dwFlags = DDSD_PIXELFORMAT|DDSD_CAPS;
    1.18  	result = IDirectDrawSurface3_GetSurfaceDesc(SDL_primary, &ddsd);
    1.19  	if ( result != DD_OK ) {
    1.20 -		SetDDerror("DirectDrawSurface::Release", result);
    1.21 +		SetDDerror("DirectDrawSurface::GetSurfaceDesc", result);
    1.22  		return(NULL);
    1.23  	}
    1.24  	if ( ! (ddsd.ddpfPixelFormat.dwFlags&DDPF_RGB) ) {