sectionsd doppelte Events fixen - wie?
-
- Developer
- Beiträge: 2183
- Registriert: Mittwoch 10. Dezember 2003, 07:59
Re: sectionsd doppelte Events fixen - wie?
ich auch nicht
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Re: sectionsd doppelte Events fixen - wie?
http://ulc.tuxbox-cvs.sourceforge.net/i ... tory=Diffs&
Absolut ungetestet, weil ich keine Box greifbar habe und auch keine Zeit.
Wahrscheinlich stürzt es ab oder macht gar nix, aber ihr könnt es ja mal testen. Ich bin dann im Urlaub.
Absolut ungetestet, weil ich keine Box greifbar habe und auch keine Zeit.
Wahrscheinlich stürzt es ab oder macht gar nix, aber ihr könnt es ja mal testen. Ich bin dann im Urlaub.
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Abstürzen tut's bis jetzt nicht, und machen tut es insofern etwas, als dass der sectionsd schon mal wie gewohnt funktioniert. Hab also beim Starten & Antesten keine Probleme festgestellt.Nirvana hat geschrieben:Wahrscheinlich stürzt es ab oder macht gar nix, aber ihr könnt es ja mal testen.
Mal schauen, ob's gegen die Multievents hilft.
Na, Du hast's gut. Und wenn der Patch hilft, hast Du's auch doppelt verdient.Nirvana hat geschrieben:Ich bin dann im Urlaub.
Danke schon einmal für den Patch!
"Mal eben gestrickt" und "ungetestet"... Compiled & läuft trotzdem. Respekt! Schade nur, dass Du so wenig Zeit hast. Aber wer kennt das nicht?
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Zum Testen hier das Binary: sectionsd1260.zip
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Okay, gegen doppelte Events hilft der Patch nicht. Hab gerade welche drin...
-
- Wissender
- Beiträge: 1839
- Registriert: Sonntag 17. August 2003, 01:39
Re: sectionsd doppelte Events fixen - wie?
Also bei mir sieht es im Moment gut aus. Auch werden die Events schneller eingelesen finde ich...
Gruß
Gruß
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Ich habs mir auch mal auf die Box kopiert. Mal sehen ...
Auch habe ich mir mal den Quelltext angesehen. Der ist eigentlich recht gut nachvollziehbar. Allerdings wundert mich eine Stelle:Warum wird hier auf "not table_id" getestet? So wie es jetzt ist, ist es meiner Meinung nach kein Wunder, dass es nicht funktioniert. Der Teil, in dem die Events gelöscht werden, wird doch so nie ausgeführt. Oder sehe ich das falsch?
Auch habe ich mir mal den Quelltext angesehen. Der ist eigentlich recht gut nachvollziehbar. Allerdings wundert mich eine Stelle:
Code: Alles auswählen
static bool deleteEventsFromTableSection(const t_channel_id serviceUniqueKey, const unsigned char table_id, const unsigned char section_number)
{
...
if (!table_id)
{
...
}
...
}
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Re: sectionsd doppelte Events fixen - wie?
Genau, das sollte wohl if (table_id) sein...
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Na, schon wieder zurück aus dem Urlaub? War wohl nicht so doll ...
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Okay, auf ein Neues. Hier das gefixte Binary: sectionsd1260_fixed.zip
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Kleine Zwischeninfo: Bei mir werden gerade auf einigen Sendern die aktuellen Sendungen (Start: 20:15) nicht angezeigt. (BR/BR alpha/SWR/WDR)
Im Log steht, sobald ich die EPG-Vorschau(rot/rot) aufrufe:
Ein Neustart vom sectionsd behebt das Problem, danach sind die Sendungen da.
Dass die Events schneller eingelesen werden, kann ich nicht wirklich bestätigen. Gleiche Geschwindigkeit wie ohne Patch, würde ich sagen.
Im Log steht, sobald ich die EPG-Vorschau(rot/rot) aufrufe:
Code: Alles auswählen
no response from sectionsd
Dass die Events schneller eingelesen werden, kann ich nicht wirklich bestätigen. Gleiche Geschwindigkeit wie ohne Patch, würde ich sagen.
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Jetzt ist der sectionsd mit folgender Meldung abgestürzt:
So 'ne Meldung habe ich auf der Box noch nie gesehen. Da sind ja Build-Pfade in der Meldung...
Code: Alles auswählen
sectionsd: /home/m/tuxbox_2x/dbox2/cdk/lib/gcc/powerpc-tuxbox-linux-gnu/3.4.6/../../../../powerpc-tuxbox-linux-gnu/include/boost/shared_ptr.hpp:315: T* boost::shared_ptr<T>::operator->() const [with T = SIevent]: Assertion `px != 0' failed.
-
- Erleuchteter
- Beiträge: 646
- Registriert: Mittwoch 16. April 2003, 14:12
Re: sectionsd doppelte Events fixen - wie?
Tja, das erste hat mit den Änderungen nix zu tun. Das zweite schon.
Aus den Listen zu löschen und dann wieder draufzuzugreifen kommt scheinbar nicht so gut...
Aus den Listen zu löschen und dann wieder draufzuzugreifen kommt scheinbar nicht so gut...
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Vielleicht sollte man das Löschen ja nach demselben Prinzip wie in der Funktion "removeOldEvents" machen. Das funktioniert ja.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
So, mein Vorschlag für die Funktion "deleteEventsFromTableSection" sieht folgendermaßen aus:
Code: Alles auswählen
static bool deleteEventsFromTableSection(const t_channel_id serviceUniqueKey, const unsigned char table_id, const unsigned char section_number)
{
bool event_deleted = false;
bool serviceIDfound = false;
readLockEvents();
MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator e = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin();
while (e != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end()) {
if ((*e)->get_channel_id() == serviceUniqueKey) {
serviceIDfound = true;
if (((*e)->table_id == table_id) && ((*e)->section_number == section_number)) {
unlockEvents();
deleteEvent((*(e++))->uniqueKey());
readLockEvents();
event_deleted = true;
}
else
++e;
}
else if (serviceIDfound)
break; // sind nach serviceID und startzeit sortiert -> nicht weiter suchen
}
unlockEvents();
return event_deleted;
}
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Ich hab Deinen Vorschlag mal eingebaut und lass es jetzt mal einfach laufen.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Schön. Mal sehen, ob's was bringt. Getestet habe ich es aber selbst nicht.
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Okay, der friert fest. Events kommen nicht rein und beim Umschalten bleibt Neutrino fast komplett stehen. sectionsd killen "befreit" Neutrino dann wieder.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Mist. Dabei hab ich das doch fast so wie in "removeOldEvents" gemacht.
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
So vielleicht?
Code: Alles auswählen
static bool deleteEventsFromTableSection(const t_channel_id serviceUniqueKey, const unsigned char table_id, const unsigned char section_number)
{
bool event_deleted = false;
bool serviceIDfound = false;
readLockEvents();
MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator e = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin();
while (e != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end()) {
unlockEvents();
if ((*e)->get_channel_id() == serviceUniqueKey) {
serviceIDfound = true;
if (((*e)->table_id == table_id) && ((*e)->section_number == section_number)) {
deleteEvent((*(e++))->uniqueKey());
event_deleted = true;
}
else
++e;
}
else if (serviceIDfound) {
readLockEvents();
break; // sind nach serviceID und startzeit sortiert -> nicht weiter suchen
}
readLockEvents();
}
unlockEvents();
return event_deleted;
}
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Freezed zwar nicht, bringt aber keine Events ("Warte auf EPG-Informationen...").
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Ich geb's auf. Ich hab wohl doch nicht genug Ahnung vom sectionsd, um darin rumzupfuschen.
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Trotzdem danke, dass Du's versucht hast.
Evtl. hat Nirvana ja noch 'nen Geistesblitz... Oder ist er jetzt wirklich im Urlaub?
Evtl. hat Nirvana ja noch 'nen Geistesblitz... Oder ist er jetzt wirklich im Urlaub?
-
- Erleuchteter
- Beiträge: 600
- Registriert: Samstag 14. Oktober 2006, 10:53
Re: sectionsd doppelte Events fixen - wie?
Das hier scheint zu funktionieren, jedenfalls freezed nüscht und Events kommen rein. Ob's stabil läuft und gegen Multi-Events hilft? Schaun 'mer mal...
DIFF: sectionsd1260_fixed_2.diff
Binary: sectionsd1260_fixed_2.zip
Gaucho's Tip mit dem Schielen auf die removeOldEvents war nicht schlecht. Meine Modifikationen sollte sich aber unbedingt noch einmal ein sectionsd-Versteher anschauen, ob das alles in der richtigen Reihenfolge gelocked wird bzw. wieder sauber "unlocked" wird, so wie's sectionsd & Neutrino haben wollen... Mein Code ist momentan eher intuitiv als dass ich den sectionsd wirklich verstehe. Laufen tut's jedenfalls erstmal...
Falls der Code funktioniert, war's gutes Teamwork.
Reports, please!
DIFF: sectionsd1260_fixed_2.diff
Binary: sectionsd1260_fixed_2.zip
Gaucho's Tip mit dem Schielen auf die removeOldEvents war nicht schlecht. Meine Modifikationen sollte sich aber unbedingt noch einmal ein sectionsd-Versteher anschauen, ob das alles in der richtigen Reihenfolge gelocked wird bzw. wieder sauber "unlocked" wird, so wie's sectionsd & Neutrino haben wollen... Mein Code ist momentan eher intuitiv als dass ich den sectionsd wirklich verstehe. Laufen tut's jedenfalls erstmal...
Falls der Code funktioniert, war's gutes Teamwork.
Reports, please!
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: sectionsd doppelte Events fixen - wie?
Ich habe wohl einfach zu viel von dem Code aus "removeOldEvents" für unwichtig befunden. Schön, dass du noch eine funktionierende Version hinbekommen hast. Ich werde mir diesen sectionsd auch mal auf die Box packen und ihn beobachten.