Opened 19 years ago
Closed 18 years ago
#324 closed enhancement (fixed)
Patch to move LCD control to new mythlcdserver
Reported by: | Paul | Owned by: | Isaac Richards |
---|---|---|---|
Priority: | minor | Milestone: | 0.19 |
Component: | mythtv | Version: | head |
Severity: | medium | Keywords: | lcd |
Cc: | Ticket locked: | no |
Description
This patch fixes a couple of problems with the current implementation of the LCD output.
- If you have more than one program that creates an LCD object
to update the LCD they each create a new set of screens and widgets which causes the LCD to display strange sequences of screens. The LCDd server isn't smart enough to recognise the screens were created using the same client name and screen names etc.
- If you start another process from the frontend like using an external player in
MythVideo? or MythDVD or start MythBrowser? for example it causes the LCD display to freeze until control is passed back to the frontend.
This patch fixes both problems by moving the control of the LCD to a separate process 'mythlcdserver'. Clients talk to the server though a socket. The public interface to the LCD class is the same so no need to change any of the plugins or mythtv to use it. The LCD class will start the mythlcdserver if necessary.
There is another advantage to using a separate process to look after the LCD, it doesn't require the frontend or even the backend to be running for it to work so can be started early in the boot process if you want. There is even a parameter you can pass to the mythlcdserver that will display a start-up message for a set time or until a client is connected. Better than displaying the user unfriendly LCDproc server screen I think.
There is two things I can't test - the set LED's stuff and the key press support. My LCD doesn't support either of them so if someone could test and report back.
Paul
Attachments (7)
Change History (15)
Changed 19 years ago by
Attachment: | mythtv.diff.gz added |
---|
Changed 19 years ago by
Attachment: | lcddevice.cpp added |
---|
since there are a lot of changes to lcddevice.cpp it might be easier just to replace the entire file?
Changed 19 years ago by
Attachment: | lcdpatch_v2.tar.gz added |
---|
Updated patch - Same files as before all in one zip file
comment:1 Changed 19 years ago by
I've replaced the original patch with an updated one.
This one adds a new 'RESET' command that can be sent to the server which causes it to reload all the LCD settings from the database.
Changes the LCD device display setup page so all the options will now fit on the page properly. Also sends a RESET to the mythlcdserver after making changes on the setttings page so it will re-load the new settings.
Adds a small delay after automatically starting the mythlcdserver from the LCD class to give it time to initialize before we try to connect to it
Paul.
comment:2 Changed 19 years ago by
Are there any plans for mythtv to support the CVS version of LCDProc (0.5)? I've noticed there are some significant performance enhancements of 0.5 over 0.4.5. Since the work is being put into place to improve the LCD control of myth, perhaps it could also address support for .5.
CVS for LCDProc v0.5 -http://cvs.sourceforge.net/viewcvs.py/lcdproc/ Info on v0.5 - http://lcdproc.org/devel.php3 User Documentation on v0.5 - http://lcdproc.sourceforge.net/docs/current-user-html/ Development Doc on v0.5 - http://lcdproc.sourceforge.net/docs/current-dev-html/
comment:3 Changed 19 years ago by
I found this: http://www.gossamer-threads.com/lists/mythtv/dev/125940?search_string=lcdproc;#125940
I'm not sure it was ever integrated into myth. Perhaps it can be implemented into mythlcdserver
comment:4 Changed 19 years ago by
Are there any plans for mythtv to support the CVS version of LCDProc (0.5)?
I've not tried it but it should already support LCDProc 0.5?
Paul
comment:5 Changed 19 years ago by
Paul, I believe you are right. Sorry for not checking first, but I verified and it looks like it does. I'm going to test right now by installing it and see if it works as-is before your submitted patches against current head.
comment:6 Changed 19 years ago by
It'll work - lcdprocclient.cpp in mythlcdserver has the code to reverse the priotities that made it work with the cvs version. So unless something else has changed again, it looks like it'll be fine.
comment:7 Changed 19 years ago by
Updated patch added to ticket.
Fixes potential problem with querying the backend in a custom event.
Fixes the missing SET_GENERIC_PROGRESS command.
Adds --verbose, --logfile and --debuglevel parameters to better control where and how much output mythlcdserver shows. Reworks the debug messages to use the new run time options rather than the compile time options.
Add a readme.
Paul
Changed 19 years ago by
Attachment: | lcdpatch_v4.tar.gz added |
---|
Fixes a bug introduced in the last version where it didn't always update the LCD after a recording finished
patch to existing lcddevice.cpp/h and themedmenu.cpp