pipelka / vdr-plugin-xvdr

DISCONTINUED - XVDR Plugin for VDR
GNU General Public License v2.0
43 stars 22 forks source link

picons are not working anymore #110

Closed AndreyPavlenko closed 10 years ago

AndreyPavlenko commented 10 years ago

I've a set of picons created using the serviceref utility. All these had been working for a long time, however, recently I noticed that picons are disappeared. I edited channels.conf and left only one channel there:

2X2;HTB+:12092:vC34M2O35S0:S36.0E:27500:310=2:410=rus@4:0:500,5601:21110:112:21:0

The service ref utility states that the corresponding picon should be: 2X2;HTB+ - 1_0_1_5276_15_70_1680000_0_0_0

However, in the XBMC (Frodo) log I found a message: Texture manager unable to load file: /usr/share/xvdr/picons/1_0_1_5276_15_70_8700000_0_0_0.png

As you can see, the file name is a bit different. I assume there was something changed in the latest vdr. My vdr version - 2.1.1.

pipelka commented 10 years ago

Strange. Do you know which one of the servicerefs is the right one ?

AndreyPavlenko commented 10 years ago

I don't know which one is correct, but I observe a difference between the serviceref utility and the file name expected by XBMC.

pipelka commented 10 years ago

Yes. I have the suspicion that the serviceref utility is still generating the right serviceref and the vdr internal version got hosed somehow. I just want to be sure that the serviceref utility is still working correctly.

Maybe "1_0_1_5276_15_70_1680000_0_0_0.png" exists in the picons dir ?

AndreyPavlenko commented 10 years ago

The file 1_0_1_5276_15_70_1680000_0_0_0.png does exist in the /usr/share/xvdr/picons dir, however, XBMC attempts to load /usr/share/xvdr/picons/1_0_1_5276_15_70_8700000_0_0_0.png.

pipelka commented 10 years ago

I found this in the vdr code: sources.c diff to latest 2.1.1

The last hunk is the interesting one. It seems East and West were swapped.

pipelka commented 10 years ago

Please check if the following (quick & dirty untested) patch fixes the problem:

diff --git a/src/xvdr/xvdrclient.c b/src/xvdr/xvdrclient.c
index 7af9aa8..a1a9460 100644
--- a/src/xvdr/xvdrclient.c
+++ b/src/xvdr/xvdrclient.c
@@ -84,6 +84,11 @@ cString cXVDRClient::CreateServiceReference(cChannel* channel)
   if(cSource::IsSat(channel->Source()))
   {
     hash = channel->Source() & cSource::st_Pos;
+
+#if VDRVERSNUM >= 20101
+    hash = -hash;
+#endif
+
     if(hash > 0x00007FFF)
       hash |= 0xFFFF0000;

AndreyPavlenko commented 10 years ago

It works now!

pipelka commented 10 years ago

Ok. Will merge, Thanks.