Chris Tallon [Mon, 11 May 2020 22:54:57 +0000 (23:54 +0100)]
Bug fix: SurfaceVector/OsdVector: reference counts for style VectorHandles
SurfaceVector::drawText() would only call getStyleRef(DrawStyle)
once per string drawn. This resulted in a ref count of 1 regardless
of how many chars were drawn. Each time Boxx:draw() was called,
surface->fillblt would call removeCommands which dereferenced 1 for
each character. This eventually results in ref counts of zero or
negative. The GC deletes the DrawStyle/VectorHandle mapping if the
ref count is exactly zero, meaning just sometimes a style is deleted
when it is to be used. When this happens text on screen disappears.
This *might* also be the fix for a Windows client crashing bug.
Chris Tallon [Mon, 11 May 2020 20:59:38 +0000 (21:59 +0100)]
Remove some dead code, rename some things
Remove all Osd::getFD() functions
Rename struct SurfaceCommands to SurfaceInfo
Rename OsdVector::scommands to surfaces
Rename OsdVector::dereferenceSVGCommand to decrementAllRefCounts
Rename OsdVector::referenceSVGCommand to incrementAllRefCounts
Chris Tallon [Thu, 7 May 2020 14:48:08 +0000 (15:48 +0100)]
Rework SleepTimer
Remove thread and use Timers instead
Reuse same Boxxes when displaying
Move all logic to SleepTimer class from display classes
Use i18n
Chris Tallon [Mon, 20 Apr 2020 16:41:46 +0000 (17:41 +0100)]
Control/main/winmain/util reorganisation
Move all common module startup/shutdown code from main/winmain to control
Move common global functions from main/winmain to util
Chris Tallon [Thu, 12 Mar 2020 22:16:18 +0000 (22:16 +0000)]
Work on VAudioSelector class
Fix some casts
Switch to C++ casts
All compiler warnings
Switch to std::string for audio/subs channel name
Use a vector of objects rather than pointers in channel lists
Code reformatted with astyle
Init-lists for constructors
Brace-init in class header
Update GPL notices
Remove a dead constructor from header
Chris Tallon [Wed, 19 Feb 2020 15:36:57 +0000 (15:36 +0000)]
WIP done(ish). Reorganise input system
Split Remote (base class) / RemoteWin / RemoteLinux(inc CEC) /
(defunct) RemoteLirc into separate classes
Replace with: InputLinux, InputCEC, InputUDP, InputWin, (InputLirc)
And InputMan to manage them all.
Move UDP class into Input system
Now any combination of input modules can be active.
Added pipe-quit wait style to DSock
Switch InputUDP to std::thread
Move static strings functions to InputMan.
Split translist into individual Input classes.
Remove all old/new remote stuff - has never been active on RPi.
Drop libcec3 support
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