mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
amd64: fix multithread, fix vgui, fix physmodels
This commit is contained in:
@@ -517,7 +517,7 @@ void CMaterialSystem::CleanUpErrorMaterial()
|
||||
//-----------------------------------------------------------------------------
|
||||
CMaterialSystem::CMaterialSystem()
|
||||
{
|
||||
m_nRenderThreadID = 0xFFFFFFFF;
|
||||
m_nRenderThreadID = (uintp)-1;
|
||||
m_hAsyncLoadFileCache = NULL;
|
||||
m_ShaderHInst = 0;
|
||||
m_pMaterialProxyFactory = NULL;
|
||||
@@ -2785,8 +2785,8 @@ IMaterial* CMaterialSystem::FindMaterialEx( char const* pMaterialName, const cha
|
||||
{
|
||||
// We need lower-case symbols for this to work
|
||||
int nLen = Q_strlen( pMaterialName ) + 1;
|
||||
char *pFixedNameTemp = (char*)stackalloc( nLen );
|
||||
char *pTemp = (char*)stackalloc( nLen );
|
||||
char *pFixedNameTemp = (char*)malloc( nLen );
|
||||
char *pTemp = (char*)malloc( nLen );
|
||||
Q_strncpy( pFixedNameTemp, pMaterialName, nLen );
|
||||
Q_strlower( pFixedNameTemp );
|
||||
#ifdef POSIX
|
||||
@@ -2888,6 +2888,9 @@ IMaterial* CMaterialSystem::FindMaterialEx( char const* pMaterialName, const cha
|
||||
}
|
||||
}
|
||||
|
||||
free(pTemp);
|
||||
free(pFixedNameTemp);
|
||||
|
||||
return g_pErrorMaterial->GetRealTimeVersion();
|
||||
}
|
||||
|
||||
@@ -3547,7 +3550,7 @@ void CMaterialSystem::ThreadExecuteQueuedContext( CMatQueuedRenderContext *pCont
|
||||
m_pRenderContext.Set( &m_HardwareRenderContext );
|
||||
pContext->EndQueue( true );
|
||||
m_pRenderContext.Set( pSavedRenderContext );
|
||||
m_nRenderThreadID = 0xFFFFFFFF;
|
||||
m_nRenderThreadID = (uintp)-1;
|
||||
}
|
||||
|
||||
IThreadPool *CMaterialSystem::CreateMatQueueThreadPool()
|
||||
|
||||
@@ -572,7 +572,7 @@ public:
|
||||
MaterialLock_t Lock();
|
||||
void Unlock( MaterialLock_t );
|
||||
CMatCallQueue * GetRenderCallQueue();
|
||||
uint GetRenderThreadId() const { return m_nRenderThreadID; }
|
||||
ThreadId_t GetRenderThreadId() const { return m_nRenderThreadID; }
|
||||
void UnbindMaterial( IMaterial *pMaterial );
|
||||
|
||||
IMaterialProxy *DetermineProxyReplacements( IMaterial *pMaterial, KeyValues *pFallbackKeyValues );
|
||||
@@ -617,7 +617,7 @@ private:
|
||||
|
||||
CMaterialDict m_MaterialDict;
|
||||
CMatLightmaps m_Lightmaps;
|
||||
CThreadLocal<IMatRenderContextInternal *> m_pRenderContext;
|
||||
CTHREADLOCAL(IMatRenderContextInternal *) m_pRenderContext;
|
||||
CMatRenderContext m_HardwareRenderContext;
|
||||
|
||||
CMatQueuedRenderContext m_QueuedRenderContexts[2];
|
||||
@@ -698,7 +698,7 @@ private:
|
||||
|
||||
const char * m_pForcedTextureLoadPathID;
|
||||
FileCacheHandle_t m_hAsyncLoadFileCache;
|
||||
uint m_nRenderThreadID;
|
||||
ThreadId_t m_nRenderThreadID;
|
||||
bool m_bAllocatingRenderTargets;
|
||||
bool m_bInStubMode;
|
||||
bool m_bGeneratedConfig;
|
||||
|
||||
@@ -4039,7 +4039,7 @@ void CTexture::DeleteIfUnreferenced()
|
||||
if ( ThreadInMainThread() )
|
||||
{
|
||||
// Render thread better not be active or bad things can happen.
|
||||
Assert( MaterialSystem()->GetRenderThreadId() == 0xFFFFFFFF );
|
||||
Assert( MaterialSystem()->GetRenderThreadId() == (uintp)-1 );
|
||||
TextureManager()->RemoveTexture( this );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ public:
|
||||
virtual CMatCallQueue *GetRenderCallQueue() = 0;
|
||||
|
||||
virtual void UnbindMaterial( IMaterial *pMaterial ) = 0;
|
||||
virtual uint GetRenderThreadId() const = 0 ;
|
||||
virtual ThreadId_t GetRenderThreadId() const = 0 ;
|
||||
|
||||
virtual IMaterialProxy *DetermineProxyReplacements( IMaterial *pMaterial, KeyValues *pFallbackKeyValues ) = 0;
|
||||
};
|
||||
|
||||
@@ -1819,7 +1819,7 @@ void CTextureManager::RestoreTexture( ITextureInternal* pTexture )
|
||||
//-----------------------------------------------------------------------------
|
||||
void CTextureManager::CleanupPossiblyUnreferencedTextures()
|
||||
{
|
||||
if ( !ThreadInMainThread() || MaterialSystem()->GetRenderThreadId() != 0xFFFFFFFF )
|
||||
if ( !ThreadInMainThread() || MaterialSystem()->GetRenderThreadId() != (uintp)-1 )
|
||||
{
|
||||
Assert( !"CTextureManager::CleanupPossiblyUnreferencedTextures should never be called here" );
|
||||
// This is catastrophically bad, don't do this. Someone needs to fix this. See JohnS or McJohn
|
||||
@@ -2368,7 +2368,7 @@ void CTextureManager::RemoveTexture( ITextureInternal *pTexture )
|
||||
|
||||
Assert( pTexture->GetReferenceCount() <= 0 );
|
||||
|
||||
if ( !ThreadInMainThread() || MaterialSystem()->GetRenderThreadId() != 0xFFFFFFFF )
|
||||
if ( !ThreadInMainThread() || MaterialSystem()->GetRenderThreadId() != (uintp)-1 )
|
||||
{
|
||||
Assert( !"CTextureManager::RemoveTexture should never be called here");
|
||||
// This is catastrophically bad, don't do this. Someone needs to fix this.
|
||||
|
||||
Reference in New Issue
Block a user