James Turner
0ddd3e7f2f
Add sg_location to all exceptions, add report flag
...
Move sg_location member up to the base clase, since it’s potentially
useful in more types.
Allow suppression of the report callback when the exception is thrown
2021-05-05 15:00:23 +01:00
James Turner
fe96298be5
Thread-safe error reporting in lowlevel.cxx
...
Use an exception rather than polling a flag, for checking errors
during BTG reading. This should allow us to give a correctly
identified error, at exactly the point the read fails.
2021-05-05 14:58:37 +01:00
James Turner
c6351292dd
TerraSync: add a warning file to the root dir.
...
Try to discourage users from adding custom content underneath the
Terrasync dir, since it can be over-written.
2021-04-23 12:15:34 +01:00
James Turner
e2caad3b0b
TerraSync: better reporting of permissions failures removing files
...
Log a ‘failed to remove orphan’ error as an error with the repository,
instead of failing the entire sync
2021-04-23 12:15:34 +01:00
James Turner
a095ab684c
ASan: fix a leak in GZ extraction
2021-04-23 11:55:02 +01:00
James Turner
fe41a03180
Asan: fix leaks in Catalog code
2021-04-23 11:54:56 +01:00
James Turner
0970bb1be2
Fix for local particle update
...
See issue at:
https://sourceforge.net/p/flightgear/codetickets/2568/
2021-03-24 09:59:13 +00:00
James Turner
c9d83fab6c
TerraSync: allow an explicit osm2city server
...
Fixes an error case where a manual TerraSync server is specified; we
would attempt to use an empty string as the OSM2City server, with
hilarious consequences.
Sentry-Id: FLIGHTGEAR-NCZ
2021-03-16 20:14:34 +00:00
James Turner
edcce32f24
Remove stray include of std::filesystem
2021-03-07 10:53:36 +00:00
James Turner
6f9f694eff
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-03-01 09:56:48 +00:00
James Turner
a0d7f0e172
TerraSync: allow separate OSM2City server
...
Lookup OSM2City using a separate service profile, and use this server
for requests for OSM2City suffix dirs.
2021-03-01 09:51:24 +00:00
James Turner
9f98e438cb
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-22 11:29:05 +00:00
James Turner
f029ca7b64
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-22 11:29:05 +00:00
James Turner
ca6c6dd6d3
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-22 11:10:37 +00:00
James Turner
92d053d850
Tolerate blank lines in buildings lists
2021-01-20 11:35:33 +00:00
James Turner
1d9fa929fa
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 22:41:42 +00:00
James Turner
bea88bb3a9
Fix BTG error reporting
...
Use gzerror, not strerror, for these codes.
2020-12-21 15:31:36 +00:00
James Turner
76540a211c
SGGeod: add static constructor of an invalid Geod
...
Use this to allow explicitly initializing a value which isValid
will return false for.
2020-12-17 12:55:30 +00:00
James Turner
904fc5a7dd
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-17 12:55:25 +00:00
James Turner
f50f383cc0
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-07 17:16:58 +00:00
James Turner
706ab387de
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-07 17:16:47 +00:00
James Turner
cddfdb7d1d
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-07 17:15:51 +00:00
James Turner
3c64578848
HTTPRepository: don’t crash on empty files
...
Fix some additional crash cases around 0-length files
2020-12-07 17:15:38 +00:00
James Turner
e1fe9b45e0
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-07 17:15:30 +00:00
James Turner
8fdc1d306f
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-12-07 17:15:17 +00:00
James Turner
bfcdf22705
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:23:44 +00:00
James Turner
837ba86d57
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-12 09:39:58 +00:00
James Turner
9305417207
Terrasync: tarball extraction, use larger buffer
...
Use a 1MB buffer, 2kByte is very 1979 :)
2020-11-01 11:11:31 +00:00
James Turner
11da8b33f9
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-11-01 11:11:27 +00:00
James Turner
c7b320eb55
Fix Airports/ initial sync
2020-11-01 11:11:23 +00:00
James Turner
72b2eb0ebf
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-11-01 11:11:19 +00:00
James Turner
ec3829addb
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-11-01 11:11:15 +00:00
James Turner
96bafef3f3
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-11-01 11:11:12 +00:00
James Turner
3ff3bd0a6c
Props: allow flushing the atomic change listener
...
Trying to narrow down causes of the ‘unregister listeners crashes on
shutdown’ reports.
2020-11-01 11:11:07 +00:00
James Turner
dafd185595
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-26 08:54:18 +00:00
James Turner
3753c62783
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-18 14:49:33 +01:00
James Turner
3e804605b7
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-18 14:49:33 +01:00
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
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
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
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
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
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
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
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
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
James Turner
c82a14c252
Nasal: fix build on non-C99 mode
...
It seems GCC at least is strict about C99 mode.
2020-04-16 16:44:20 +01:00
James Turner
faa559e9af
Nasal: add vecindex() built-in
2020-04-16 13:40:41 +01:00
James Turner
c51c0c43ed
Nasal: add more isTYPE helpers from Henning
2020-04-16 11:42:41 +01:00
James Turner
8626e0482d
Nasal: add some type-check helpers.
...
These avoid building a string for the result, as typeof() does
2020-04-14 13:24:06 +01:00
James Turner
c62c080a4b
Logging: enable the WinDebug callback using an env var.
...
Instead of hard-coding, add an env-var SG_WINDEBUG to enable the
logging to the Windows debug stream.
2020-04-10 19:50:58 +01:00
James Turner
c90ab3df5b
Packages: consider checksum failures for retry.
...
This means an out-of-sync mirror causes a retry on a different
mirror server.
2020-04-10 15:03:17 +01:00
James Turner
21e21a1fa8
Allow TiedPropertyList to fire valueChanged
2020-04-10 10:41:00 +01:00
James Turner
92ebdbfacc
Expose compare-version helper publicly.
...
This helper was added for Catalog version checking, but will be used in
FlightGear now, so move it to strutils.
2020-04-09 14:39:12 +01:00
James Turner
8dbabc8b43
Texture-compression fixes
...
Rename a highly confusing method, and disable the older texture-
compression code since it interacts badly with the new texture-cache.
2020-04-07 12:12:52 +01:00
James Turner
c83dc79357
Revert to C++11 for now, found an alternative solution.
2020-04-06 10:44:23 +01:00
James Turner
a53c1bfe8b
CMake logic to export debug symbols
2020-04-05 14:04:19 +01:00
James Turner
6185b8fd0d
Fix crash with Touch animation mouse-up
2020-04-05 14:04:19 +01:00
James Turner
9cdec99fa4
Quiet some warnings
2020-04-03 10:00:22 +01:00
James Turner
e9e2053c64
Strutils: add hex-decoding helper
...
This will be used to allow entering hex bytes in XML files, for HID
descriptor support on Windows.
2020-03-31 10:09:47 +01:00
James Turner
ec315bf26d
Fix thumbnail cache retrieval
...
Use direct reading of thumbnail-cache files, instead of using libCurl
2020-03-26 16:51:00 +00:00
James Turner
74c304097d
Fix for older libCurl versions
2020-03-26 16:51:00 +00:00
James Turner
d65bb58317
HTTP: increase the Curl download buffer size
...
This improves download performance with large files, i.e,
most of them.
2020-03-24 20:34:49 +00:00
James Turner
8cf11f9208
Packages: fix handling of unsafe paths in zips
...
This was breaking the P-51D which contains a mis-named PNG file which
tripped the unsafe path detection.
2020-03-24 13:51:57 +00:00
James Turner
40725a76ab
Packages: randomise mirror URL selection
...
Also add retry on mirrors when a download fails.
2020-03-21 18:31:53 +00:00
James Turner
c8d802bc1d
More SGPath / UTF-8 fixes
...
Use SGPath in more public APIs, so FlightGear doesn’t have to convert
and guess the conversion itself.
2020-03-15 14:26:42 +00:00
James Turner
c3a169319c
Fix UTF-8 shader path support
...
Work around osg::Shader::loadShaderFromSourceFile ’s lack of UTF-8
support by loading using our own istream, and then setting the text
directly.
2020-03-15 14:26:42 +00:00
James Turner
87da4680c7
Tweaks to Windows string conversion
...
Avoid use of code-cvt, and tolerate differences in compiler handling of
string literals (tested Clanged and MSVC, hopefully GCC is kind)
2020-03-14 20:10:20 +00:00
James Turner
b258bc598e
Load time-zones from UTF-8 paths correctly
...
Use _wfopen on Windows, after converting UTF-8 paths to wchar
2020-03-13 16:48:12 +00:00
James Turner
f25c0c60a8
Use UTF8 paths in nearly all places, for OSG
...
We already request OSG to use UTF8 paths, so ensure whenever we pass
an SGPath to OSG, we use the correct conversion function.
2020-03-13 09:50:43 +00:00