Opened 14 years ago

Closed 14 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.

  1. 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.

  1. 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.

Should also fix #280 & #317.

Paul

Attachments (7)

mythtv.diff.gz (15.0 KB) - added by Paul 14 years ago.
patch to existing lcddevice.cpp/h and themedmenu.cpp
programs.tar.gz (18.1 KB) - added by Paul 14 years ago.
new files required by patch
lcddevice.cpp (15.3 KB) - added by Paul 14 years ago.
since there are a lot of changes to lcddevice.cpp it might be easier just to replace the entire file?
lcddevice.h (7.0 KB) - added by Paul 14 years ago.
same goes for the lcddevice.h
lcdpatch_v2.tar.gz (38.6 KB) - added by Paul 14 years ago.
Updated patch - Same files as before all in one zip file
lcdpatch_v3.tar.gz (40.7 KB) - added by Paul 14 years ago.
Updated patch (version 3)
lcdpatch_v4.tar.gz (40.7 KB) - added by Paul 14 years ago.
Fixes a bug introduced in the last version where it didn't always update the LCD after a recording finished

Download all attachments as: .zip

Change History (15)

Changed 14 years ago by Paul

Attachment: mythtv.diff.gz added

patch to existing lcddevice.cpp/h and themedmenu.cpp

Changed 14 years ago by Paul

Attachment: programs.tar.gz added

new files required by patch

Changed 14 years ago by Paul

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 14 years ago by Paul

Attachment: lcddevice.h added

same goes for the lcddevice.h

Changed 14 years ago by Paul

Attachment: lcdpatch_v2.tar.gz added

Updated patch - Same files as before all in one zip file

comment:1 Changed 14 years ago by Paul

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 14 years ago by skd5aner@…

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 14 years ago by skd5aner@…

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 14 years ago by Paul

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 14 years ago by skd5aner@…

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 14 years ago by anonymous

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.

Changed 14 years ago by Paul

Attachment: lcdpatch_v3.tar.gz added

Updated patch (version 3)

comment:7 Changed 14 years ago by Paul

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 14 years ago by Paul

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

comment:8 Changed 14 years ago by Isaac Richards

Resolution: fixed
Status: newclosed

(In [7424]) Big patch from Paul to move the LCD handling into a separate server.

Closes #324 and #317.

Note: See TracTickets for help on using tickets.