James Turner
6319254d71
Fix ownership of SGLight::appendLight, using a ref_ptr
...
Fix some other C++11-isms as well.
2021-02-11 11:23:38 +00:00
James Turner
1ad7161465
SGLight: use copyProperties
2021-02-10 14:51:18 +00:00
James Turner
6a78bc2cdb
Fix VPB compilation with OSG 3.4.x
2021-02-10 14:51:02 +00:00
James Turner
9561895335
Text-animation: fix missing encoding specification
...
Ensure we can pass full UTF-8 strings into text animations. Will consider
for back-port after discussion on the devel list.
Ticket-Id: https://sourceforge.net/p/flightgear/codetickets/2512/
2021-02-07 13:02:31 +00:00
James Turner
b6c0f5ba00
Particles: fix handling of world-attached particles
...
Fix the cull callback to continue with normal culling. Also move
where the particle frame is added to the scene graph, to be sure
we don’t modify the scene during OSG traversals.
2021-02-07 11:38:04 +00:00
James Turner
be49f880b8
Fix HTTPClient reset() behaviour
...
Ensure all data members are correctly re-initialzied when doing a reset.
This shoed up as negative ‘bytes downloaded’ counts after a TerraSync
abandon and retry.
2021-02-05 10:37:23 +00:00
James Turner
059285ed6f
Particles: replace use of ParticleSystemUpdater
...
Extend our own particle manager to replace the OSG particle system
updater. This fixes thread-safety and also timing (better match to
simulation dt values). We also use weak pointers (observer_ptr in
OSG terminology) to ensure particle systems are released once their
frame is gone.
2021-02-03 21:47:51 +00:00
James Turner
0b9849d232
CMake: remove .cmake extensions
...
These seem to break include()’s regular path searching, which is odd.
2021-01-10 13:32:59 +00:00
James Turner
fa1f13cbe2
CMake: add upstream FindLibLZMA.cmake
...
Required since older CMake versions of this don't define an imported target
2021-01-10 11:56:22 +00:00
James Turner
d4a7cb1ee2
ArchiveExtractor .Xz compression of tar-balls
...
Allow use of LibZLMA / XZ compressed tarballs, which are significantly
smaller. Extend unit-tests to cover this.
2021-01-09 16:30:50 +00:00
James Turner
14494afd2f
Tolerate blank lines in buildings lists
2021-01-08 19:39:37 +00:00
James Turner
9fbf56004b
HTTPRepository: improving handling of archives
...
Avoid hard-coding the archive extension, and ensure the extracted
archive directory is not orphaned on update. Finally, use the
literal filename in the .dirindex when computing the hash, rather
than adding a .tgz extension.
2021-01-08 19:39:14 +00:00
James Turner
161f76508d
TerraSync: allow separate OSM2City server
...
Lookup OSM2City using a separate service profile, and use this server
for requests for OSM2City suffix dirs.
2021-01-08 19:38:02 +00:00
James Turner
08906ebbb0
Launhcer: fix crashes adding a catalog
...
Traversing a container which is modified causes crashes, take a copy
during traversal for firePackageStatus.
Sentry-Id: FLIGHTGEAR-CJF
Sentry-Id: FLIGHTGEAR-CJ5
2021-01-01 15:34:17 +00:00
James Turner
284667c18f
Fix BTG error reporting
...
Use gzerror, not strerror, for these codes.
2020-12-21 13:26:04 +00:00
James Turner
b660061812
Fix Nasal GC errors on tests/reset
...
Ensure the Context temps are cleared, and when recycling an naCode,
ensure old values are cleared explicily.
Sentry-Id: FLIGHTGEAR-Y
2020-12-13 17:26:27 +00:00
James Turner
deda20d5bd
SGGeod: add static constructor of an invalid Geod
...
Use this to allow explicitly initializing a value which isValid
will return false for.
2020-12-13 17:26:27 +00:00
James Turner
02cf42359d
Reporting of std::bad_alloc in Subsystem::update
...
Trying to trace down our bad-alloc exception, starting with the simplest
place for now.
2020-12-03 21:37:26 +00:00
James Turner
4271b710ef
Add reporting callback option to SimGear
...
Allows us to trigger an error logging callback explicitly, which can
be used to drive Sentry.io on the FlightGear side.
2020-12-03 21:37:26 +00:00
James Turner
191d546b54
TerraSync: stronger fix for handling 0-byte files
...
Change logic so we create an empty file for such cases, i.e exactly
matching the repository. This simplifies logic in downstream code,
compared with not creating a local file.
Add a test-case to cover this
Modify TerraSync to detect a failure of Airports_archive downloading,
and fall back to file-by-file updating.
2020-12-03 16:40:48 +00:00
James Turner
57a4dc53f2
HTTPRepository: don’t crash on empty files
...
Fix some additional crash cases around 0-length files
2020-12-02 21:28:37 +00:00
James Turner
e370477e4e
Unzip: adjust error reporting mechanism
...
Don’t use local exception throw+catch to report failures in extracting
a zip archive, since this generates noise in Sentry.
2020-12-02 12:12:56 +00:00
James Turner
c88b8b201a
State-machines: don’t require name for transitions
...
Allow anonymous transitions, since the name is purely informational
(unlike for states).
Sentry-Id: FLIGHTGEAR-9H
2020-11-30 16:17:59 +00:00
James Turner
de268300fb
TerraSync: fix crashes with null file return
...
Not sure how this is happening, but, check for a null file object
in FileGetRequest::onDone.
2020-11-29 16:22:21 +00:00
James Turner
ca857fcb25
Strutils: add printf format validation
...
Moved from NewGUI code in FG, better it lives here for re-use.
2020-11-10 23:49:25 +00:00
James Turner
7f0a83388d
DNSClient: own requests, and cancel them on timeout
...
Fixes crashes where a request times-out, but then is completed by
UDN sometime afterwards, with a free-d object. Have the DNS::Client own
requests, and be able to retrieve the udns_query to cancel them, in
the timeout case.
Fixes a couple of Sentry reports.
2020-11-04 22:31:43 +00:00
James Turner
99bd9bb4c0
Terrasync: tarball extraction, use larger buffer
...
Use a 1MB buffer, 2kByte is very 1979 :)
2020-10-30 22:50:44 +00:00
James Turner
8d6d671cc1
TerraSync: switch to per-directory hash caching
...
Avoid a central hash cache becoming enormous, now we use the selective
download scheme for the tile dirs.
Hash name is changed to co-exist with older versions.
2020-10-30 22:49:53 +00:00
James Turner
990c53fc9c
Fix Airports/ initial sync
2020-10-30 19:23:00 +00:00
James Turner
0dd046065d
TerraSync: avoid 404s to probe missing tiles
...
Use the top-level dirIndex files to determine if a 1x1 tile dir
exists, instead of proving the server via a 404. This reduces the
number of requests we make considerably, which is … important.
2020-10-30 16:45:45 +00:00
James Turner
1ab1cae199
TerraSync: validate local dirs incrementally
...
Add a process() method to HTTPRepository, and use this to
incrementally validate subdirs after the .dirIndex is received. This
avoids large pauses of the TerraSync thread, when all of Airports/
is validated at once.
2020-10-30 11:51:26 +00:00
James Turner
87558f8dde
TerraSync: use an unordered_map for the hash cache
...
Linear-scan is a bit slow in debug builds, for the large Airports/ tree;
switch to an unordered_map.
Will back-port to the LTS once tested a bit more.
2020-10-29 23:13:10 +00:00
James Turner
e04249ba48
Props: allow flushing the atomic change listener
...
Trying to narrow down causes of the ‘unregister listeners crashes on
shutdown’ reports.
2020-10-29 17:26:38 +00:00
James Turner
f489232cdb
Fix for crash reported by Michael Danilov
...
In case uDNS returns a NULL txt pointer, don’t try to create a
std::string from it, since this will crash,
See: https://sourceforge.net/p/flightgear/codetickets/2398/
2020-10-25 18:59:37 +00:00
James Turner
83500dd413
CMake: use same 3rdParty logic as FlightGear
...
Avoids need to specify the 3rd-party dir, in the standard/fgmeta
layout of source directories, and accept more combinations of path,
when the user specifies a value.
2020-10-20 16:51:20 +01:00
James Turner
670460a079
Set GCC RelwtihDebInfo opt flags
2020-09-29 17:40:25 +01:00
James Turner
4560095c36
Change props.cxx to throw std::exception
...
Throwing std::string is slightly unconventional, switch to throwing
exceptions inheriting std::exception.
2020-09-10 11:25:15 +01:00
James Turner
1341d1e1f2
Missed fix for logging in the test-suite
2020-09-08 12:34:37 +01:00
James Turner
051c920a99
Fix Linux compilation
...
Missing <cstring> header for strdup.
2020-09-08 08:15:41 +01:00
James Turner
0efcc14e91
Add MANDATORY_INFO log priority.
...
New log-level to avoid using ‘ALERT’ for expected mandatory messages,
since I want to do error collection on real alerts in a future commit.
As part of this, split logstream.hxx into separate header files, and
add a new virtual hook to LogCallback which takes the complete log-entry
2020-09-07 14:44:29 +01:00
James Turner
c7f013e7e5
Don’t wipe startup message on pausing logging.
2020-09-07 14:42:16 +01:00
James Turner
19ace8f0f9
Silence an alert message
2020-09-06 14:48:17 +01:00
James Turner
908496d43d
ASan: make copied files in log entries safe at init.
...
Ensure that if we copy file-names of log entries while startup
logging is active, we free them, but only once startup logging is
disabled, or on shutdown. This is needed to avoid crashes when
we use file-name copying for the Qt message handler.
2020-09-05 10:43:01 +01:00
James Turner
52c0f04e6e
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-04 10:51:32 +01:00
James Turner
f6656354b8
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-03 20:35:50 +01:00
James Turner
6f2b81b477
Fix for the fact we find_package(AAX) all the time.
...
Since we probe for AeonWave first, we set AAX_LIBRARY to NOT_FOUND,
which then upsets CMake if we try to use it. So add some temporary
ugly logic, until I have time to define a proper ALIAS target for the
audio backend.
2020-08-24 11:14:16 +01:00
James Turner
bab083d072
For static builds, ensure we find the sound library
...
Should fix Erik’s issue with AeonWave.
2020-08-23 18:10:49 +01:00
James Turner
2c4120974c
Follow rule of three for HTTPRepo:ChildInfo
2020-08-23 18:10:17 +01:00
James Turner
8b14e56f88
HTTPRepo: Fix ownership of HTTPDirectory
2020-08-23 18:08:49 +01:00
James Turner
e85a3207ac
Add newer FindGDAL with imported target support
2020-08-19 09:22:52 +01:00
James Turner
2846c5e579
Ensure simgear_config.h is round when building HLA
2020-08-19 09:22:33 +01:00
James Turner
456c63935c
Cmake refresh
...
Use target objects everywhere, and simplify handling of system vs
local dependencies.
2020-08-18 11:40:27 +01:00
James Turner
3b41b0c6d3
Particles: fix a deadlock condition
2020-08-17 15:04:16 +01:00
James Turner
84c15f6384
Enable ASan for clang
2020-08-17 10:20:26 +01:00
James Turner
209b60504d
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-16 19:49:26 +01:00
James Turner
297e509576
Avoid a race in MatModels loading
...
Add a mutex to ensure an SGMatModels only loads its models once. Caught
be ASan, hurrah.
2020-08-14 16:48:51 +01:00
James Turner
b874201806
API to reset the shared tree geometry
2020-08-14 15:40:47 +01:00
James Turner
e659ad3872
Destructor tweaks from some animation nodes
2020-08-14 11:12:51 +01:00
James Turner
b8182a4d29
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-14 09:42:14 +01:00
James Turner
7234b57288
Set OSG Object names on SGSky stuff
...
This is to help with debugging when nodes/effects dangle.
2020-08-11 17:19:01 +01:00
James Turner
bf7b064bbe
Ensure SGTerraSync::unbind drops all properties
...
Avoid some noise on reset, by dropping /all/ our SGPropertyNodes
2020-08-11 17:17:58 +01:00
James Turner
abb1cd02cd
SGBuildingBin: avoid read of un-inited memory
...
Where the building line is not as long as expected, ensure we read
valid memory.
2020-08-07 17:48:21 +01:00
James Turner
57c7d58f79
HTTP: Use curl_multi_wait everywhere
...
Also check the result of the curl methods, in case they fail
2020-08-07 17:47:34 +01:00
James Turner
7943353a2a
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-05 15:20:55 +01:00
James Turner
f72e2ae644
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-05 15:18:30 +01:00
James Turner
ece7dab47c
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-03 18:01:34 +01:00
James Turner
2622004af4
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-07-17 11:54:50 +01:00
James Turner
ec36ca8e71
Nasal CppBind: restrict which exceptions are caught
...
The previous catch policy breaks unit-testing, since CppUnit relies
on a special Exception type.
This could be made conditional based on testing or not, but trying the
simple way initially.
2020-07-08 15:16:27 +01:00
James Turner
286e2967fd
Fix compilation for some MSVC versions
2020-07-04 14:43:44 +01:00
James Turner
3fccee6e38
HTTP: allow CAINFO to be set
...
Env var is SIMGEAR_TLS_CERT_PATH
2020-06-25 16:13:09 +01:00
James Turner
7fc82a26bf
Helper to map string to log priority
2020-06-25 11:00:27 +01:00
James Turner
a128272816
Fix CMake include paths
2020-06-24 13:57:27 +01:00
James Turner
2b391ef671
Bundle Cmake FindCURL, for imported target support
...
This is the one from CMake 3.17, it should work fine with 3.10 but
let’s see.
2020-06-24 11:12:01 +01:00
James Turner
abb73c566e
Update to C++17.
...
This can be reverted easily, but let’s see if it goes.
2020-06-22 20:39:45 +01:00
James Turner
346344ee09
C++17: use an OBJECT_LIBRARY to build HLA
...
This allows us to easily have different CXX version for the HLA code,
to the rest of the project.
2020-06-21 19:31:35 +01:00
James Turner
9ccbf539c1
Raise minimum OSG version to 3.4.1
2020-06-18 17:22:55 +01:00
James Turner
720f681e0f
Raise Cmake/Compiler versions for Next
2020-06-18 12:58:47 +01:00
James Turner
aa0f02706f
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-17 11:48:59 +01:00
James Turner
60dcf00f2b
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:11:18 +01:00
James Turner
3075b8bcc4
new version: 2020.3.0
2020-06-15 12:33:50 +01:00
James Turner
751cdc32a8
new version: 2020.2.1
2020-06-15 12:33:50 +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
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
James Turner
5c52cdc255
Fix for crash on reset:
...
https://sourceforge.net/p/flightgear/codetickets/2217/
Ensure that subsystem lookup during its own removal, returns nullptr.
Otherwise we cache an about-to-be dead pointer, which is Bad (TM)
2020-04-22 10:55:41 +01:00
James Turner
17d7808200
Remove a log message
2020-04-22 10:54:44 +01:00
James Turner
f144bd5a89
CanvasImage: fix updating after fillRect / setPixel
2020-04-18 21:31:16 +01:00
James Turner
b72553f6f0
Nasal: add isscalar() for Henning
2020-04-18 18:06:35 +01:00