Lust und Zeit verhalten sich jüngst sehr ambivalent.
Jetzt kommt ja wieder das Programmierer-Wetter. Danke für die Infos.
Lust und Zeit verhalten sich jüngst sehr ambivalent.
Jetzt kommt ja wieder das Programmierer-Wetter. Danke für die Infos.
Hi, sorry dass ich nicht reagiert habe. Bei mir ist deine Mail offenbar im Spam gelandet. Jedenfalls habe ich sie entweder nicht erhalten oder übersehen. Wie dem auch sei, ich seh mir das Problem die Tage mal an.
Warum die libtntdb jetzt rumzickt, kann ich mir nicht erklären aber das bekomme ich schon noch heraus.
Welche libtntdb-Version setzt ihr ein?
PS: bitte stellt mir auf der Plugin-Seite einen Bug ein mit den Details zu den Fehlern, danke!
Kann ja nicht gehen:
korrigier mal bitte
else if(Schedule->Modified() > lastModified){
+ targets.push_back(*event->ChannelID().ToString());
modified = true;
break;
}
in
else if(Schedule->Modified() > lastModified){
+ targets.push_back(*Schedule->ChannelID().ToString());
modified = true;
break;
}
event ist in dem Zweig gar nicht gesetzt.
Bitte prüf nochmal, ob die Trebier für SQLite wirklich richtig installiert sind. Wie bereits geschrieben haben sich alle Probleme meist darauf bezogen.
An den Rest: Ich habe den Service X_MS_MediaReceiverRegistrar implementiert. Er gibt momentan pauschal immer 1 zurück, wenn ein Gerät autorisiert werden soll. Ziel des ganzen soll ein Device-Management sein, mit dem man bestimmte Einstellungen je Gerät vornehmen kann. Beispiel: VPlayer für Android kann die Limits für maximal anzuzeigende Elemente, die durch DLNA vorgegeben werden nicht korrekt auswerten, so das momentan maximal 30 Einträge angezeigt werden. Später sollen diese Einstellungen geändert werden können.
Einen Profiler/Provider für JPEGs gibts auch bald.
Oha. Dann hab ich das falsch verstanden. Nu ja, dann kannst du da auch nix tun.
Einzige Möglichkeit, die libtntnet nicht selbst bauen zu müssen, ist "-Werror=overloaded-virtual" aus den cxxflags zu entfernen, da es sich bei dem Fehler lediglich um eine Warnung handelt, die mit dem Flag als Error gezählt wurde. Andernfalls halt nur selbst kompilieren.
Wende dich dazu bitte mal an das YaVDR-Team, die dir für ARM das Paket erstellen können.
Für alle anderen: ich habe mal eine testweise Änderung im aktuellen Git eingecheckt, die die CPU-Last-Problematik hoffentlich behebt. Es werden nun nicht mehr alle Kanäle aktualisiert, sondern nur noch jene, die nach EPG sich innerhalb des letzten Checks geändert haben. Hier gibt's noch einiges zu verbessern, aber erst einmal schauen, ob der Weg richtig ist Danke!
Hi,
ein Bug des DLNA-Plugins ist noch, dass das ständige Scannen nach Änderungen dazu führt, dass die CPU-Last sehr hoch ist. Ich versuche das abzudämpfen, in dem ich nur eine Änderung an den Scanner mitteile, wenn die EPG-Events von "jetzt" geändert haben. Aber irgendwie ist das noch nicht das Gelbe vom Ei:
#define SLEEP_TIMEOUT 120
const cSchedules* Schedules;
cSchedule* Schedule;
const cEvent* event;
long now = 0;
bool modified = false;
while(Running()){
event = NULL;
now = time(NULL);
if(!Channels.BeingEdited() && Channels.Modified() > 0){
modified = true;
}
{ // Reduce Scope of Schedules lock.
cSchedulesLock lock;
Schedules = cSchedules::Schedules(lock);
// iterate over all the schedules, find those, which were modified and tell
// it to the media manager. If we found an entry, there's no need to continue searching.
for(Schedule = Schedules->First(); Schedule; Schedule = Schedules->Next(Schedule))
{
// Get the next event of the schedule...
event = Schedule->GetFollowingEvent();
if(event){
// and check if it starts after the last modification and in two minutes from now.
// This causes an update only if there is at least one element in the schedule
// which starts within the next two minutes. Other elements, which will start later,
// will be skipped.
if(event->StartTime() > lastModified && event->StartTime() < now + SLEEP_TIMEOUT){
modified = true;
break;
}
} else if(Schedule->Modified() > lastModified){
modified = true;
break;
}
}
}
if(modified){
OnContainerUpdate(GetRootContainer(), now);
modified = false;
lastModified = now;
}
// Sleep 2 minutes
sleep.Wait(SLEEP_TIMEOUT * 1000);
}
Display More
Das geht doch sicher noch besser oder?
Mein Fehler.
Ich hab folgendes Installiert bei mir:
savop@savop-vm:~/Dokumente/Projekte/vdr/upnp-0.0.1$ apt-cache policy libtntnet*
libtntnet-dev:
Installiert: 2.0+rev.1308-0yavdr0~precise
Kandidat: 2.0+rev.1308-0yavdr0~precise
Versionstabelle:
*** 2.0+rev.1308-0yavdr0~precise 0
500 http://ppa.launchpad.net/yavdr/main/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
2.0+dfsg1-2 0
500 http://de.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
libtntnet8:
Installiert: (keine)
Kandidat: (keine)
Versionstabelle:
libtntnet9:
Installiert: 2.0+rev.1308-0yavdr0~precise
Kandidat: 2.0+rev.1308-0yavdr0~precise
Versionstabelle:
*** 2.0+rev.1308-0yavdr0~precise 0
500 http://ppa.launchpad.net/yavdr/main/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
2.0+dfsg1-2 0
500 http://de.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
Display More
Ohne ein Experte zu sein, würde ich davon abraten: ein Bekannter von uns arbeitet jedoch in einer Werkstatt und da wird die private Reifenlagerung teilweise kritisch angesehen, weil die Räder in der Regel falsch gelagert werden. Kondensflüssigkeit kann sich im Reifen sammeln, der Gummi porös werden und rissig werden, selbst wenn man diese nicht sehen kann. Länger als 5 Jahre sollten Reifen ohnehin nicht ohne Bewegung gelagert werden: ich hatte mir günstig solche Räder gekauft und nach einer längeren Autofahrt mehrere Plattfüße am nächsten Tag. Wenn ich damit über die Autobahn gefahren wäre, würde ich wahrscheinlich nicht mehr hier schreiben. Man sollte also nicht nur darauf achten, wie viel Profil die Schlappen noch haben, sondern wie alt sie überhaupt sind.