[Spark] Kleinere GUI Fehler
-
- Einsteiger
- Beiträge: 294
- Registriert: Samstag 8. Dezember 2001, 00:00
[Spark] Kleinere GUI Fehler
Ich habe heute mal eine aktuelle Version eingespielt und bin ueber 3 GUI Probleme gestoplert, die ich gerne mal reporten moechte.
1. Streifen (Ausgabemodus 1080p50)
Siehe beigefuegtes Bild beim Scrollen
2. Pumpen der Infobar
Direkt nach dem Umschalten oder per Infotaste scharf auf die Uhr in der rechten Ecke schauen
3. Anzeige der Aufloesung in der Infobar funktioniert nur bei 720p und 576i, nicht aber bei 1080i (bleibt leer)
1. Streifen (Ausgabemodus 1080p50)
Siehe beigefuegtes Bild beim Scrollen
2. Pumpen der Infobar
Direkt nach dem Umschalten oder per Infotaste scharf auf die Uhr in der rechten Ecke schauen
3. Anzeige der Aufloesung in der Infobar funktioniert nur bei 720p und 576i, nicht aber bei 1080i (bleibt leer)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
zu 1: Die Streifen habe ich auch über SCART. Da bleiben Reste vom Selekierbalken stehen.
zu 2: Das Pumpen kommt immer, wenn der (Doppel-)Punkt zwischen der Uhrzeit HH:MM eingeblendet wird. Könnte an der Blit-Funktion liegen.
zu 2: Das Pumpen kommt immer, wenn der (Doppel-)Punkt zwischen der Uhrzeit HH:MM eingeblendet wird. Könnte an der Blit-Funktion liegen.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: [Spark] Kleinere GUI Fehler
Ist das in allen Fenstern so oder nur hier?Space_2063 hat geschrieben:Ich habe heute mal eine aktuelle Version eingespielt und bin ueber 3 GUI Probleme gestoplert, die ich gerne mal reporten moechte.
1. Streifen (Ausgabemodus 1080p50)
Siehe beigefuegtes Bild beim Scrollen
2. Pumpen der Infobar
Direkt nach dem Umschalten oder per Infotaste scharf auf die Uhr in der rechten Ecke schauen
3. Anzeige der Aufloesung in der Infobar funktioniert nur bei 720p und 576i, nicht aber bei 1080i (bleibt leer)
-
- Einsteiger
- Beiträge: 362
- Registriert: Mittwoch 14. Dezember 2005, 03:25
Re: [Spark] Kleinere GUI Fehler
das kommt weil da immer eine bestimmte Area geblittet wird und wenn 2 Areas die vom Groesse her sind unterscheiden nacheinander blittet dass die eine von andere was abschneidet, mal vorsichtig die richtige brutale Lösung ist. den ganzen Bildschirm zu blitten dazu soll man aus dem mal Widget paar blit() sparren (rausnehmen):
Code: Alles auswählen
void CFrameBuffer::blit()
{
#ifdef __sh__
STMFBIO_BLT_DATA bltData;
memset(&bltData, 0, sizeof(STMFBIO_BLT_DATA));
bltData.operation = BLT_OP_COPY;
// src
bltData.srcOffset = 1920 *1080 * 4;
bltData.srcPitch = xRes * 4 /*stride*/;
bltData.src_left = 0;
bltData.src_top = 0;
bltData.src_right = xRes;
bltData.src_bottom = yRes;
bltData.srcFormat = SURF_BGRA8888;
bltData.srcMemBase = STMFBGP_FRAMEBUFFER;
// get variable screeninfo
if (ioctl(fd, FBIOGET_VSCREENINFO, &screeninfo) == -1)
perror("frameBuffer <FBIOGET_VSCREENINFO>");
/* dst */
bltData.dstOffset = 0;
bltData.dstPitch = screeninfo.xres * 4;
bltData.dst_left = 0;
bltData.dst_top = 0;
bltData.dst_right = screeninfo.xres;
bltData.dst_bottom = screeninfo.yres;
bltData.dstFormat = SURF_BGRA8888;
bltData.dstMemBase = STMFBGP_FRAMEBUFFER;
if ( (bltData.dst_right > screeninfo.xres) || (bltData.dst_bottom > screeninfo.yres) )
{
printf("CFrameBuffer::blit: values out of range desXb:%d desYb:%d\n", bltData.dst_right, bltData.dst_bottom);
}
if (ioctl(fd, STMFBIO_BLT, &bltData ) < 0)
perror("STMFBIO_BLIT");
// sync bliter
if(ioctl(fd, STMFBIO_SYNC_BLITTER) < 0)
perror("ioctl STMFBIO_SYNC_BLITTER");
#else
// set manual blit
unsigned char tmp = 1;
if (ioctl(fd,FBIO_SET_MANUAL_BLIT, &tmp)<0)
perror("FBIO_SET_MANUAL_BLIT");
// blit
if (ioctl(fd, FBIO_BLIT) < 0)
perror("FBIO_BLIT");
// sync bliter
int c = 0;
if( ioctl(fd, FBIO_WAITFORVSYNC, &c) < 0 )
perror("FBIO_WAITFORVSYNC");
#endif
}
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
Cool, danke.
Ich habe es gerade eingebaut und das Pumpen in der Infobar ist weg und die Streifen im Menü auch.
Keine Nachteile festgestellt.
Ich habe es gerade eingebaut und das Pumpen in der Infobar ist weg und die Streifen im Menü auch.
Keine Nachteile festgestellt.
-
- Administrator
- Beiträge: 2675
- Registriert: Donnerstag 28. September 2006, 19:18
Re: [Spark] Kleinere GUI Fehler
Ich glaube ich muss mir auch mal so'n Teil holen, sonst wirds langweilig
-
- Interessierter
- Beiträge: 69
- Registriert: Montag 13. Februar 2012, 21:10
Re: [Spark] Kleinere GUI Fehler
Wow !
Debian...sid
###--- Gott sei Dank, ich bin weg vom Fenster ---###
Wait and see... it's going to be great!
###--- Gott sei Dank, ich bin weg vom Fenster ---###
Wait and see... it's going to be great!
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
Hier als Diff - kein Pumpen oder andere Reste mehr. @Mosch: Danke
Code: Alles auswählen
diff --git a/src/driver/framebuffer_spark.cpp b/src/driver/framebuffer_spark.cpp
old mode 100644
new mode 100755
index a1ca027..81c224f
--- a/src/driver/framebuffer_spark.cpp
+++ b/src/driver/framebuffer_spark.cpp
@@ -1577,82 +1577,51 @@ void CFrameBuffer::mark(int xs, int ys, int xe, int ye)
void CFrameBuffer::blit()
{
- if (to_blit.xs == INT_MAX)
- return;
-
- int srcXa = to_blit.xs;
- int srcYa = to_blit.ys;
- int srcXb = to_blit.xe;
- int srcYb = to_blit.ye;
-
- STMFBIO_BLT_DATA bltData;
- memset(&bltData, 0, sizeof(STMFBIO_BLT_DATA));
-
- bltData.operation = BLT_OP_COPY;
- //bltData.ulFlags = BLT_OP_FLAGS_BLEND_SRC_ALPHA | BLT_OP_FLAGS_BLEND_DST_MEMORY; // we need alpha blending
- // src
- bltData.srcOffset = lbb_off;
- bltData.srcPitch = stride;
-
- bltData.src_left = srcXa;
- bltData.src_top = srcYa;
- bltData.src_right = srcXb;
- bltData.src_bottom = srcYb;
-
- bltData.srcFormat = SURF_BGRA8888;
- bltData.srcMemBase = STMFBGP_FRAMEBUFFER;
-
- /* calculate dst/blit factor */
- fb_var_screeninfo s;
- if (ioctl(fd, FBIOGET_VSCREENINFO, &s) == -1)
- perror("frameBuffer <FBIOGET_VSCREENINFO>");
-
- if (s.xres != last_xres) /* fb resolution has changed -> clear artifacts */
- {
- last_xres = s.xres;
- bltData.src_left = 0;
- bltData.src_top = 0;
- bltData.src_right = xRes;
- bltData.src_bottom = yRes;
- }
-
- double xFactor = (double)s.xres/(double)xRes;
- double yFactor = (double)s.yres/(double)yRes;
-
- int desXa = xFactor * bltData.src_left;
- int desYa = yFactor * bltData.src_top;
- int desXb = xFactor * bltData.src_right;
- int desYb = yFactor * bltData.src_bottom;
-
- /* dst */
- bltData.dstOffset = 0;
- bltData.dstPitch = s.xres * 4;
-
- bltData.dst_left = desXa;
- bltData.dst_top = desYa;
- bltData.dst_right = desXb;
- bltData.dst_bottom = desYb;
-
- bltData.dstFormat = SURF_BGRA8888;
- bltData.dstMemBase = STMFBGP_FRAMEBUFFER;
-
- //printf("CFrameBuffer::blit: sx:%d sy:%d sxe:%d sye: %d dx:%d dy:%d dxe:%d dye:%d\n", srcXa, srcYa, srcXb, srcYb, desXa, desYa, desXb, desYb);
- if ((bltData.dst_right > s.xres) || (bltData.dst_bottom > s.yres))
- printf("CFrameBuffer::blit: values out of range desXb:%d desYb:%d\n",
- bltData.dst_right, bltData.dst_bottom);
-
- blit_lock();
- if(ioctl(fd, STMFBIO_SYNC_BLITTER) < 0)
- perror("CFrameBuffer::blit ioctl STMFBIO_SYNC_BLITTER 1");
- msync(lbb, xRes * 4 * yRes, MS_SYNC);
- if (ioctl(fd, STMFBIO_BLT, &bltData ) < 0)
- perror("STMFBIO_BLT");
- if(ioctl(fd, STMFBIO_SYNC_BLITTER) < 0)
- perror("CFrameBuffer::blit ioctl STMFBIO_SYNC_BLITTER 2");
-
- to_blit.xs = to_blit.ys = INT_MAX;
- to_blit.xe = to_blit.ye = 0;
- blit_unlock();
+ STMFBIO_BLT_DATA bltData;
+ memset(&bltData, 0, sizeof(STMFBIO_BLT_DATA));
+
+ bltData.operation = BLT_OP_COPY;
+
+ // src
+ bltData.srcOffset = 1920 *1080 * 4;
+ bltData.srcPitch = xRes * 4 /*stride*/;
+
+ bltData.src_left = 0;
+ bltData.src_top = 0;
+ bltData.src_right = xRes;
+ bltData.src_bottom = yRes;
+
+
+ bltData.srcFormat = SURF_BGRA8888;
+ bltData.srcMemBase = STMFBGP_FRAMEBUFFER;
+
+ // get variable screeninfo
+ if (ioctl(fd, FBIOGET_VSCREENINFO, &screeninfo) == -1)
+ perror("frameBuffer <FBIOGET_VSCREENINFO>");
+
+ /* dst */
+ bltData.dstOffset = 0;
+ bltData.dstPitch = screeninfo.xres * 4;
+
+ bltData.dst_left = 0;
+ bltData.dst_top = 0;
+ bltData.dst_right = screeninfo.xres;
+ bltData.dst_bottom = screeninfo.yres;
+
+ bltData.dstFormat = SURF_BGRA8888;
+ bltData.dstMemBase = STMFBGP_FRAMEBUFFER;
+
+ if ( (bltData.dst_right > screeninfo.xres) || (bltData.dst_bottom > screeninfo.yres) )
+ {
+ printf("CFrameBuffer::blit: values out of range desXb:%d desYb:%d\n", bltData.dst_right, bltData.dst_bottom);
+ }
+
+ if (ioctl(fd, STMFBIO_BLT, &bltData ) < 0)
+ perror("STMFBIO_BLIT");
+
+ // sync bliter
+ if(ioctl(fd, STMFBIO_SYNC_BLITTER) < 0)
+ perror("ioctl STMFBIO_SYNC_BLITTER");
}
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: [Spark] Kleinere GUI Fehler
Und wie sieht es mit der Performance aus? IIRC war das relativ langsam, immer alles zu blitten...
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
Ich merke da keinen Unterschied, bin vielleicht nicht sensibel genug.
Der Nutzen bzw. die korrekte Darstellung schlägt den minimalen Performance-Verlust in meinem Fall...
Bin kein Powerzapper
Der Nutzen bzw. die korrekte Darstellung schlägt den minimalen Performance-Verlust in meinem Fall...
Bin kein Powerzapper
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: [Spark] Kleinere GUI Fehler
ok, ich probiers mal aus.
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
Und wenn man einen kleinen Blit-Offset einbaut. +5 Pixel oder so...?
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: [Spark] Kleinere GUI Fehler
Ja, das hatte ich mir auch schon überlegt.
Aber von den screenshots die ich bisher bekommen habe, sieht es eher nach einem Rundungsfehler aus, also als ob sich da manchmal was im Output verschiebt beim blitten.
Bei mir scheint z.B. auch die Grafik im Techinfo screen horizontal zu "wackeln", was auch auf sowas hindeuten könnte. Ich habe aber auch keine FullHD Display um das genauer zu untersuchen: das könnte nämlich auch vom scaler im Display kommen...
Also wenn es von der Performance her akzeptabel ist, dann wäre "immer alles blitten" auf jeden Fall die Lösung, die auch den Code einfacher machen würde.
Aber von den screenshots die ich bisher bekommen habe, sieht es eher nach einem Rundungsfehler aus, also als ob sich da manchmal was im Output verschiebt beim blitten.
Bei mir scheint z.B. auch die Grafik im Techinfo screen horizontal zu "wackeln", was auch auf sowas hindeuten könnte. Ich habe aber auch keine FullHD Display um das genauer zu untersuchen: das könnte nämlich auch vom scaler im Display kommen...
Also wenn es von der Performance her akzeptabel ist, dann wäre "immer alles blitten" auf jeden Fall die Lösung, die auch den Code einfacher machen würde.
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
kann das auch an Letterbox oder Fullscreen liegen?
Es wundert mich, dass das nicht Jeder hat
Es wundert mich, dass das nicht Jeder hat
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: [Spark] Kleinere GUI Fehler
Ich denke es ist eher Hardware oder (Chip-)Firmwareabhängig. Hast du einen GM990 oder einen Pingulux?
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
gm990 reloaded
-
- Einsteiger
- Beiträge: 294
- Registriert: Samstag 8. Dezember 2001, 00:00
Re: [Spark] Kleinere GUI Fehler
Dito - bei mir auch ne GM990 (Ausgabe wie schon erwaehnt 1080p50)
-
- Erleuchteter
- Beiträge: 450
- Registriert: Sonntag 28. Juli 2002, 01:18
Re: [Spark] Kleinere GUI Fehler
Ich fahr die Reloaded über Scart im Schlafzimmer, guter alter Plasma ;o)
In dem Modus habe ich aber auch die Streifen und das Pumpen. Wenn ich mal wieder Zeit habe, dann werde ich das mal genauer testen.
In dem Modus habe ich aber auch die Streifen und das Pumpen. Wenn ich mal wieder Zeit habe, dann werde ich das mal genauer testen.
-
- Developer
- Beiträge: 4189
- Registriert: Sonntag 2. November 2003, 12:36
Re: [Spark] Kleinere GUI Fehler
Ich habe gestern was committed, was dem Code von Mohousch entsprechen sollte -- performancemässig habe ich direkt keinen Unterschied bemerkt.
-
- Einsteiger
- Beiträge: 101
- Registriert: Dienstag 6. März 2012, 13:24
Re: [Spark] Kleinere GUI Fehler
dietmar w image
keine Striche -Reste, aber bei 1080i pder auch p
ist Bild immermal schlecht, z.b. wenn Test in Beiträgen eingeblendet wird ard zdf mittagsmagazin richtig zerfrannzt
keine Striche -Reste, aber bei 1080i pder auch p
ist Bild immermal schlecht, z.b. wenn Test in Beiträgen eingeblendet wird ard zdf mittagsmagazin richtig zerfrannzt
-
- Einsteiger
- Beiträge: 352
- Registriert: Freitag 20. August 2004, 23:33
Re: [Spark] Kleinere GUI Fehler
ja, das ist aber offensichtlich ein allgemeines Problem aller freien Linux basierten SH4 Implementationen.
Irgendwie scheint die closed source video firmware nicht dem Standard der z.B. Spark Firmware zu entsprechen bzw. die Anbindung von Player2 nicht optimal zu sein.
Ein direkter Vergleich von z.B. SD Sendern in Spark und Neutrino/E² läßt mich immer wieder an der Sinnhaftigkeit zweifeln...
aber nun on topic: mit den letzten Änderungen auch keine Striche mehr im Menü bei 1080er Auflösungen.
Irgendwie scheint die closed source video firmware nicht dem Standard der z.B. Spark Firmware zu entsprechen bzw. die Anbindung von Player2 nicht optimal zu sein.
Ein direkter Vergleich von z.B. SD Sendern in Spark und Neutrino/E² läßt mich immer wieder an der Sinnhaftigkeit zweifeln...
aber nun on topic: mit den letzten Änderungen auch keine Striche mehr im Menü bei 1080er Auflösungen.