2008-11-25, 01:18
I have a Antec Fusion case with a LCD/VFD display that didn't show xbmc-stuff (eg. playerstatus-icons and progressbar) as expected.
So here's what i've done to fix it.
1. The first problem was that some LCD-elements such as the progressbar was scrolling, wich looked awful.
I suspected that the width of the display was set too wide somewhere.
The xbmc-log showed that the display was 16x2 which is correct so the problem wasn't lcdproc or the lirc-imon-driver.
I dug thru the xbmc-source and found out that in XBMC/xbmc/Settings.cpp the display was defaulting to 20 characters.
So the solution for this was to create the file: ~/.xbmc/userdata/advancedsettings.xml and put these lines in there.
2. The second problem was that the status-icons (pause, ffwd, rwd, play) was not displayed correctly.
This was fixed by editing the following file:
XBMC/xbmc/utils/GUIInfoManager.cpp (Changes in red)
Actually only the last three lines worked (ffwd, rwd, play).
For some reason the character \240 doesn't work.
Maybe someone can explain that to me.
If you run the following commands (with lcdproc killed):
or
it displays the correct character, but not from the xbmc-source.
3. The third problem was that the block-characters used for the progressbar didn't show correctly, in fact wrong characters was displayed.
The full-block-characters showed up as the character ÿ.
This was fixed by editing the file:
XBMC/xbmc/utils/LCD.cpp (changes in red)
4. The fourth problem may not be a problem for outhers but it´s something that bothered me.
I wanted to display the clock positioned at the center of the LCD when XBMC is in screensaver-mode, and the only way i could come up with was to add some spaces to the left of the clock.
The problem was that this wasn't allowed because the spaces where to be "trimmed" by XBMC.
The solution was found in the file XBMC/xbmc/linux/XLCDproc.cpp where i commented out the following line:
So here's what i've done to fix it.
1. The first problem was that some LCD-elements such as the progressbar was scrolling, wich looked awful.
I suspected that the width of the display was set too wide somewhere.
The xbmc-log showed that the display was 16x2 which is correct so the problem wasn't lcdproc or the lirc-imon-driver.
I dug thru the xbmc-source and found out that in XBMC/xbmc/Settings.cpp the display was defaulting to 20 characters.
So the solution for this was to create the file: ~/.xbmc/userdata/advancedsettings.xml and put these lines in there.
Code:
<advancedsettings>
<lcd>
<rows>2</rows>
<columns>16</columns>
</lcd>
</advancedsettings>
2. The second problem was that the status-icons (pause, ffwd, rwd, play) was not displayed correctly.
This was fixed by editing the following file:
XBMC/xbmc/utils/GUIInfoManager.cpp (Changes in red)
Code:
Line 1194: strLabel.Format("[color=red]\240[/color]");
Line 1196: strLabel.Format("[color=red]\74[/color]:%ix", iPlaySpeed);
Line 1198: strLabel.Format("[color=red]\76[/color]:%ix", iPlaySpeed);
Line 1200: strLabel.Format("[color=red]\20[/color]");
Actually only the last three lines worked (ffwd, rwd, play).
For some reason the character \240 doesn't work.
Maybe someone can explain that to me.
If you run the following commands (with lcdproc killed):
Code:
perl -e 'print "\240"' > /dev/lcd0
Code:
perl -e 'print pack "c", 0xA0' > /dev/lcd0
3. The third problem was that the block-characters used for the progressbar didn't show correctly, in fact wrong characters was displayed.
The full-block-characters showed up as the character ÿ.
This was fixed by editing the file:
XBMC/xbmc/utils/LCD.cpp (changes in red)
Code:
Line 48: 0xff, 0x21, 0x20, 0x20, 0x20, 0x5c, 0x7c, 0x20, 0x22, 0x20, 0x20, [color=red]0x07[/color], [color=red]0x05[/color], [color=red]0x03[/color], [color=red]0x01[/color], [color=red]0x00[/color], // Custom characters
4. The fourth problem may not be a problem for outhers but it´s something that bothered me.
I wanted to display the clock positioned at the center of the LCD when XBMC is in screensaver-mode, and the only way i could come up with was to add some spaces to the left of the clock.
The problem was that this wasn't allowed because the spaces where to be "trimmed" by XBMC.
The solution was found in the file XBMC/xbmc/linux/XLCDproc.cpp where i commented out the following line:
Code:
Line 203: //strLineLong.Trim();