-
Notifications
You must be signed in to change notification settings - Fork 160
Description
GeneralsGameCode/GeneralsMD/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DDisplay.cpp
Lines 1801 to 1806 in 7ce6eeb
| if (DX8Wrapper::_Get_D3D_Device8() && (DX8Wrapper::_Get_D3D_Device8()->TestCooperativeLevel()) == D3D_OK) | |
| { //Checking if we have the device before updating views because the heightmap crashes otherwise while | |
| //trying to refresh the visible terrain geometry. | |
| // if(TheGlobalData->m_loadScreenRender != TRUE) | |
| updateViews(); | |
| TheParticleSystemManager->update();//LORENZEN AND WILCZYNSKI MOVED THIS FROM ITS NATIVE POSITION, ABOVE |
The ParticleSystemManager isn't updated if the Direct3D device is not cooperating. This happens when one's Windows account is locked ( Win key + L ). So if the game is running and creating new particle systems (PS) but the Windows account is locked, those PS keep accumulating and are not processed until the account is logged back in. The game keeps allocating more and more memory for all the PS. At some point the game may run out of memory and crash. Alternatively, the game may remain frozen because it does many searches through the PS list, which take a long time with 10'000s or 100'000s of PS.
Reproduction:
- Create a bunch of units like the GLA Rocket Buggies; 50 - 100 is a good number.
- Set them to force fire on the ground.
- Take note of current memory usage.
- Lock the Windows account.
- Wait for 30 - 60 seconds and log back in.
- Check the new memory usage and check whether the game is frozen.