[TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Fehler in TV-Browser
Benutzeravatar
Xenu
Senior Member
Beiträge: 171
Registriert: 25 Aug 2004, 18:43

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von Xenu »

Der Waltons Fehler kommt unter folgenden Bedingungen:

- TVB neu starten
- Dann Doppelklick auf irgendeine Sendung

Wichtig ist der Doppelklick, und die Einstellung dass die Sendeinfo durch einfach Klick und durch Doppelklick angezeigt wird. (Bei allgemeine Einstellungen, Maustasten)

Der Fehler äußert sich auch Allgemein. Einfach auf eine Sendung mit Bild klicken. Dann schliessen, dann schnelles Doppelklick auf eine Sendung ohne Bild. Dann wird für ein Bruchteil einer Sekunde die alte Sendung gezeigt. (Das mit dem Bild ist nur, damit man beide Sendeinfos unterscheiden kann).

Ich vermute, dass es irgendwo knirscht weil der zweite Vorgang (Doppelklick) gestartet wird bevor der erste (Einfachklick) fertig ist.
Windows 10 64bit, Java 1.8.0_202, TV Browser 4.0.1, Radeon RX 460
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von ds10 »

Wenn der Fehler so einfach zu finden wäre, dann hätte ich den sicher längst, aber bei mir tritt das Problem nicht auf. Es kann aber gut sein, dass sich Einfach- und Doppelklick in die Quere kommen, ich beim Doppelklicken aber einfach nicht den Moment erwische indem das passieren würde.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
Xenu
Senior Member
Beiträge: 171
Registriert: 25 Aug 2004, 18:43

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von Xenu »

ds10 hat geschrieben:Wenn der Fehler so einfach zu finden wäre, dann hätte ich den sicher längst, aber bei mir tritt das Problem nicht auf. Es kann aber gut sein, dass sich Einfach- und Doppelklick in die Quere kommen, ich beim Doppelklicken aber einfach nicht den Moment erwische indem das passieren würde.
Ich habs mir mal angeschaut. Die gute Nachricht ist dass es keinen doppelten Aufruf gibt oder so, und meine Annahme war auch falsch. Ursache für den Waltons-Effekt ist dass der Dialog früher angezeigt wird als der Inhalt zugewiesen wird.

ProgramInfoDialog ist ein singleton (oh-oh :-))
1) ProgramInfoDialog.getInstance ruft setProgram() auf
setProgram ruft setProgramText() auf, aber nicht sofort sondern als SwingUtilities.invokeLater()
setProgramText() ruft mInfoEP.setText() auf, wodurch der Text im Dialog gesetzt wird.
2) show() ruft mDialog.setVisible(true);

Das Problem ist somit dass mDialog.setVisible(true) zumindest theoretisch NACH dem Aufruf von mInfoEP.setText() dran ist. Und auch praktisch:

Code: Alles auswählen

vor  ProgramInfoDialog.getInstance().show(): 20.07.2013 19:44:14.444
vor  Aufruf mDialog.setVisible(true): 20.07.2013 19:44:15.321
vor  Aufruf setProgramText() 20.07.2013 19:44:15.446
nach Aufruf setProgramText() 20.07.2013 19:44:15.557
nach Aufruf mDialog.setVisible(true): 20.07.2013 19:44:20.437
nach ProgramInfoDialog.getInstance().show(): 20.07.2013 19:44:20.437
Ich nehme an, dass setVisible() zunächst einfach mal das darstellt, war von vorher noch da war (und beim ersten Mal sind das nun mal Die Waltons). Danach erst wird der (HTML) Text aufgebaut.

Abhilfe wäre entweder vor setVisible irgendwie auf das Ende von setProgramText() zu warten, oder in setProgram vor dem invokeLater() Aufruf ein mInfoEP.setText("") absetzen. Ich geh davon aus dass es gibt sicher einen Grund für das SwingUtilities.invokeLater() gibt, vielleicht die timer events und deren Folgen?
Windows 10 64bit, Java 1.8.0_202, TV Browser 4.0.1, Radeon RX 460
uzi
Site Admin
Beiträge: 2294
Registriert: 02 Jul 2009, 14:32

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von uzi »

SwingUtilities.invokeLater() wird benutzt, um aus einem (eigenen) thread wieder zurück in den gui-event-thread zu kommen. normalerweise, um die gui in irgendeiner form zu aktualisieren.
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von ds10 »

Vielleicht unterliege ich ja einem Missverständnis. War das Problem nicht, dass die Waltons angezeigt werden und dann angezeigt bleiben?

Denn wenn das Problem nur ist, dass die Waltons kurz zu sehen sind, bevor die eigentliche Sendung angezeigt wird, dann ist es ja kein wirkliches Problem, sondern wenn überhaupt nur ein Kosmetisches, denn man bekommt ja die Info, die man haben möchte.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
Xenu
Senior Member
Beiträge: 171
Registriert: 25 Aug 2004, 18:43

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von Xenu »

ds10 hat geschrieben:Vielleicht unterliege ich ja einem Missverständnis. War das Problem nicht, dass die Waltons angezeigt werden und dann angezeigt bleiben?

Denn wenn das Problem nur ist, dass die Waltons kurz zu sehen sind, bevor die eigentliche Sendung angezeigt wird, dann ist es ja kein wirkliches Problem, sondern wenn überhaupt nur ein Kosmetisches, denn man bekommt ja die Info, die man haben möchte.
In meinem Fall ist es nur kurz zu sehen. Ja mag sein dass man die info bekommt, aber wenn vorher kurz was anderes kommt (und dann auch noch die Waltons), dann ist das irritierend.
Windows 10 64bit, Java 1.8.0_202, TV Browser 4.0.1, Radeon RX 460
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von ds10 »

Du kannst ja setProgramText(); vor invokeLater setzen, ich weiß jetzt auch nicht, warum das da drin steht.
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Benutzeravatar
Xenu
Senior Member
Beiträge: 171
Registriert: 25 Aug 2004, 18:43

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von Xenu »

ds10 hat geschrieben:Du kannst ja setProgramText(); vor invokeLater setzen, ich weiß jetzt auch nicht, warum das da drin steht.
Das hilft skurrilerweise nur ein bisschen, d.h. der vorherige Inhalt ist noch zu sehen, wenn auch kürzer als bisher. Was scheinbar hilft, ist nur mInfoEP.setText("") vor dem InvokeLater(). Dann gibs beim Doppelklick kein Aufflackern vom vorherigen Inhalt.

(Was auch nicht hilft, ist mInfoEP.setText("") und setProgramText() vor dem InvokeLater(). Womöglich verschiebt java selbst was in den gui thread als "Optimierung". Oder ich hab was übersehen.)
Windows 10 64bit, Java 1.8.0_202, TV Browser 4.0.1, Radeon RX 460
ds10
Site Admin
Beiträge: 19101
Registriert: 23 Jun 2005, 12:36
Kontaktdaten:

Re: [TVB-331] Inhaltangabe "Waltons"? Wie kommt´s?

Beitrag von ds10 »

Das hatte Bananeweizen damals umgestellt auf eine einzelne Instanz, da ja immer nur ein Fenster offen sein kann und das Initialisieren Zeit beansprucht, sollte es im Hintergrund schon geladen sein, damit es sofort zur Verfügung steht. Ich habe danach schon so einiges versucht und bei mir gibt's auch die Waltons nie zu sehen, wer weiß schon wieso es bei einem funktioniert und beim anderen nicht so richtig?
"First they ignore you, then they ridicule you, then they fight you, then you win." - Mahatma Gandhi
Unterstütze die Weiterentwicklung von TV-Browser
Antworten