Thank you for your reply!

I do not use multi-threading so it is not related to that. Though I do
have located the error. It seems as if the application only hangs/delays
application exit, when I load a texture file with DirectX. To be
specific, the function in this case is D3DXCreateTextureFromFileExW.

I still do not see though why the terminate function call fails. Since
the same code works on my other computer. I've also used DirectX debug,
and checking all HRESULTs (success or failure basically). The DirectX
debug output does not display any errors nor warnings and all HRESULTs
returns successfully. The texture loaded with the function does also
work flawlessly, likewise the free memory functions for the textures.

Below is the code that I use for loading and releasing textures:

class (...)

IDirect3DTexture9 LoadTexture(IDirect3DDevice9 device, string fileName, D3DXIMAGE_INFO * info = NULL)
{
        // Check if the texture has already been allocated
        IDirect3DTexture9 * pTexture = (fileName in m_textures);
                
        // Return it then
        if(pTexture !is null)
                return *pTexture;
                
        // If not, create a new one
        IDirect3DTexture9 texture;
                
        // Allocate It
if(FAILED(D3DXCreateTextureFromFileExW(device, fileName.toUTF16z, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_DEFAULT, 0, info, NULL, &texture)))
                return null;
                
        // Return it
        return m_textures[fileName] = texture;
}

void Destroy()
{
        foreach(string key; m_textures.keys)
                m_textures[key].Release();
}

// The associative array
IDirect3DTexture9[string] m_textures;

Reply via email to