Commit Graph

134 Commits

Author SHA1 Message Date
vsonnier
44a9274cb1 More fake partial template specialization 2019-03-01 22:18:43 +01:00
vsonnier
dd92e75cda Try to workaround explicit specialization in class scope error for GCC and friends 2019-02-28 22:05:27 +01:00
vsonnier
3b47045d28 Rework of DataElement to use more templates and much less memcpy... 2019-02-22 20:19:30 +01:00
vsonnier
2f84df3c47 Make DataTree throw exception objects, instead of dynamically allocated ones for simplicity 2018-06-08 05:58:55 +02:00
vsonnier
e46d7f9735 Migration to wxWidgets v3.11:
- Seen on Windows: Bookmarkview slow update because the controls are self-reacting to the rebuild control events, so fix nullify them during control rebuilding.
- Update OpenGL initialization using v3.1 level context and canvas attributes instead of the deprecated calls.
2018-03-11 11:47:14 +01:00
vsonnier
c1e60f31f5 Fix #615 Be smarter when looking for font resources 2018-02-15 19:02:56 +01:00
vsonnier
f1208c7f5c When saving bookmarks, use active information when available
+ Fixed std::string <=> std::wstring conversions using wxString
+ cleanups.
2018-01-08 19:26:34 +01:00
vsonnier
aec0100f78 ThreadBlockingQueue : remove useless/dangerous operations, forbid both copy and assignment. 2017-09-10 19:35:12 +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
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
8f608bbf5c Cleanup: remove some unused params and variables, conversion warnings seen with #550. 2017-05-29 20:22:10 +02:00
vsonnier
56b56685e0 Yet Another Semicolon After Endif left... (#549) 2017-05-27 15:28:42 +02:00
vsonnier
d170f731c5 Fix #549, plus more usual syntax for #548 2017-05-27 07:46:28 +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
af20f680a4 Clearer ThreadBlockingQueue impl by using a field to hold size... 2017-05-21 21:04:12 +02:00
vsonnier
41c7dd231b Fix tabs introduced in latest commits... 2017-05-21 10:03:21 +02:00
vsonnier
e0af609224 Use a circular buffer for ThreadBlockingQueue (allocation-free) 2017-05-21 09:39:29 +02:00
vsonnier
c1fef72103 Use more a reliable time source in Windows for the Timer class 2017-05-20 13:31:55 +02:00
vsonnier
0a19686b51 Remove 'threadlocal' pedantic and very limited usage that is not supported on all platforms 2017-04-05 19:28:18 +02:00
Charles J. Cliffe
8dfb8ea3f1 minor fixes 2017-02-16 21:54:18 -05:00
vsonnier
7d412eccb6 BLOCKING_QUEUE: display current Thread id in both hex and decimal so both worlds are happy (GDB and Visual Studio) 2017-02-14 18:42:12 +01:00
vsonnier
25f7ba386d BLOCKING_QUEUE: remove ThreadBlockingQueue dependency to ThreadQueue, remove ThreadQueue.h from CMakeLists 2017-02-14 18:42:11 +01:00
vsonnier
c7467a88bc BLOCKING_QUEUE: prepare by raising up max queue lenghts
BLOCKING_QUEUE: Replaced ThreadQueue usage by ThreadBlockingQueue usage
BLOCKING_QUEUE: instrument all push() with timeouts, showed some call have to be non-blocking...
BLOCKING_QUEUE: tuned push()/try_push()
2017-02-14 18:42:05 +01:00
vsonnier
d3db510643 pre-BLOCKING_QUEUE: Simplified, fixed ThreadQueue, VisualProcessor (use std:deque, cleaner templates, max_size fixes) 2017-02-12 12:53:50 +01:00
vsonnier
c00060a7d9 FIX: size_t definition not visible on some systems, so include stddef.h explicitly 2017-01-29 17:10:44 +01:00
vsonnier
115b0ffa58 CLEANUP: some compiler and static analysis warnings 2017-01-28 14:57:27 +01:00
Charles J. Cliffe
5c72b97309 Merge branch 'develop' into master 2017-01-02 21:22:13 -05:00
Charles J. Cliffe
3ec14fbe38 Licence fix, add SPDX-License-Identifier, remove unused code files 2017-01-02 21:07:43 -05:00
Charles J. Cliffe
68495b4d90 Dual bookmark backup files with user notification, auto-recovery and bail; save top level branch expand states 2016-12-27 13:01:19 -05:00
Charles J. Cliffe
cf056acfe6 Load/Save view ranges 2016-12-27 00:46:12 -05:00
Charles J. Cliffe
2cc05baaa1 Bookmarks/Recents now loading & saving 2016-12-13 21:09:44 -05:00
Charles J. Cliffe
746b7cfcae Bookmarks now save on exit; not loaded on startup yet. 2016-12-12 23:47:05 -05:00
Charles J. Cliffe
020cef12c9 Recents list, DataTree rewindAll(), Bookmark view updates 2016-10-05 19:10:01 -04:00
Charles J. Cliffe
95fd357c72 Add font scale support to meter panel 2016-07-21 18:43:11 -04:00
Charles J. Cliffe
4d2ea8d08a Merge pull request #398 from vsonnier/thread_clean_3
thread_clean_3: Multithreading AudioThread hardening, use of try_pop() and more.
2016-07-08 21:28:11 -04:00
vsonnier
21c8a81c32 TH_CLEAN_3.5: push() cleanup side of things, assure SDRThread::readStream() to actually check for full + make ThreadQueue notify even in case on not-successfull push(), make it spam notify_all() everytime 2016-07-08 23:30:15 +02:00
Charles J. Cliffe
baa5d93ba6 Merge branch 'master' into gain_gui_cleanup 2016-07-06 21:00:04 -04:00
Charles J. Cliffe
a87c58c4a8 Initial Meter Panel work 2016-07-03 20:59:49 -04:00
vsonnier
567d84711f THREAD_CLEAN_PART2: Assure correct terminate()/isTerminated(delay)/delete sequence +
Removed the NotifyQueue between DemodulatorInstance participants, actually not needed
since DemodulatorInstance::IsTerminated() is explicitly called on some events for cleanups

DELETE_CLEANUP: properly nullify deleted pointers when needed
2016-07-03 14:22:41 +02:00
Charles J. Cliffe
464055ff57 OSX bundled font fix-up 2016-06-28 19:36:37 -04:00
vsonnier
a558102cc5 Rewrite GLFont loading routine with correct paths computation 2016-06-25 17:51:22 +02:00
vsonnier
07102caf54 dB display truncated on the left at big zoom levels + Realign TextPanel font choice on existing fonts because scaling is quite ugly 2016-06-24 22:20:51 +02:00
vsonnier
78cfe9c755 DONE. Now GLFont.getFont() retturns a proxy that automatically selects the best font for the required size 2016-06-23 21:28:04 +02:00
vsonnier
83b62cddeb The quest continues, almost done, but have an idea to rework GLFont.drawString() completly, TODO next time 2016-06-22 21:21:32 +02:00
vsonnier
9962e606a6 FIX out-of-bounds dB display 2016-06-22 19:04:59 +02:00
vsonnier
85178095ca Reset all font caches when font size changes 2016-06-21 21:26:12 +02:00
vsonnier
f52bad6196 Make GLFont its own pixHeight, so don't provide it in drawString() anymore 2016-06-21 21:26:10 +02:00
vsonnier
26bf1d9927 GLFont doCacheGC() in one pass 2016-06-21 21:26:10 +02:00