aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2009-05-16 19:04:44 +0200
committerFelix Domke <tmbinc@elitedvb.net>2009-05-16 19:04:44 +0200
commit34bb54f1a28201b896c06c6b4aedf11a1b25f6d2 (patch)
tree5191729c40d0708d00254740c610bf7a4dff3059 /lib
parent1bba7d19f64a7a2896bdb54a1c54c585f591cc8c (diff)
parent9f2d37189bea613bb562a4e8b69121572d8efe5f (diff)
downloadenigma2-34bb54f1a28201b896c06c6b4aedf11a1b25f6d2.tar.gz
enigma2-34bb54f1a28201b896c06c6b4aedf11a1b25f6d2.zip
Merge branch 'master' of /home/tmbinc/enigma2-git
Diffstat (limited to 'lib')
-rw-r--r--lib/dvb/epgcache.cpp65
-rw-r--r--lib/dvb/epgcache.h8
-rw-r--r--lib/dvb/pmt.cpp10
-rw-r--r--lib/python/Components/Converter/ServicePosition.py14
-rwxr-xr-x[-rw-r--r--]lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py36
-rw-r--r--lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py52
-rw-r--r--lib/python/Screens/InfoBarGenerics.py14
-rw-r--r--lib/python/Tools/Downloader.py53
-rw-r--r--lib/python/Tools/Makefile.am3
-rw-r--r--lib/service/servicemp3.cpp4
10 files changed, 172 insertions, 87 deletions
diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp
index fdcbe0e9..5069e8c3 100644
--- a/lib/dvb/epgcache.cpp
+++ b/lib/dvb/epgcache.cpp
@@ -303,6 +303,13 @@ void eEPGCache::DVBChannelRunning(iDVBChannel *chan)
eDebug("[eEPGCache] couldnt initialize schedule other reader!!");
return;
}
+
+ res = demux->createSectionReader( this, data.m_ViasatReader );
+ if ( res )
+ {
+ eDebug("[eEPGCache] couldnt initialize viasat reader!!");
+ return;
+ }
#ifdef ENABLE_PRIVATE_EPG
res = demux->createSectionReader( this, data.m_PrivateReader );
if ( res )
@@ -1115,7 +1122,7 @@ bool eEPGCache::channel_data::finishEPG()
eDebug("[EPGC] stop caching events(%ld)", ::time(0));
zapTimer->start(UPDATE_INTERVAL, 1);
eDebug("[EPGC] next update in %i min", UPDATE_INTERVAL / 60000);
- for (int i=0; i < 3; ++i)
+ for (unsigned int i=0; i < sizeof(seenSections)/sizeof(tidMap); ++i)
{
seenSections[i].clear();
calcedSections[i].clear();
@@ -1135,7 +1142,7 @@ void eEPGCache::channel_data::startEPG()
eDebug("[EPGC] start caching events(%ld)", ::time(0));
state=0;
haveData=0;
- for (int i=0; i < 3; ++i)
+ for (unsigned int i=0; i < sizeof(seenSections)/sizeof(tidMap); ++i)
{
seenSections[i].clear();
calcedSections[i].clear();
@@ -1186,6 +1193,14 @@ void eEPGCache::channel_data::startEPG()
m_ScheduleOtherReader->start(mask);
isRunning |= SCHEDULE_OTHER;
+ mask.pid = 0x39;
+
+ mask.data[0] = 0x40;
+ mask.mask[0] = 0x40;
+ m_ViasatReader->connectRead(slot(*this, &eEPGCache::channel_data::readDataViasat), m_ViasatConn);
+ m_ViasatReader->start(mask);
+ isRunning |= VIASAT;
+
abortTimer->start(7000,true);
}
@@ -1209,11 +1224,18 @@ void eEPGCache::channel_data::abortNonAvail()
}
if ( !(haveData&SCHEDULE_OTHER) && (isRunning&SCHEDULE_OTHER) )
{
- eDebug("[EPGC] abort non avail schedule_other reading");
+ eDebug("[EPGC] abort non avail schedule other reading");
isRunning &= ~SCHEDULE_OTHER;
m_ScheduleOtherReader->stop();
m_ScheduleOtherConn=0;
}
+ if ( !(haveData&VIASAT) && (isRunning&VIASAT) )
+ {
+ eDebug("[EPGC] abort non avail viasat reading");
+ isRunning &= ~VIASAT;
+ m_ViasatReader->stop();
+ m_ViasatConn=0;
+ }
#ifdef ENABLE_MHW_EPG
if ( !(haveData&MHW) && (isRunning&MHW) )
{
@@ -1225,12 +1247,14 @@ void eEPGCache::channel_data::abortNonAvail()
m_MHWConn2=0;
}
#endif
- if ( isRunning )
+ if ( isRunning & VIASAT )
+ abortTimer->start(300000, true);
+ else if ( isRunning )
abortTimer->start(90000, true);
else
{
++state;
- for (int i=0; i < 3; ++i)
+ for (unsigned int i=0; i < sizeof(seenSections)/sizeof(tidMap); ++i)
{
seenSections[i].clear();
calcedSections[i].clear();
@@ -1259,7 +1283,7 @@ void eEPGCache::channel_data::startChannel()
void eEPGCache::channel_data::abortEPG()
{
- for (int i=0; i < 3; ++i)
+ for (unsigned int i=0; i < sizeof(seenSections)/sizeof(tidMap); ++i)
{
seenSections[i].clear();
calcedSections[i].clear();
@@ -1287,6 +1311,12 @@ void eEPGCache::channel_data::abortEPG()
m_ScheduleOtherReader->stop();
m_ScheduleOtherConn=0;
}
+ if (isRunning & VIASAT)
+ {
+ isRunning &= ~VIASAT;
+ m_ViasatReader->stop();
+ m_ViasatConn=0;
+ }
#ifdef ENABLE_MHW_EPG
if (isRunning & MHW)
{
@@ -1307,6 +1337,15 @@ void eEPGCache::channel_data::abortEPG()
pthread_mutex_unlock(&channel_active);
}
+
+void eEPGCache::channel_data::readDataViasat( const __u8 *data)
+{
+ __u8 *d=0;
+ memcpy(&d, &data, sizeof(__u8*));
+ d[0] |= 0x80;
+ readData(data);
+}
+
void eEPGCache::channel_data::readData( const __u8 *data)
{
int source;
@@ -1329,6 +1368,12 @@ void eEPGCache::channel_data::readData( const __u8 *data)
source=SCHEDULE_OTHER;
map=2;
break;
+ case 0xD0 ... 0xDF:
+ case 0xE0 ... 0xEF:
+ reader=m_ViasatReader;
+ source=VIASAT;
+ map=3;
+ break;
default:
eDebug("[EPGC] unknown table_id !!!");
return;
@@ -1352,6 +1397,10 @@ void eEPGCache::channel_data::readData( const __u8 *data)
m_ScheduleOtherConn=0;
eDebugNoNewLine("schedule other");
break;
+ case VIASAT:
+ m_ViasatConn=0;
+ eDebugNoNewLine("viasat");
+ break;
default: eDebugNoNewLine("unknown");break;
}
eDebug(" finished(%ld)", ::time(0));
@@ -2983,7 +3032,7 @@ void eEPGCache::channel_data::readMHWData(const __u8 *data)
if ( state > 1 || // aborted
// have si data.. so we dont read mhw data
- (haveData & (SCHEDULE|SCHEDULE_OTHER)) )
+ (haveData & (SCHEDULE|SCHEDULE_OTHER|VIASAT)) )
{
eDebug("[EPGC] mhw aborted %d", state);
}
@@ -3149,7 +3198,7 @@ void eEPGCache::channel_data::readMHWData2(const __u8 *data)
if ( state > 1 || // aborted
// have si data.. so we dont read mhw data
- (haveData & (eEPGCache::SCHEDULE|eEPGCache::SCHEDULE_OTHER)) )
+ (haveData & (SCHEDULE|SCHEDULE_OTHER|VIASAT)) )
{
eDebug("[EPGC] mhw2 aborted %d", state);
}
diff --git a/lib/dvb/epgcache.h b/lib/dvb/epgcache.h
index fc42ded5..dfd19482 100644
--- a/lib/dvb/epgcache.h
+++ b/lib/dvb/epgcache.h
@@ -159,9 +159,9 @@ class eEPGCache: public eMainloop, private eThread, public Object
int prevChannelState;
__u8 state, isRunning, haveData;
ePtr<eDVBChannel> channel;
- ePtr<eConnection> m_stateChangedConn, m_NowNextConn, m_ScheduleConn, m_ScheduleOtherConn;
- ePtr<iDVBSectionReader> m_NowNextReader, m_ScheduleReader, m_ScheduleOtherReader;
- tidMap seenSections[3], calcedSections[3];
+ ePtr<eConnection> m_stateChangedConn, m_NowNextConn, m_ScheduleConn, m_ScheduleOtherConn, m_ViasatConn;
+ ePtr<iDVBSectionReader> m_NowNextReader, m_ScheduleReader, m_ScheduleOtherReader, m_ViasatReader;
+ tidMap seenSections[4], calcedSections[4];
#ifdef ENABLE_PRIVATE_EPG
ePtr<eTimer> startPrivateTimer;
int m_PrevVersion;
@@ -198,6 +198,7 @@ class eEPGCache: public eMainloop, private eThread, public Object
void storeTitle(std::map<__u32, mhw_title_t>::iterator itTitle, std::string sumText, const __u8 *data);
#endif
void readData(const __u8 *data);
+ void readDataViasat(const __u8 *data);
void startChannel();
void startEPG();
bool finishEPG();
@@ -210,6 +211,7 @@ public:
#ifdef ENABLE_MHW_EPG
,MHW=8
#endif
+ ,VIASAT=16
};
struct Message
{
diff --git a/lib/dvb/pmt.cpp b/lib/dvb/pmt.cpp
index 0198c8f7..da45c8eb 100644
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -399,10 +399,16 @@ int eDVBServicePMTHandler::getProgramInfo(struct program &program)
case ISO_639_LANGUAGE_DESCRIPTOR:
if (!isvideo)
{
+ int cnt=0;
const Iso639LanguageList *languages = ((Iso639LanguageDescriptor*)*desc)->getIso639Languages();
/* use last language code */
- for (Iso639LanguageConstIterator i(languages->begin()); i != languages->end(); ++i)
- audio.language_code = (*i)->getIso639LanguageCode();
+ for (Iso639LanguageConstIterator i(languages->begin()); i != languages->end(); ++i, ++cnt)
+ {
+ if (cnt == 0)
+ audio.language_code = (*i)->getIso639LanguageCode();
+ else
+ audio.language_code += "/" + (*i)->getIso639LanguageCode();
+ }
}
break;
case STREAM_IDENTIFIER_DESCRIPTOR:
diff --git a/lib/python/Components/Converter/ServicePosition.py b/lib/python/Components/Converter/ServicePosition.py
index b92af40b..56a6db67 100644
--- a/lib/python/Components/Converter/ServicePosition.py
+++ b/lib/python/Components/Converter/ServicePosition.py
@@ -21,11 +21,6 @@ class ServicePosition(Converter, Poll, object):
self.showHours = 'ShowHours' in args
self.showNoSeconds = 'ShowNoSeconds' in args
- if self.detailed:
- self.poll_interval = 100
- else:
- self.poll_interval = 500
-
if type == "Length":
self.type = self.TYPE_LENGTH
elif type == "Position":
@@ -37,7 +32,14 @@ class ServicePosition(Converter, Poll, object):
else:
raise ElementError("type must be {Length|Position|Remaining|Gauge} with optional arguments {Negate|Detailed|ShowHours|ShowNoSeconds} for ServicePosition converter")
- self.poll_enabled = self.type != self.TYPE_LENGTH
+ if self.detailed:
+ self.poll_interval = 100
+ elif self.type == self.TYPE_LENGTH:
+ self.poll_interval = 2000
+ else:
+ self.poll_interval = 500
+
+ self.poll_enabled = True
def getSeek(self):
s = self.source.service
diff --git a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
index 4c8167d4..6e444b7b 100644..100755
--- a/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
+++ b/lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
@@ -18,8 +18,8 @@ from os import system, path as os_path
class CIselectMainMenu(Screen):
skin = """
- <screen position="205,150" size="310,270" title="CI Assignment" >
- <widget name="CiList" position="10,10" size="290,200" scrollbarMode="showOnDemand" />
+ <screen position="180,150" size="350,270" title="CI assignment" >
+ <widget name="CiList" position="10,10" size="330,200" scrollbarMode="showOnDemand" />
<ePixmap position="10,210" size="290,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
<ePixmap pixmap="skin_default/buttons/red.png" position="10,220" size="140,40" alphatest="on" />
<ePixmap pixmap="skin_default/buttons/green.png" position="160,220" size="140,40" alphatest="on" />
@@ -54,7 +54,7 @@ class CIselectMainMenu(Screen):
for slot in range(NUM_CI):
state = eDVBCI_UI.getInstance().getState(slot)
if state == 0:
- appname = _("Slot %d") %(slot+1) + " - " + _("no module")
+ appname = _("Slot %d") %(slot+1) + " - " + _("no module found")
elif state == 1:
appname = _("Slot %d") %(slot+1) + " - " + _("init modules")
elif state == 2:
@@ -67,6 +67,10 @@ class CIselectMainMenu(Screen):
menuList.list = self.list
menuList.l.setList(self.list)
self["CiList"] = menuList
+ self.onShown.append(self.setWindowTitle)
+
+ def setWindowTitle(self):
+ self.setTitle(_("CI assignment"))
def greenPressed(self):
cur = self["CiList"].getCurrent()
@@ -100,7 +104,7 @@ class CIselectMainMenu(Screen):
class CIconfigMenu(Screen):
skin = """
- <screen position="60,80" size="595,436" title="CI Assignment" >
+ <screen position="60,80" size="595,436" title="CI assignment" >
<widget name="CAidList.desc" position="10,10" size="575,22" font="Regular;20" />
<widget name="CAidList" position="10,40" size="575,45" font="Regular;20" />
<widget name="ServiceList.desc" position="10,90" size="575,22" font="Regular;20" />
@@ -121,7 +125,7 @@ class CIconfigMenu(Screen):
Screen.__init__(self, session)
self.ci_slot=ci_slot
self.filename="/etc/enigma2/ci"+str(self.ci_slot)+".xml"
-
+
self["key_red"] = StaticText(_("delete"))
self["key_green"] = StaticText(_("add Service"))
self["key_yellow"] = StaticText(_("add Provider"))
@@ -138,7 +142,7 @@ class CIconfigMenu(Screen):
"ok": self.okPressed,
"cancel": self.cancel
}, -1)
-
+
print "[CI_Wizzard_Config] Configuring CI Slots : %d " % self.ci_slot
i=0
@@ -163,6 +167,10 @@ class CIconfigMenu(Screen):
# if config mode !=advanced autoselect any caid
if config.usage.setup_level.index <= 1: # advanced
self.selectedcaid=self.caidlist
+ self.onShown.append(self.setWindowTitle)
+
+ def setWindowTitle(self):
+ self.setTitle(_("CI assignment"))
def redPressed(self):
self.delete()
@@ -197,7 +205,7 @@ class CIconfigMenu(Screen):
service_name = service_ref.getServiceName()
if find_in_list(self.servicelist, service_name, 0)==False:
split_ref=service_ref.ref.toString().split(":")
- if split_ref[0] == "1": #== dvb service und nicht muell von None
+ if split_ref[0] == "1":#== dvb service und nicht muell von None
self.servicelist.append( (service_name , ConfigNothing(), 0, service_ref.ref.toString()) )
self["ServiceList"].l.setList(self.servicelist)
@@ -301,7 +309,7 @@ class CIconfigMenu(Screen):
class easyCIconfigMenu(CIconfigMenu):
skin = """
- <screen position="80,80" size="470,420" title="CI Assignment" >
+ <screen position="80,80" size="470,420" title="CI assignment" >
<widget name="ServiceList.desc" position="10,10" size="420,22" font="Regular;20" />
<widget name="ServiceList" position="10,40" size="450,340" scrollbarMode="showOnDemand" />
<ePixmap position="10,360" size="450,2" pixmap="skin_default/div-h.png" transparent="1" alphatest="on" />
@@ -317,7 +325,7 @@ class easyCIconfigMenu(CIconfigMenu):
ci=ci_slot
CIconfigMenu.__init__(self, session, ci_slot)
self.skin = easyCIconfigMenu.skin
-
+
self["actions"] = ActionMap(["ColorActions","SetupActions"],
{
"green": self.greenPressed,
@@ -327,7 +335,7 @@ class easyCIconfigMenu(CIconfigMenu):
"ok": self.okPressed,
"cancel": self.cancel
}, -1)
-
+
def bluePressed(self):
print "do nothing"
@@ -341,7 +349,7 @@ class CAidSelect(Screen):
<widget source="key_red" render="Label" position="10,240" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
<widget source="key_green" render="Label" position="160,240" zPosition="1" size="140,40" font="Regular;19" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
</screen>"""
-
+
def __init__(self, session, list, selected_caids):
self.skin = CAidSelect.skin
Screen.__init__(self, session)
@@ -365,6 +373,10 @@ class CAidSelect(Screen):
"green": self.greenPressed,
"red": self.cancel
}, -1)
+ self.onShown.append(self.setWindowTitle)
+
+ def setWindowTitle(self):
+ self.setTitle(_("select CAId's"))
def greenPressed(self):
list = self.list.getSelectionsList()
@@ -411,6 +423,7 @@ class myProviderSelection(ChannelSelectionBase):
def __onExecCallback(self):
self.showSatellites()
+ self.setTitle(_("Select provider to add..."))
def channelSelected(self): # just return selected service
ref = self.getCurrentSelection()
@@ -516,6 +529,7 @@ class myChannelSelection(ChannelSelectionBase):
def __onExecCallback(self):
self.setModeTv()
+ self.setTitle(_("Select service to add..."))
def doNothing(self):
print "nothing to do..."
diff --git a/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py b/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py
index c91c8588..6d404cf2 100644
--- a/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py
+++ b/lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py
@@ -16,6 +16,7 @@ from enigma import eConsoleAppContainer, eListbox, gFont, eListboxPythonMultiCon
from os import system, remove
import re
import urllib
+from Tools.Downloader import downloadWithProgress
from twisted.web import client
from twisted.internet import reactor, defer
from twisted.python import failure
@@ -24,57 +25,6 @@ from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
class UserRequestedCancel(Exception):
pass
-class HTTPProgressDownloader(client.HTTPDownloader):
- def __init__(self, url, outfile, headers=None):
- client.HTTPDownloader.__init__(self, url, outfile, headers=headers, agent="Dreambox .NFI Download Plugin")
- self.status = None
- self.progress_callback = None
- self.deferred = defer.Deferred()
-
- def noPage(self, reason):
- if self.status == "304":
- print reason.getErrorMessage()
- client.HTTPDownloader.page(self, "")
- else:
- client.HTTPDownloader.noPage(self, reason)
-
- def gotHeaders(self, headers):
- if self.status == "200":
- if headers.has_key("content-length"):
- self.totalbytes = int(headers["content-length"][0])
- else:
- self.totalbytes = 0
- self.currentbytes = 0.0
- return client.HTTPDownloader.gotHeaders(self, headers)
-
- def pagePart(self, packet):
- if self.status == "200":
- self.currentbytes += len(packet)
- if self.totalbytes and self.progress_callback:
- self.progress_callback(self.currentbytes, self.totalbytes)
- return client.HTTPDownloader.pagePart(self, packet)
-
- def pageEnd(self):
- return client.HTTPDownloader.pageEnd(self)
-
-class downloadWithProgress:
- def __init__(self, url, outputfile, contextFactory=None, *args, **kwargs):
- scheme, host, port, path = client._parse(url)
- self.factory = HTTPProgressDownloader(url, outputfile, *args, **kwargs)
- self.connection = reactor.connectTCP(host, port, self.factory)
-
- def start(self):
- return self.factory.deferred
-
- def stop(self):
- print "[stop]"
- self.connection.disconnect()
- #self.factory.deferred.errback(failure.Failure(UserRequestedCancel))
-
- def addProgress(self, progress_callback):
- print "[addProgress]"
- self.factory.progress_callback = progress_callback
-
class Feedlist(MenuList):
def __init__(self, list=[], enableWrapAround = False):
MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py
index c1618184..9adaa6db 100644
--- a/lib/python/Screens/InfoBarGenerics.py
+++ b/lib/python/Screens/InfoBarGenerics.py
@@ -1631,12 +1631,20 @@ class InfoBarAudioSelection:
idx = 0
while idx < n:
+ cnt = 0
i = audio.getTrackInfo(idx)
- language = i.getLanguage()
+ languages = i.getLanguage().split('/')
description = i.getDescription()
+ language = ""
- if LanguageCodes.has_key(language):
- language = LanguageCodes[language][0]
+ for lang in languages:
+ if cnt:
+ language += ' / '
+ if LanguageCodes.has_key(lang):
+ language += LanguageCodes[lang][0]
+ else:
+ language += lang
+ cnt += 1
if len(description):
description += " (" + language + ")"
diff --git a/lib/python/Tools/Downloader.py b/lib/python/Tools/Downloader.py
new file mode 100644
index 00000000..ffc24c1c
--- /dev/null
+++ b/lib/python/Tools/Downloader.py
@@ -0,0 +1,53 @@
+from twisted.web import client
+from twisted.internet import reactor, defer
+from twisted.python import failure
+
+class HTTPProgressDownloader(client.HTTPDownloader):
+ def __init__(self, url, outfile, headers=None):
+ client.HTTPDownloader.__init__(self, url, outfile, headers=headers, agent="Dreambox HTTP Downloader")
+ self.status = None
+ self.progress_callback = None
+ self.deferred = defer.Deferred()
+
+ def noPage(self, reason):
+ if self.status == "304":
+ print reason.getErrorMessage()
+ client.HTTPDownloader.page(self, "")
+ else:
+ client.HTTPDownloader.noPage(self, reason)
+
+ def gotHeaders(self, headers):
+ if self.status == "200":
+ if headers.has_key("content-length"):
+ self.totalbytes = int(headers["content-length"][0])
+ else:
+ self.totalbytes = 0
+ self.currentbytes = 0.0
+ return client.HTTPDownloader.gotHeaders(self, headers)
+
+ def pagePart(self, packet):
+ if self.status == "200":
+ self.currentbytes += len(packet)
+ if self.totalbytes and self.progress_callback:
+ self.progress_callback(self.currentbytes, self.totalbytes)
+ return client.HTTPDownloader.pagePart(self, packet)
+
+ def pageEnd(self):
+ return client.HTTPDownloader.pageEnd(self)
+
+class downloadWithProgress:
+ def __init__(self, url, outputfile, contextFactory=None, *args, **kwargs):
+ scheme, host, port, path = client._parse(url)
+ self.factory = HTTPProgressDownloader(url, outputfile, *args, **kwargs)
+ self.connection = reactor.connectTCP(host, port, self.factory)
+
+ def start(self):
+ return self.factory.deferred
+
+ def stop(self):
+ print "[stop]"
+ self.connection.disconnect()
+
+ def addProgress(self, progress_callback):
+ print "[addProgress]"
+ self.factory.progress_callback = progress_callback
diff --git a/lib/python/Tools/Makefile.am b/lib/python/Tools/Makefile.am
index fd23bd12..e7904d66 100644
--- a/lib/python/Tools/Makefile.am
+++ b/lib/python/Tools/Makefile.am
@@ -4,4 +4,5 @@ install_PYTHON = \
FuzzyDate.py XMLTools.py Directories.py NumericalTextInput.py \
KeyBindings.py BoundFunction.py ISO639.py Notifications.py __init__.py \
RedirectOutput.py DreamboxHardware.py Import.py Event.py CList.py \
- LoadPixmap.py Profile.py HardwareInfo.py Transponder.py ASCIItranslit.py
+ LoadPixmap.py Profile.py HardwareInfo.py Transponder.py ASCIItranslit.py \
+ Downloader.py
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 5866d069..b179da84 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -708,7 +708,7 @@ int eServiceMP3::getInfo(int w)
std::string eServiceMP3::getInfoString(int w)
{
- if ( !m_stream_tags )
+ if ( !m_stream_tags && w < sUser && w > 26 )
return "";
const gchar *tag = 0;
switch (w)
@@ -806,7 +806,6 @@ std::string eServiceMP3::getInfoString(int w)
case sTagChannelMode:
tag = "channel-mode";
break;
-
case sUser+12:
return m_error_message;
default:
@@ -1134,6 +1133,7 @@ eDebug("AUDIO STRUCT=%s", g_type);
g_free (g_lang);
// g_free (g_type);
}
+ m_event((iPlayableService*)this, evUpdatedEventInfo);
}
case GST_MESSAGE_ELEMENT:
{