Hiya, So in an attempt to get Champions Online working under WINE, I have been debugging it and I have found that the function IWineD3DVolumeImpl_UnlockBox (it can be found in WINE_SRC/dlls/wined3d/volume.c) is being called twice on the same object thus in the second attempt it is trying to unlock an already unlocked object, which seems to be generating the error. I have searched the WINE code base for explicit calls to this function and have found none. So these are my questions... Does this mean that the game is making the call to this function and thus the problem is with the game? Is there a more anonymous method call going on behind the scene's somehow that a code search would not turn up? If the answer to the first question is yes, then should WINE somehow be more forgiving in how it handles this unlocking? As I have never really worked with the WINE project before, any feedback would be really appreciated. Thanks, B
brianbourke75 wrote:> I have found that the function IWineD3DVolumeImpl_UnlockBox (it can be found in WINE_SRC/dlls/wined3d/volume.c) is being called twice on the same object thus in the second attempt it is trying to unlock an already unlocked object, which seems to be generating the error. I have searched the WINE code base for explicit calls to this function and have found none. So these are my questions... > > Does this mean that the game is making the call to this function and thus the problem is with the game?No, that's internal interface and can't be called by windows programs. However you were looking for the wrong thing. This is a COM object method, so you need to be looking for that object's call. In C that means you need to look for IWineD3DVolume_UnlockBox() function calls. brianbourke75 wrote:> Is there a more anonymous method call going on behind the scene's somehow that a code search would not turn up?It seems you don't really understand how COM object's methods are called in C. Look at all the COM method wrappers in header files. Also don't forget there are lots of things going on behind the scene then meets the eye. Wine doesn't just translate some "d3d function call" into "OpenGL call". It doesn't work that way.