From 09e5d7050c182d56d23c801035d5098a9571dc1e Mon Sep 17 00:00:00 2001 From: Elisha Riedlinger Date: Wed, 14 Aug 2024 20:31:22 -0700 Subject: [PATCH] Update Initialize() return from documentation --- Dllmain/BuildNo.rc | 2 +- ddraw/IDirect3DDeviceX.cpp | 2 +- ddraw/IDirect3DMaterialX.cpp | 4 ++-- ddraw/IDirect3DTextureX.cpp | 4 ++-- ddraw/IDirect3DViewportX.cpp | 4 ++-- ddraw/IDirect3DX.cpp | 4 ++-- ddraw/IDirectDrawClipper.cpp | 13 ++----------- ddraw/IDirectDrawClipper.h | 1 - ddraw/IDirectDrawSurfaceX.cpp | 2 +- ddraw/IDirectDrawX.cpp | 24 +++--------------------- ddraw/IDirectDrawX.h | 1 - 11 files changed, 16 insertions(+), 45 deletions(-) diff --git a/Dllmain/BuildNo.rc b/Dllmain/BuildNo.rc index af7571f5..2dd78727 100644 --- a/Dllmain/BuildNo.rc +++ b/Dllmain/BuildNo.rc @@ -1 +1 @@ -#define BUILD_NUMBER 7092 +#define BUILD_NUMBER 7093 diff --git a/ddraw/IDirect3DDeviceX.cpp b/ddraw/IDirect3DDeviceX.cpp index 7d347e80..43c2f103 100644 --- a/ddraw/IDirect3DDeviceX.cpp +++ b/ddraw/IDirect3DDeviceX.cpp @@ -152,7 +152,7 @@ HRESULT m_IDirect3DDeviceX::Initialize(LPDIRECT3D lpd3d, LPGUID lpGUID, LPD3DDEV if (ProxyDirectXVersion != 1) { - // The IDirect3DDevice::Initialize method is not implemented in Windows. + // Returns D3D_OK if successful, otherwise it returns an error. return D3D_OK; } diff --git a/ddraw/IDirect3DMaterialX.cpp b/ddraw/IDirect3DMaterialX.cpp index 13511c94..636e4bfb 100644 --- a/ddraw/IDirect3DMaterialX.cpp +++ b/ddraw/IDirect3DMaterialX.cpp @@ -144,8 +144,8 @@ HRESULT m_IDirect3DMaterialX::Initialize(LPDIRECT3D lplpD3D) if (ProxyDirectXVersion != 1) { - // Former stub method. This method was never implemented and is not supported in any interface. - return D3D_OK; + // The method returns DDERR_ALREADYINITIALIZED because the IDirect3DMaterial object is initialized when it is created. + return DDERR_ALREADYINITIALIZED; } if (lplpD3D) diff --git a/ddraw/IDirect3DTextureX.cpp b/ddraw/IDirect3DTextureX.cpp index be670daf..4fd42cc8 100644 --- a/ddraw/IDirect3DTextureX.cpp +++ b/ddraw/IDirect3DTextureX.cpp @@ -136,8 +136,8 @@ HRESULT m_IDirect3DTextureX::Initialize(LPDIRECT3DDEVICE lpDirect3DDevice, LPDIR if (ProxyDirectXVersion != 1) { - // Former stub method. This method was never implemented and is not supported in any interface. - return D3D_OK; + // The method returns DDERR_ALREADYINITIALIZED because the IDirect3DTexture object is initialized when it is created. + return DDERR_ALREADYINITIALIZED; } if (lpDirect3DDevice) diff --git a/ddraw/IDirect3DViewportX.cpp b/ddraw/IDirect3DViewportX.cpp index 10482134..560ec048 100644 --- a/ddraw/IDirect3DViewportX.cpp +++ b/ddraw/IDirect3DViewportX.cpp @@ -144,8 +144,8 @@ HRESULT m_IDirect3DViewportX::Initialize(LPDIRECT3D lpDirect3D) if (!ProxyInterface) { - // The IDirect3DViewport3::Initialize method is not implemented in Windows. - return D3D_OK; + // The method returns DDERR_ALREADYINITIALIZED because the IDirect3DViewport object is initialized when it is created. + return DDERR_ALREADYINITIALIZED; } if (lpDirect3D) diff --git a/ddraw/IDirect3DX.cpp b/ddraw/IDirect3DX.cpp index 01dce46b..3fd7e87d 100644 --- a/ddraw/IDirect3DX.cpp +++ b/ddraw/IDirect3DX.cpp @@ -172,8 +172,8 @@ HRESULT m_IDirect3DX::Initialize(REFCLSID rclsid) if (ProxyDirectXVersion != 1) { - // Former stub method. This method was never implemented and is not supported in any interface. - return D3D_OK; + // The method returns DDERR_ALREADYINITIALIZED because the IDirect3D object is initialized when it is created. + return DDERR_ALREADYINITIALIZED; } return GetProxyInterfaceV1()->Initialize(rclsid); diff --git a/ddraw/IDirectDrawClipper.cpp b/ddraw/IDirectDrawClipper.cpp index c10a962f..bac643ca 100644 --- a/ddraw/IDirectDrawClipper.cpp +++ b/ddraw/IDirectDrawClipper.cpp @@ -215,17 +215,8 @@ HRESULT m_IDirectDrawClipper::Initialize(LPDIRECTDRAW lpDD, DWORD dwFlags) if (!ProxyInterface) { - // ToDo: If you used the DirectDrawCreateClipper function or the IDirectDraw7::CreateClipper method to create the DirectDrawClipper object, - // the IDirectDrawClipper::Initialize method returns DDERR_ALREADYINITIALIZED. - if (IsInitialize) - { - return DDERR_ALREADYINITIALIZED; - } - else - { - IsInitialize = true; - return DD_OK; - } + // Returns D3D_OK if successful, otherwise it returns an error. + return D3D_OK; } if (lpDD) diff --git a/ddraw/IDirectDrawClipper.h b/ddraw/IDirectDrawClipper.h index b8a40f10..80a59eb7 100644 --- a/ddraw/IDirectDrawClipper.h +++ b/ddraw/IDirectDrawClipper.h @@ -6,7 +6,6 @@ class m_IDirectDrawClipper : public IDirectDrawClipper, public AddressLookupTabl IDirectDrawClipper *ProxyInterface = nullptr; REFIID WrapperID = IID_IDirectDrawClipper; ULONG RefCount = 1; - bool IsInitialize = false; DWORD clipperCaps = 0; // Clipper flags HWND cliphWnd = nullptr; std::vector ClipList; diff --git a/ddraw/IDirectDrawSurfaceX.cpp b/ddraw/IDirectDrawSurfaceX.cpp index 968192e5..a3fc0c06 100644 --- a/ddraw/IDirectDrawSurfaceX.cpp +++ b/ddraw/IDirectDrawSurfaceX.cpp @@ -5617,7 +5617,7 @@ inline void m_IDirectDrawSurfaceX::InitSurfaceDesc(DWORD DirectXVersion) (surfaceDesc2.dwFlags & DDSD_MIPMAPCOUNT) && surfaceDesc2.dwMipMapCount > 0) { surfaceDesc2.dwFlags |= DDSD_WIDTH | DDSD_HEIGHT; - surfaceDesc2.dwWidth = pow(2, surfaceDesc2.dwMipMapCount - 1); + surfaceDesc2.dwWidth = (DWORD)pow(2, surfaceDesc2.dwMipMapCount - 1); surfaceDesc2.dwHeight = surfaceDesc2.dwWidth; } // Compute mipcount diff --git a/ddraw/IDirectDrawX.cpp b/ddraw/IDirectDrawX.cpp index adf2a7b2..11deb206 100644 --- a/ddraw/IDirectDrawX.cpp +++ b/ddraw/IDirectDrawX.cpp @@ -1545,31 +1545,13 @@ HRESULT m_IDirectDrawX::Initialize(GUID FAR * lpGUID) if (Config.Dd7to9) { - // ToDo: If you already used the DirectDrawCreate function to create a DirectDraw object, this method returns DDERR_ALREADYINITIALIZED. - // If you do not call IDirectDraw7::Initialize when you use CoCreateInstance to create a DirectDraw object, any method that you - // call afterward returns DDERR_NOTINITIALIZED. - if (IsInitialize) - { - return DDERR_ALREADYINITIALIZED; - } - else - { - IsInitialize = true; - return DD_OK; - } + // Returns D3D_OK if successful, otherwise it returns an error. + return D3D_OK; } HRESULT hr = ProxyInterface->Initialize(lpGUID); - if (IsInitialize) - { - return hr; - } - else - { - IsInitialize = true; - return (hr == DDERR_ALREADYINITIALIZED) ? DD_OK : hr; - } + return (hr == DDERR_ALREADYINITIALIZED) ? DD_OK : hr; } // Resets the mode of the display device hardware for the primary surface to what it was before the IDirectDraw7::SetDisplayMode method was called. diff --git a/ddraw/IDirectDrawX.h b/ddraw/IDirectDrawX.h index d28bf2f1..5231c61e 100644 --- a/ddraw/IDirectDrawX.h +++ b/ddraw/IDirectDrawX.h @@ -11,7 +11,6 @@ class m_IDirectDrawX : public IUnknown, public AddressLookupTableDdrawObject ULONG RefCount4 = 0; ULONG RefCount7 = 0; - bool IsInitialize = false; bool Using3D = false; // Fix exclusive mode issue