Commit Graph

318 Commits

Author SHA1 Message Date
Charles J. Cliffe
3009da6194 Merge remote-tracking branch 'origin/master' into code_quality 2019-03-14 21:15:07 -04:00
vsonnier
5ab44e3104 Use spin-locks for short-lived, non-recursive locking sequences 2019-03-03 10:36:10 +01:00
vsonnier
3b47045d28 Rework of DataElement to use more templates and much less memcpy... 2019-02-22 20:19:30 +01:00
Charles J. Cliffe
9ed085123a More AppFrame cleanup, active/current modem verbage adjustments 2019-02-11 22:59:43 -05:00
Charles J. Cliffe
1f70f9189e AppFrame clean-up, first pass 2019-01-22 00:01:31 -05:00
vsonnier
b27a8890d6 Fix #689: Wrong setAudioSampleRate code, thanks @GkvJeep 2018-11-14 20:16:11 +01:00
vsonnier
00c0693574 Fix #675 cut-n-paste giving wrong demod data queue (thanks @GkvJeep) plus boost of AudioThread queue size to prevent stuttering at very high CPU loads 2018-08-31 20:21:45 +02:00
vsonnier
2f84df3c47 Make DataTree throw exception objects, instead of dynamically allocated ones for simplicity 2018-06-08 05:58:55 +02:00
vsonnier
cf06709cb4 Fix memory leak of the previous commit 2018-06-07 21:44:17 +02:00
vsonnier
3e4aadfaef Fix #659 : Allow manual editing of user_labels in normal ASCII 2018-06-06 20:49:37 +02:00
vsonnier
00a864f741 Fix #635 Round 2 for Bookmarkview on Windows, should be OK now 2018-03-24 08:45:50 +01:00
Charles J. Cliffe
7baaca1216 OSX crash-on-exit fix, File menu tidying, Confirm bookmark reset 2018-01-14 18:56:30 -05:00
vsonnier
26deefd606 Added #583: add periodic file generation, plus other options:
- Added a Recording menu,
git commit -m Added
2018-01-13 11:50:31 +01:00
vsonnier
978cf492f8 Merge remote-tracking branch 'origin/master' into audio_recording 2018-01-09 07:07:11 +01:00
vsonnier
fc0f20f07d Removed recording duration limitation:
- Limit WAV size to 2GB for maximum compatibility,
- Continue recording on another file when size gets too big (XXX_001.wav, then XXX_002.wav and so on)
- The sequence assure up to 2000GB worth of recording which should be enough
- Changed file pattern to international Year.Month.Day so its recognizable whether you are English of French or whatever :)
2018-01-07 08:59:39 +01:00
vsonnier
8f45451df2 Choose a valid audio output if the modem-saved one is not recognized. 2018-01-06 16:15:40 +01:00
vsonnier
8daadc3603 Missing trace in AudioSink queue saturation 2018-01-06 15:10:25 +01:00
vsonnier
1dbfcedcd2 Fix to record below-squelch levels as audio silence 2018-01-06 14:19:32 +01:00
Charles J. Cliffe
be75c62778 Menu and demod display tweaks 2018-01-02 23:51:32 -05:00
Charles J. Cliffe
e6cd2ae774 AppImage fix - put_time req. GCC 5+ 2017-12-31 20:59:06 -05:00
Charles J. Cliffe
5c45c1cf6b Record muted, toggle-all recording /w shift-R, status texts 2017-12-29 22:46:39 -05:00
Charles J. Cliffe
b9e4f6aeba Recording path notify, bookmark panel record buttons, tweaks and adjustments 2017-12-04 22:44:47 -05:00
Charles J. Cliffe
326a993a29 Sequence recording on format change; user label as filename when available 2017-11-16 23:53:30 -05:00
Charles J. Cliffe
6af64752be Merge branch 'master' into audio_recording 2017-11-01 22:34:28 -04:00
vsonnier
d8ff4ea1de Squash some warnings with std::shared_ptr init seen on Ubuntu 16.04 2017-10-29 15:06:24 +01:00
vsonnier
3cc49bdb15 Fixes #581 ?: Do not set std::shared_ptr to nullptr in constructors (useless anyway) since they could be wrongly interpreted 2017-10-16 18:50:55 +02:00
Charles J. Cliffe
38fab6ac51 Add 'R' toggle key + fixes from initial testing 2017-10-12 00:08:22 -04:00
Charles J. Cliffe
f8e51df8cd Demod instance start/stop recording setup 2017-10-09 20:07:40 -04:00
Charles J. Cliffe
c202d99a2a initial audio sink file and thread handling rough-in 2017-09-26 23:25:55 -04:00
vsonnier
030628c5ed SDRPostThread is better using try_push, restore previous audio-related code in DemodulatorInstance 2017-09-02 16:24:25 +02:00
vsonnier
9bbcb582e3 Fix hang when the active demodulator goes out-of-bandwwidth by changing sample rate 2017-08-31 20:51:37 +02:00
vsonnier
3842cf087f More terminate()-and-flush calls missed before 2017-08-29 18:48:59 +02:00
vsonnier
3f90cbb858 Flush queues on terminate() calls to unblock push()s and so ease threads termination 2017-08-28 20:53:21 +02:00
vsonnier
b52c4ac8a6 This lock is actually needed, restore it. 2017-08-27 13:35:11 +02:00
vsonnier
37712c7a81 Simplify SDRPostThread: no longer binding methods, directly use the true list of demodulators 2017-08-27 12:39:28 +02:00
vsonnier
a8f8f4a7e2 Initial commit: working... 2017-08-27 11:11:30 +02:00
vsonnier
c112026a2c Make processing queues timed-push, to be able to escape deadlocks. Rollback 'restart device when blocked' that is ineffective in practice. 2017-08-26 23:34:48 +02:00
vsonnier
e32e687fe8 Make IOThreads terminate() fully non-blocking and misc.
- Thanks to timed-pop() usage, it is no longer needed to nudge queues with dummy to wake them
- Less bad luck to be stuck there
- Misc: leave the trace about the audio thread staturation, useful despite it raises some alarm among users...
2017-08-14 09:46:53 +02:00
vsonnier
c64baab99d Threads vs. Queues lifetimes, cleanups.
- Ideally Queues must outlive the threads using them, but wasn't done so. Yes, std::shared_ptr them!
- Now queues are always valid in the context of the threads using them.
- No longer need tedious queues deallocation by the original owner.
- Misc cleanups.
2017-08-13 19:19:25 +02:00
vsonnier
98c7c30aee Yet another Thread termination problem found, and try killing the app if the closing turns bad 2017-08-13 12:11:14 +02:00
vsonnier
e67a29f5b6 Don't get stuck when closing application just because some Demodulators refuse to die 2017-08-12 11:30:32 +02:00
Dell-Ray Sackett
ab6cb059b9 boolean not a valid keyword
changed boolean to bool in garbageCollect
2017-06-01 21:12:06 -07:00
Dell-Ray Sackett
b315bac97f Change boolean to bool
void DemodulatorMgr::garbageCollect(boolean forcedGC)
should be 
void DemodulatorMgr::garbageCollect(bool forcedGC)
2017-06-01 21:05:49 -07:00
vsonnier
3604b7f1ff Even better thread and application termination:
- Now that timed-pop()/try_pop() prevent indefinite blocking it is best to flush() on thread stopping to unblock push()
- Reworked a bit the CubicSDR::OnExit() sequence, see comments.
2017-06-01 19:57:58 +02:00
vsonnier
8f608bbf5c Cleanup: remove some unused params and variables, conversion warnings seen with #550. 2017-05-29 20:22:10 +02:00
vsonnier
44cdfa8521 Make ReBuffer also GC its own memory + cleanups:
- Use deque in ReBuffer instead of vector (as before) because it allows freeing its memory
- Random cleanup: remove mutable when not needed.
2017-05-25 16:39:01 +02:00
vsonnier
9b0ce69e8f Use the nuclear option to solve the hung problem:
Besides deadlocks, a thread can in theory get stuck in a blocking pop(),
not seeing the stopping flag in particular. So assure liveness by making all
pop() timed pop.
2017-05-25 09:32:27 +02:00
vsonnier
77a82e1617 Another fix for the neverending hung application bugs:
- Clear up DemodulatorInstance garbage collection, only do it in a single thread (AppFrame::OnIdle)
- Add a specific mutex lock for the list of deleted demodulators,
- Add a specific lock to control DemodulatorInstance thread lifetimes, protecting IsTerminated() of concurrent join and delete
2017-05-25 08:03:08 +02:00
vsonnier
4b323e9863 Make ReBuffer refcount management automatic, using std::shared_ptr:
- No longer need to call setRefCount() / decRefCount()
- Restore old ThreadBlockingQueue using std::deque, for std::shared_ptr correct behaviour.
2017-05-24 12:28:37 +02:00
vsonnier
c8cca67fc7 Bookmarks: fix for #525 item 2, other cleanups. 2017-04-01 19:38:08 +02:00