BUG : Channellist verschluckt letzte 1
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
BUG : Channellist verschluckt letzte 1
Hi,
irgendwie war mir hier stand schon mal ein Thread von rhabarber über genau das selbe Thema.... ich find ihn aber nicht mehr evtl. beim DB Crash verloren gegangen ? Da es mir gestern Abend wieder aufgefallen ist, hier also nochmal :
Wenn eine Sendung im EPG mit 1 endet, also so wie gestern Abend im "ZDF - Menschen 2011" verschluckt die Channelist die letzte 1. Die Infobar zeigts richtig, da ist alles OK...
Weiß nicht ob man das irgendwie reproduzieren kann....
Marc
irgendwie war mir hier stand schon mal ein Thread von rhabarber über genau das selbe Thema.... ich find ihn aber nicht mehr evtl. beim DB Crash verloren gegangen ? Da es mir gestern Abend wieder aufgefallen ist, hier also nochmal :
Wenn eine Sendung im EPG mit 1 endet, also so wie gestern Abend im "ZDF - Menschen 2011" verschluckt die Channelist die letzte 1. Die Infobar zeigts richtig, da ist alles OK...
Weiß nicht ob man das irgendwie reproduzieren kann....
Marc
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: BUG : Channellist verschluckt letzte 1
Wird bei dir der Text links- oder rechtsbündig angezeigt?
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
läßt sich das einstellen ?
schon immer linksbündig und ohne Fortschrittsbalken....
Marc
schon immer linksbündig und ohne Fortschrittsbalken....
Marc
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: BUG : Channellist verschluckt letzte 1
Dann ist wohl irgendwie die Berechnung der x-Position für die Methode RenderString in Zeile 1258 von channellist.cpp falsch.
Ich vermute, dass ein Teil der Berechnung x + numwidth + 10 + ch_name_len + 5 + prg_offset einen falschen Wert hat.
Vielleicht ist aber auch die gesamte Rechnung Murx.
Ich vermute, dass ein Teil der Berechnung x + numwidth + 10 + ch_name_len + 5 + prg_offset einen falschen Wert hat.
Vielleicht ist aber auch die gesamte Rechnung Murx.
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
aber es ist doch nur die Zahl 1 die abgeschnitten wird.... eine 2, oder ein Buchstabe werden nicht abgeschnitten... es geht nur um eine 1
zumal die ganze Zeile eh ziemlich kurz war :
Marc
zumal die ganze Zeile eh ziemlich kurz war :
andere Zeilen sind da deutlich breiter2. ZDF - Menschen 2011
you know what I mean ? wird da irgendwo auf Sonderzeichen in der EPG-Daqrstellung geparst ?3. RTL Television - Das Supertalent
Marc
-
- Contributor
- Beiträge: 1688
- Registriert: Donnerstag 17. Februar 2005, 20:24
Re: BUG : Channellist verschluckt letzte 1
Ich weiß, was du meinst. In Zeile 1204 bis 1210 werden Werte berechnet, die dann später in Zeile 1252 bis 1259 genutzt werden. Vielleicht stimmt ja ch_desc_len nicht, wenn man mit schmalen Zeichen wie der 1 am Ende arbeitet.
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: BUG : Channellist verschluckt letzte 1
Ich hab das mal irgendwo gefixt. Ich such das mal raus.
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
Wenn jemand mal nachvollziehen will... hab gerade mal das EPG durchforstet...
19:25Uhr - 20:15Uhr -> ATV2 (Bouquet ATV) -> Stargate: SG1
sollte in der Channellist verschluckt werden... ( wenn es alle 1 am Ende betrifft...)!!
Marc
Edit:
verdammt.... da passts, was ist das fürn Mist
19:25Uhr - 20:15Uhr -> ATV2 (Bouquet ATV) -> Stargate: SG1
sollte in der Channellist verschluckt werden... ( wenn es alle 1 am Ende betrifft...)!!
Marc
Edit:
verdammt.... da passts, was ist das fürn Mist
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: BUG : Channellist verschluckt letzte 1
hat also doch jemand gesehenMarcM hat geschrieben:irgendwie war mir hier stand schon mal ein Thread von rhabarber über genau das selbe Thema.... ich find ihn aber nicht mehr evtl. beim DB Crash verloren gegangen ?
Ich hatte genau dieselbe Fehlermeldung gepostet,
allerdings wieder gelöscht, da es mit einem ungepatchten Image (inkl. ohne persönlicheMarcM hat geschrieben:Wenn eine Sendung im EPG mit 1 endet, also so wie gestern Abend im "ZDF - Menschen 2011" verschluckt die Channelist die letzte 1. Die Infobar zeigts richtig, da ist alles OK...
Anpassungen von neutrino.conf) nicht mehr auftrat. Weitere Untersuchungen haben
ergeben, dass der Fehler nur auftritt, wenn der Wert für "Einstellungen/OSD/Schriftgrößen/
Kanalliste/Beschreibung" auf einen Wert ungleich des Standards von 20 geändert wird.
Wir sollten versuchen, den bug dieses Jahr noch zu beheben
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
joa... kann ich bestätigen. Hab die Schriftgrößen alle eine Größe höher eingestellt....rhabarber1848 hat geschrieben:Weitere Untersuchungen haben
ergeben, dass der Fehler nur auftritt, wenn der Wert für "Einstellungen/OSD/Schriftgrößen/
Kanalliste/Beschreibung" auf einen Wert ungleich des Standards von 20 geändert wird.
Warum zum Henker lies es sich aber eben bei SG1 nicht reproduzieren ?!
Marc
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: BUG : Channellist verschluckt letzte 1
Die letzte "1" wird nur abgeschnitten, wenn die letzten beiden Zeichen "11" sind, warum auch immer...
Deshalb habe ich geschrieben:
Deshalb habe ich geschrieben:
Ich beobachte das Problem schon seit Monaten...rhabarber1848 hat geschrieben:Wir sollten versuchen, den bug dieses Jahr noch zu beheben
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
11 = Hex 0B
11 = ASCII VT (Tabulator)
Hex 11 = Dez 17
Hex 11 = ASCII DC1 (Device Control 1)
hmm.... wie lang (wieviel Zeichen) ist denn ein Standard Tabulator ?
11 = ASCII VT (Tabulator)
Hex 11 = Dez 17
Hex 11 = ASCII DC1 (Device Control 1)
hmm.... wie lang (wieviel Zeichen) ist denn ein Standard Tabulator ?
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: BUG : Channellist verschluckt letzte 1
Das problem ist im fontrenderer. GetRenderwidth hat irgendwo einen off-by-one error, die eigentliche Render-Routine braucht manchmal etwas mehr pixel zum tatsächlich rendern als getRenderWidth ursprünglich "vermutet" hat. Das führt dann (weil der Fontrenderer keine halben Buchstaben hinmalt) dazu, dass der Letzte character nicht gezeichnet wird.
Das ist Abhängig vom Font, der Fontgrösse, dem auszugebenden String etc.
Warum es die 1 hinten besonders oft erwischt weiss ich gerade auch nicht.
Das ist auch der grund, warum oftmals im Code beim Bestimmen der vorzusehenden Breite "getRenderWidth() + 1" genommen wird, obwohl das "+1" eigentlich keinen Sinn hat.
Ich habe das schon mal gefixt, ich muss den Code nur finden. Das wird dieses Jahr noch
Das ist Abhängig vom Font, der Fontgrösse, dem auszugebenden String etc.
Warum es die 1 hinten besonders oft erwischt weiss ich gerade auch nicht.
Das ist auch der grund, warum oftmals im Code beim Bestimmen der vorzusehenden Breite "getRenderWidth() + 1" genommen wird, obwohl das "+1" eigentlich keinen Sinn hat.
Ich habe das schon mal gefixt, ich muss den Code nur finden. Das wird dieses Jahr noch
-
- Foren-Moderator
- Beiträge: 1119
- Registriert: Sonntag 9. Juni 2002, 13:28
Re: BUG : Channellist verschluckt letzte 1
Gestern Nacht hab ich nochmal einen Fall gesehen :
ServusTV Deutschland - Erzbergrodeo 2011
das hat die Zeile zu ca. 3/4 ausgefüllt.... komisch ist dass es immer nur die 1 trifft und nicht mal ein l.
Marc
ServusTV Deutschland - Erzbergrodeo 2011
das hat die Zeile zu ca. 3/4 ausgefüllt.... komisch ist dass es immer nur die 1 trifft und nicht mal ein l.
Marc
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: BUG : Channellist verschluckt letzte 1
Versuch mal das:
Hintergrund: kerning.x kann negativ sein (ist es eigenltich fast immer IIRC) und das führt dann dazu, dass RenderString() abbricht, obwohl noch Platz wäre.
getRenderWidth() ist tatsächlich korrekt, aber RenderString() nutzt manchmal den Platz nicht aus.
Warum das bei der "1" eher auftritt ist auch klar: die hat eher einen grossen kerning-wert in x-Richtung.
Probiert es mal so aus.
Wenn es hilft, checke ich es ein.
Code: Alles auswählen
diff --git a/tuxbox/neutrino/src/driver/fontrenderer.cpp b/tuxbox/neutrino/src/driver/fontrenderer.cpp
index 032a849..0436d61 100644
--- a/tuxbox/neutrino/src/driver/fontrenderer.cpp
+++ b/tuxbox/neutrino/src/driver/fontrenderer.cpp
@@ -504,19 +504,19 @@ void Font::RenderString(int x, int y, const int width, const char *text, const u
dprintf(DEBUG_NORMAL, "failed to get glyph bitmap.\n");
continue;
}
- // width clip
- if (x + glyph->xadvance + spread_by > left + width)
- break;
-
//kerning
if(use_kerning)
{
FT_Get_Kerning(size->face, lastindex, index, 0, &kerning);
x+=(kerning.x+32)>>6; // kerning!
}
+ // width clip
+ if (x + glyph->xadvance + spread_by > left + width)
+ break;
+
int stride = frameBuffer->getStride();
uint8_t * d = ((uint8_t *)frameBuffer->getFrameBufferPointer()) + (x + glyph->left) * sizeof(fb_pixel_t) + stride * (y - glyph->top);
uint8_t * s = glyph->buffer;
int w = glyph->width;
getRenderWidth() ist tatsächlich korrekt, aber RenderString() nutzt manchmal den Platz nicht aus.
Warum das bei der "1" eher auftritt ist auch klar: die hat eher einen grossen kerning-wert in x-Richtung.
Probiert es mal so aus.
Wenn es hilft, checke ich es ein.
-
- Contributor
- Beiträge: 1509
- Registriert: Donnerstag 27. Dezember 2007, 12:59
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: BUG : Channellist verschluckt letzte 1
Mach ich sobald ich daheim bin.
Edit: ist drin.
Edit: ist drin.
-
- CDK-Experte
- Beiträge: 4335
- Registriert: Donnerstag 3. April 2008, 14:05
Re: BUG : Channellist verschluckt letzte 1
Problem gelöst, danke!