Movieplayer 1 und 2 / Filmarchiv

Wünsche, Anträge, Fehlermeldungen
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von seife »

Ok, ich guck heute abend noch, ob das noch woanders ähnlich schiefgehen könnte, dann mach ich den rein. Danke fürs testen.
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

Fixt einen Neutrino Segfault, wenn bei leerem Filmarchiv die OK-Taste gedrückt wird.

moviebrowser.cpp.diff
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von seife »

Es gibt doch ausser "OK" und "Home" keine möglichkeit, aus dieser Loop rauszukommen (also auch kein "rescan" oder "configure" an dieser Stelle), richtig?

Wäre es da nicht offensichtlicher gleich vor der while-schleife

Code: Alles auswählen

bool loop = !m_vMovieInfo.empty()
zu machen? Oder ist das für den unklar, warum da nichts aufgeht?
Tommy
Tuxboxer
Tuxboxer
Beiträge: 4332
Registriert: Dienstag 7. Mai 2002, 17:04

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von Tommy »

Wenn Ihr in der Ecke seit (es geht doch um den Moviebrowser?):

bei der Filmauswahl kommt eine Auswahl
"Letzter Wiedergabestop nn:nn"
"Filmanfang"

Hier wäre ein "optout" entweder über die Hometaste oder einen Menüeintrag "Abbruch" sinnvoll.

Auf "Home" läuft der gewählte Film los als wenn man OK drückt
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

seife hat geschrieben:Es gibt doch ausser "OK" und "Home" keine möglichkeit, aus dieser Loop rauszukommen (also auch kein "rescan" oder "configure" an dieser Stelle), richtig?

Wäre es da nicht offensichtlicher gleich vor der while-schleife

Code: Alles auswählen

bool loop = !m_vMovieInfo.empty()
zu machen? Oder ist das für den unklar, warum da nichts aufgeht?
Ja, geht auch, mach's einfach rein. :wink:
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

@seife

Die andere Variante war vielleicht doch etwas eleganter. Nun blitzt das Filmarchiv kurz auf, wenn man es öffnen möchte
und nach dem ersten Hinweis, das keine Filme gefunden wurden, kommt auch kein anderer Hinweis. Das ist jetzt doch etwas
verwirrend, für den einen oder anderen. Dazu kommt noch, das es auch nicht mehr auf geht, wenn man nachträglich ein
Startverzeichnis angibt. Man kommt auch nicht mehr an die MB Einstellungen, um die Option "Filminfos neu laden bei Start"
zu aktivieren.

Dann gibt es noch ein Paint-Problem, nachdem man die Suche durchgeführt hat und danach eine andere Option auswählt. :wink:
Bild
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von seife »

Das hatte ich befürchtet (das das auf- und sofort wieder zugeht, ohne hinweis). Kann man in dem leeren Datei-Menü (wo OK vorher einen segfault auslöste) denn irgendwas anderes machen (Einstellungen oder so)? Dann wäre es sinnvoll, nur "OK" zu blockieren, wie du es hattest. Wenn man nichts machen kann, dann sollte man evtl zwar das Datei-Menü nicht öffnen, dafür aber ein "es wurden keine Filme gefunden, bitte $KONFIGURATION durchführen"-Popup einblenden.

Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches ;)
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von seife »

Das hatte ich befürchtet (das das auf- und sofort wieder zugeht, ohne hinweis). Kann man in dem leeren Datei-Menü (wo OK vorher einen segfault auslöste) denn irgendwas anderes machen (Einstellungen oder so)? Dann wäre es sinnvoll, nur "OK" zu blockieren, wie du es hattest. Wenn man nichts machen kann, dann sollte man evtl zwar das Datei-Menü nicht öffnen, dafür aber ein "es wurden keine Filme gefunden, bitte $KONFIGURATION durchführen"-Popup einblenden.

Die Paint-Probleme lasse ich jemand anderem. Ich habe die Artefakte, die durch fehlbenutzung der CFBWindow-Klasse entstehen konnten, an der Wurzel bekämpft (dafür kann es jetzt sein, dass Fenster nur noch halb angezeigt werden), aber das hilft natürlich nicht gegen vergessene hide() oder ähnliches ;)
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

In movieplayer2.cpp: tmpbuf steht auf 512 eingelesen werden 1024, ist das extra so programmiert?
Sonst wäre es "out-of-bounds".

Code: Alles auswählen

int box2box_request_stream(const char *fn)
{
	char tmpbuf[512];
	char id_s[33]; // long long hex == 32 char's + \0
	int fd = -1;
	char *ip;
	char *name;
	int port, vp, ap, ret;
	long long id;
	char *p1, *p2;
	std::string url, response;
	CURLcode httpres;
	FILE *fp = fopen(fn, "r");
	if (!fp)
		return -1;

	if (!fgets(tmpbuf, 1024, fp))
		goto nofile;
	DBG("tmpbuf: %s", tmpbuf);
	if (strcmp(tmpbuf, "#DBOXSTREAM\n") != 0)
	{
		INFO("invalid file signature: no #DBOXSTREAM found\n");
		goto nofile;
	}
	DBG("found #DBOXSTREAM\n");
	if (!fgets(tmpbuf, 1024, fp))
		goto nofile;
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von seife »

nö, das ist ein saftiger buffer overrun ;)
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

So, wie ich das sehe wird fp mindestens 1x nicht geschlossen. Nämlich im Gutfall.
Das bedeutet ein zusätzliches "memory leak".
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 16:17

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von Striper »

Das sollte gehen, oder?

Code: Alles auswählen

Index: apps/tuxbox/neutrino/src/gui/movieplayer2.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp,v
retrieving revision 1.65
diff -U3 -r1.65 movieplayer2.cpp
--- apps/tuxbox/neutrino/src/gui/movieplayer2.cpp	5 Dec 2009 20:19:49 -0000	1.65
+++ apps/tuxbox/neutrino/src/gui/movieplayer2.cpp	29 Dec 2009 15:40:49 -0000
@@ -539,7 +539,7 @@
    returns a file descriptor to the stream or -1 */
 int box2box_request_stream(const char *fn)
 {
-	char tmpbuf[512];
+	char tmpbuf[1024];
 	char id_s[33]; // long long hex == 32 char's + \0
 	int fd = -1;
 	char *ip;
Wie sollte man das andere Problem angehen?
GetAway
Contributor
Beiträge: 1509
Registriert: Donnerstag 27. Dezember 2007, 12:59

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von GetAway »

Das sollte reichen.

Code: Alles auswählen

Index: apps/tuxbox/neutrino/src/gui/movieplayer2.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp,v
retrieving revision 1.65
diff -u -p -r1.65 movieplayer2.cpp
--- a/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp	5 Dec 2009 20:19:49 -0000	1.65
+++ b/apps/tuxbox/neutrino/src/gui/movieplayer2.cpp	29 Dec 2009 16:04:13 -0000
@@ -647,6 +647,7 @@ int box2box_request_stream(const char *f
 		g_currentapid = pida;
 		DBG("isstream == true, numpida: %d pida: %d, pidv: %d\n", g_numpida, pida, pidv);
 	}
+	fclose(fp);
 	return fd;
 
  nostream:
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 16:17

Re: Movieplayer 1 und 2 / Filmarchiv

Beitrag von Striper »

THX, erledigt.