James Turner
6ab7f68f4b
Bindings: don’t cache the command pointer
...
Caching it complicates add/remove command logic, so making a simple
fix for now, which can be back-ported to 2020.2; ideally we would
cache the pointer but have an invalidation scheme, but that’s
considerably more work and risk.
Relates to Sentry crash:
https://sentry.io/organizations/flightgear/issues/1858764364
2020-09-06 15:23:52 +01:00
James Turner
b2e149a737
Refactor SGBuildingBin
...
Trying to trace a crash that was reported, but along the way fix a leak
of BuildingBins. Also avoid allocating some std::strings on the heap.
2020-09-06 15:23:48 +01:00
Erik Hofman
e28c4fa5ca
Mipmapping requires a power-of-two destination buffer even if the source isn't. Neglecting this causes a massive bufferoverflow of the destination buffer. So for now we do not mipmap non-power-of-two textures and throw a warning. This affects at least the PC-9M and F-16, presumable many others. The effect will be a black texture when zoomed out and the proper texture when zooming in close enough.
2020-09-06 15:23:37 +01:00
Automatic Release Builder
61dc19f635
Fix for SGTexturedTriangleBin leaks
...
Adapted from next commit
0d5552851b
2020-09-06 15:23:21 +01:00
Automatic Release Builder
60634bc445
Fix include that dropped when squashing.
2020-08-26 14:21:45 +01:00
Hans Kunkell
b3e93eaf6e
new method: makeStringSafeForPropertyName, replaces invalid chars
2020-08-26 10:37:54 +01:00
James Turner
36dca92c2b
HTTPRepo: Fix ownership of HTTPDirectory
2020-08-26 10:37:54 +01:00
James Turner
5a1ed52d7c
Particles: rewrite global manager for thread-safety
...
Avoid re-registering the global node callback each time a new particle
animation is loaded, and use mutexes to protected all shared data.
2020-08-26 10:37:54 +01:00
James Turner
fd191b51ce
Avoid a race in MatModels loading
...
Add a mutex to ensure an SGMatModels only loads its models once. Caught
be ASan, hurrah.
2020-08-26 10:37:54 +01:00
James Turner
6167159795
API to reset the shared tree geometry
2020-08-26 10:37:54 +01:00
James Turner
672afdbc34
Fix for sprintf of nil numeric in Nasal
...
Spotted by valgrind, w00t. If you used a numerical formatter, such
as f,d or g, with. a nil value, we would read uninitialised data, and
generally get confused.
2020-08-26 10:37:54 +01:00
James Turner
27e61b3dec
Ensure SGTerraSync::unbind drops all properties
...
Avoid some noise on reset, by dropping /all/ our SGPropertyNodes
2020-08-26 10:37:54 +01:00
legoboyvdlp R
f1d00c9b40
Drizzle is considered to be light rain. Backportable to 2020.2. Fixes ticket 1792
2020-08-26 10:37:54 +01:00
James Turner
1b00ece8c4
SGBuildingBin: avoid read of un-inited memory
...
Where the building line is not as long as expected, ensure we read
valid memory.
2020-08-26 10:37:54 +01:00
James Turner
d0f24229b2
HTTP: Use curl_multi_wait everywhere
...
Also check the result of the curl methods, in case they fail
2020-08-26 10:37:54 +01:00
Richard Harrison
ab8795f6dc
Directional lighting fix
...
getLights modified to use points rather than triangles based on the configuration.
This fixes point lights (with directional disabled) on AMD
2020-08-26 10:37:42 +01:00
James Turner
2fe60c9635
Terraysnc: fix incorrect handling of ‘entirely ocean’ tiles
...
We had some confusion between two error codes, meaning we would log an
error (and treat as a failure) a pure ocean 1x1 area, even though this
was entirely correct and expected behaviour.
Terrasync.cxx expected REPO_ERROR_NOT_FOUND, we need to convert the
file-level error to that, and avoid logging a warning.
2020-08-25 21:10:54 +01:00
James Turner
27a3ee3bce
TerraSync: restart after max-errors is exceeded.
...
When we trip the max-error count for a session, back off for a period
of time and then retry (selecting a new TerraSync server).
2020-08-25 21:02:39 +01:00
James Turner
0721db3acd
TerraSync: handle reinit better
...
Fix various cases where re-init could get things blocked. Remove the
duplicate storage of the active paths; now we always check the primary
data, and hence it can’t be out of sync.
Also remove the obsolete persistent cache code.
Fixes some of the issues discussed in:
https://sourceforge.net/p/flightgear/codetickets/2308/
Further improvements still to come, especially to retry on a better
schedule for intermittent connections.
2020-08-25 21:02:16 +01:00
Richard Harrison
24b58cbe21
XMLSound bugfixes
...
- using expressions for pitch and volume didn't work
- multiple volume elements not computed properly
Discussion here: https://web.archive.org/web/20200730232940/http://fguk.me/forum/development-hangar/8360-supersonic-audio?start=40#46287
<volume>
<property>/a/v1</property>
<factor>0.1</factor>
</volume>
<volume>
<property>/a/v2</property>
<offset>1</offset>
<factor>-3</factor>
</volume>
<volume>
<property>/a/v3</property>
<offset>1</offset>
<factor>-1</factor>
</volume>
evaluates as follows:
update(): Have 3 volume entries
--> 0:prop /a[0]/v1[0] => 0.110000 factor = 0.100000 v=0.011000 offset 0.000000, now 0.000000, v=0.011000 vol=0.011000 ==> 0.011000
--> 1:prop /a[0]/v2[0] => 0.120000 factor = 3.000000 v=0.360000 -ve offset 1.000000 1.360000 = 0.014960 ==> 0.014960
--> 2:prop /a[0]/v3[0] => 0.130000 factor = 1.000000 v=0.130000 -ve offset 1.000000 1.130000 = 0.016905 ==> 0.016905
2020-08-04 11:58:27 +01:00
Richard Harrison
5b3274e688
Exclude images with less than 16 bits per pixel from the DDS Texture Cache
2020-08-04 11:58:13 +01:00
James Turner
fcd75cfae5
Logging: add log overload which copies filename
...
This is needed to fix a Valgrind error in the test-cases, due to logging
Nasal filenames which are GCed.
2020-08-04 11:58:05 +01:00
James Turner
6387a1d6d0
Fix compilation for some MSVC versions
2020-07-14 13:59:14 +01:00
Julian Smith
fc4ce2528b
Renamed version -> simgear-version to avoid breaking clang++ on OpenBSD.
...
It seems that clang++ headers #include <version>, which found simgear/version
because we need to put singear/ in include path for some code to compile.
2020-07-14 13:59:09 +01:00
James Turner
18d2bfcd8b
HTTP: allow CAINFO to be set
...
Env var is SIMGEAR_TLS_CERT_PATH
2020-07-14 13:58:43 +01:00
James Turner
6738a3aa2b
Helper to map string to log priority
2020-06-26 10:31:16 +01:00
Julian Smith
a8c1bef0bf
Avoid various gcc warnings.
2020-06-26 10:30:58 +01:00
James Turner
4faf0ea468
API to reset the resource manager, and remove
...
providers.
Needed to fix a bug with parsing -set.xml files in the launcher;
correctly loading XML needs the resource paths to be defined.
2020-06-26 10:30:47 +01:00
Lars Toenning
80cc09fe90
Fix compiler warning of different signedness
2020-06-26 10:30:37 +01:00
James Turner
ca8dbb985e
Fix zero-interval repeat on pick/knob animation
...
See:
https://sourceforge.net/p/flightgear/codetickets/2241/
Note did not adjust bug in knob-animation ignoring repeatable flag
(always marked repeatable) since this might break some aircraft.
2020-06-15 16:13:39 +01:00
James Turner
751cdc32a8
new version: 2020.2.1
2020-06-15 12:33:50 +01:00
Julian Smith
1d978429f5
simgear/props/props.cxx: Avoid possible SEGV e.g. if listener removes itself.
...
simgear/props/props_test.cxx: test for self-unregister.
SGPropertyNode::removeChangeListener() used to modify the _listeners vector or
even delete it and set _listeners to NULL, if a listener was removed.
This could cause a SEGV if removeChangeListener() was called from
a listener, because listeners are called from methods such as
SGPropertyNode::fireValueChanged() which iterate through _listeners and don't
expect it to be changed to NULL.
The fix here is to keep a track of whether we are iterating through the
_listeners vector; if we are, SGPropertyNode::removeChangeListener() sets the
entry to NULL, instead of removing it.
We have a new internal function forEachListener() which takes
care of the iterating details - incrementing/decrementing the new
_listeners->_num_iterators count and skipping NULL entries. Before returning,
if _num_iterators is now zero it removes any NULL entries in the vector of
listeners.
The nListeners() member is no longer inline, because it needs to ignore NULL
entries in the vector. And _listeners now points to an internally-defined
struct which contains a new _num_iterators as well as the vector of listeners.
Added self-unregister test to simgear/props/props_test.cxx.
2020-06-13 18:11:49 +01:00
James Turner
2b2e3ae5c4
Fix CMake value
2020-06-05 13:53:54 +01:00
James Turner
0e3ac7e078
Set CMake OpenGL VND policy
2020-06-05 13:32:43 +01:00
James Turner
01ab3b2385
New SGGeodesy::advance, taking degrees
2020-05-30 16:27:42 +01:00
James Turner
11cf87951c
SIMD flags: ensure we respect other compiler flags
...
Ensure we only ever extend the currently set compile flags when
ENABLE_SIMD is requested
2020-05-28 10:46:18 +01:00
James Turner
7c004a4c90
Fix compilation with Boost >= 1.73
2020-05-28 10:45:47 +01:00
James Turner
a48693d273
Kill explicit setting of compiler flags in Debug
...
Use the CMake defaults for this.
2020-05-24 14:32:13 +01:00
James Turner
12d57a6373
Adjust RelWithDebInfo optimisation for Clang
...
This should give a bit of speed boost to macOS official builds.
2020-05-13 14:23:00 +01:00
James Turner
c7c8fc7777
Better RelWithDebInfo flags for CL.exe
2020-05-08 14:31:44 +01:00
James Turner
6e054e57ef
Windows: ensure RelWithDebInfo is fast
...
Default CMake RelWithDebInfo pessimizes inlining
2020-05-07 14:13:54 +01:00
James Turner
1d89a76d13
Old-style texture compression: better check
...
Make even more sure new-style texture-compression is active, before
deciding which old-style mode to use.
2020-05-07 11:47:25 +01:00
James Turner
65925cccdf
Enable old-style texture compression
...
Thanks to Dany for tracking this down!
2020-05-05 20:40:29 +01:00
James Turner
898559ab31
Add copyPropertiesIf helper
2020-05-03 12:21:36 +01:00
James Turner
ad3621e23b
Add Canvas::Image.dirtyPixels()
2020-04-28 09:36:40 +01:00
James Turner
57b0f70a55
Nasal: improve message for non-object member access
...
Based on some discussion on this ticket:
https://sourceforge.net/p/flightgear/codetickets/2186/
Make this message slightly clearer.
2020-04-28 09:36:40 +01:00
Erik Hofman
8d6e543cc2
Only use readwav for OpenAL
2020-04-28 09:41:11 +02:00
James Turner
bd93fb279b
new version: 2020.2.0
2020-04-27 09:29:55 +01:00
James Turner
81bdae283a
new version: 2020.1.1
2020-04-27 09:29:54 +01:00
James Turner
00e25404c7
Add simgear::optional
...
This is a poor-man’s proxy for std::optional until we have it.
2020-04-25 18:05:59 +01:00