I may be wrong, and I'm sorry if that's the case, but are you sure the following new code in dlls/d3d8/device.c does what you believe it does?
if ((This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] == D3DTA_TEXTURE) && ((oldTxt == NULL) && (pTexture != NULL)) || ((pTexture == NULL) && (oldTxt != NULL))) { reapplyFlags |= REAPPLY_ALPHAOP; }
&& binds stronger than ||, so in fact the above boils down to
(first line && second line) || third line
while it occurs to me that you ment to achieve the following
if ( This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] == D3DTA_TEXTURE) && ( ( oldTxt == NULL && pTexture != NULL ) || ( pTexture == NULL && oldTxt != NULL ) ) )
(Personally, I think it's also nicer to omit the parentheses around == and !=, but that's a different one.)
Gerald
if ((This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] ==
D3DTA_TEXTURE) &&
((oldTxt == NULL) && (pTexture != NULL)) || ((pTexture == NULL) && (oldTxt != NULL)))
{
while it occurs to me that you ment to achieve the following
if ( This->StateBlock->texture_state[Stage][D3DTSS_ALPHAARG1] ==
D3DTA_TEXTURE)
&& ( ( oldTxt == NULL && pTexture != NULL ) || ( pTexture == NULL && oldTxt != NULL ) ) )
You are 100% correct - I'll fix it next time I get into Linux...
Thanks for the feedback, its nice to know someone notices these things :-)
Jason