Commit graph

14 commits

Author SHA1 Message Date
Christoph Oelckers
dce6456994 - fix dynamic light setup.
The level’s global flag is unreliable and cannot be used. The operation this was initially supposed to skip cannot be skipped anyway so the impact should be minor.
2022-05-23 00:01:49 +02:00
Marisa Heit
31549997b4 Fix GC so collection rate is proportional to alloc rate
- Previous comments in dobjgc.cpp suggested that StepMul was used
  to determine how quickly garbage was collected based on how quickly
  memory was being allocated. This was not the case. Now it is.
- Remove calls to CheckGC from the thinkers. With GC running at a
  stable rate (once per frame), there should be no need to inject
  pauses into the collection process to keep it from injecting stutters
  (provided StepMul is sane). The risk of running out of memory because
  we don't run a collection pass absolutely every thinker should be
  practically zero.
- Reduce DEFAULT_GCMUL from 400 to 200, since it does what it says now
  instead of something else.
2022-01-11 13:01:31 +01:00
Christoph Oelckers
1d0aed219e - replaced MIN/MAX in all non-common code. 2021-10-30 10:16:52 +02:00
Christoph Oelckers
3ef60a40a5 - fixed particle processing in the main thinker loop
This may not be guarded by the dynamic light flags, only the light ticking may.
2021-09-24 08:33:37 +02:00
Christoph Oelckers
702b75e96a - fixed one frame activation delay for dynamic lights.
We cannot check HasDynamicLights in ProcessThinkers because it gets set too late.
2021-09-21 20:43:21 +02:00
Christoph Oelckers
6c12a8de12 - properly track whether some action in the current frame may have triggered a dynamic light activation. 2021-09-21 20:31:43 +02:00
Christoph Oelckers
139f501ec5 - run the dynamic light recreation loop before calling the light ticker.
This was done afterward which performed some needed cleanup too late.
2021-08-11 15:41:42 +02:00
Christoph Oelckers
1097bd6c73 - fixed: instead of checking gl_lights, better check Level->HasDynamicLights.
Especially in the thinker code this is needed for software rendering.
Strictly speaking, the software renderer should do the same, but it checks r_dynlight in so many places deep in the logic where the level is not available.
2021-08-11 14:09:00 +02:00
Christoph Oelckers
3adadfe4d3 - do not run the dynamic light ticker when lights are switched off. 2021-08-11 12:39:17 +02:00
Christoph Oelckers
5c392a220d - fixed: Actors moved to STAT_TRAVELLING need to preserve their JUSTSPAWNED flag.
Otherwise freshly spawned inventory items won't call PostBeginPlay.
2020-09-26 19:37:30 +02:00
Christoph Oelckers
7b292cca57 - split the serializer in two to keep the Doom specific parts out of the main file. 2020-04-11 20:20:53 +02:00
alexey.lysiuk
994960627b - added explicit clearing of global VM stask
When exception is thrown from JITed code, VM stask isn't cleared during unwinding
It needs to be clear explicitly to avoid memory leaks and references to destructed objects on shutdown

https://forum.zdoom.org/viewtopic.php?t=66172
2019-10-21 15:54:13 +03:00
alexey.lysiuk
f5d2063613 - do thinker profiling of internal dynlights only when they are present
There is no point to output zero calls and/or handle such case in profiling stats calculation
2019-08-31 13:20:10 +03:00
Christoph Oelckers
9045615a7a - renamed g_shared folder to playsim. 2019-07-14 13:24:18 +02:00
Renamed from src/g_shared/dthinker.cpp (Browse further)