Chris Tallon [Wed, 5 Feb 2020 18:01:21 +0000 (18:01 +0000)]
Rework master loop
Implement thread safe MessageQueue
All postMessage* calls replaced with a single safe-to-call anywhere postMessage()
Rewrite main command loop to use new locking around MessageQueue
Deleted Command::masterMutex
Use condition variable in MessageQueue/Command to wait on rather than going into Remote
Implemented new thread loop in Remote. Reports input events by Message
Completely replaced signal handling system
Revert Linux compiler to GCC
Revert Linux linker to GCC LD
This will be broken for Windows - remote class needs updating
Chris Tallon [Wed, 29 Jan 2020 15:23:52 +0000 (15:23 +0000)]
WIP
Code cleaning and reformatting
Remove some ancient commented out log lines
Implemented more brace-init
Remove some old-style casts
More GPL headers updated
Split Message::parameter union into separate variables
Rename parameter.num to parameter, parameter.handle to data
Completed MessageQueue call changes
Chris Tallon [Sun, 26 Jan 2020 21:33:03 +0000 (21:33 +0000)]
v0.6 dev
Update some GPL headers
Don't import std by "using namespace std"
Start implementing brace-init initialisation
General code cleanup
Start implementing things calling MessageQueue::postMessage* instead of Command::
Removed Osd::init() parameter
Removed some log lines, some old comments
Chris Tallon [Sun, 26 Jan 2020 01:40:51 +0000 (01:40 +0000)]
MVP code removal
Remove Wwss class
Remove LedMVP class
Remove AudioMVP class
Remove VideoMVP class
Remove OsdMVP class
Remove RemoteMVP class
Remove SurfaceMVP class
Remove all MTD classes
Remove various MVP code
Code cleanup
Compiler warning fixes
Chris Tallon [Sat, 25 Jan 2020 21:57:45 +0000 (21:57 +0000)]
Begin v0.6 refurb
Simplify GNUmakefile
Reorganise objects declarations in objects.mk and makefiles
Switch to clang compiler
Switch to gold linker
Stop building deps file on "make clean"
New option to GNUmakefile: SKIPDEPS=1 to skip building deps file
Make build less verbose
New option to GNUmakefile: VERBOSE=1 for all compiler output
Drop obsolete -D__STDC_CONSTANT_MACROS
Drop MVP code from GNUmakefile
Declared C++ standard to be C++14
Enabled many compiler warnings
Removed ticonfig.c
Renamed PLATTFORM_RASPBERRY to PLATFORM_RASPBERRY
Chris Tallon [Mon, 30 Dec 2019 15:36:51 +0000 (15:36 +0000)]
Fix resuming recording directly after stopping it
If a recording is playing and the user presses stop, then play
the recording is started from the beginning. Caused by
commit fa854a3abe995de8e3a06c422a535fc0e4a8484a.
Chris Tallon [Fri, 4 Oct 2019 15:47:19 +0000 (16:47 +0100)]
Display channel name, duration, resume point and size on recording info screen
Move framesToHMSF to RecInfo class
Bump VDR protocol version requirement
Chris Tallon [Thu, 30 Mar 2017 17:20:45 +0000 (18:20 +0100)]
Fix segfault when using subtitles
The segfault occurs in pthread_exit which points at memory corruption...
The problem:
Play live/recording, switch subtitles on. No subtitle packets arrive from
the demuxer (a channel without subtitles or just a part of a programme with
no dialogue).
Navigate or stop (anything to switch from playing to stopped).
cTimeMs returns a small positive integer because it has never been
initialised with anything other than 0.
This value is negated inside an unsigned creating a very large number
for "wakeup" which causes targetTime to overflow to
a negative number. This is supplied to pthread_cond_timedwait which
causes the spin.
Something about this situation causes pthread_exit to segfault
when DVBSubtitles->threadStop() is called.
Also fixed missing else brackets in cTimeMs constructor.