AmbulantPlayer_qt gets a Segmentation fault when playing
Flashlight-CE.smil in USA-martket mode when clicking repeatedly betweeb "Info" and "Introduction"
(ambulantPlayer_gtk does't react to clicks for this .smil
file because of bug #1627927) -- need to check that too
Logged In: YES
user_id=886581
Originator: YES
m_new_focussed_nodes == NULL when smil_player::pointed is called.
Caused by the fact that clicking on "Introduction" causes a 2nd smil_player
to be instantiated. In the call to smil_player::before_mousemove is done
by the 1st instance, the call smil_player::pointed is done by the 2nd.
But the 2nd instance shouldn't have been instantiated in the first place:
when smil_player::show_link is called for "Introduction" the fact that
this is an internal hyperjump was not detected because srcstate==src_pause!
Futhermore, this also causes m_system->open() to be called with to_replace==NULL, which causes qt_mainloop->open() not to delete the 1st
instance and replace it by the 2nd.
Logged In: YES
user_id=886581
Originator: YES
Fixed in smil_player.cpp 1.92 by adding a test m_new_focussed_nodes!=NULL
in smil_player::pointed().
This can happen when before_mousemove() was not called for this smil_player. However, this is not really the solution.
The real problem is, that when moving back to the first item of the smil show, a new player is instanciated (this is funny by itself!) but the old player is returned by qt_ambulant_widget::get_gui_player() in qt_ambulant_widget::mouseMoveEvent() whereas m_qt_window->user_event() when called in that function acts on the new player.
But it fixes the crash, doesn't raise new problems like hanging or irresponsivenes, therefore leaving the bug and lowering its priority.
Logged In: YES
user_id=886581
Originator: YES
Reverted the temp.fix in smil_player.cpp into an assertion (1.83).
Logged In: YES
user_id=45365
Originator: NO
The original recipy no longer works since Flashlight-CE.smil r1.7.
However, the bug still exists. Even though the original trigger was nonsensical there are scenarios that are valid and would probably trigger the same bug, for example using srcPlaystate="pause" while jumping to another document. Conceivably the same sequence of events as Kees elaborates in the 2007-01-12 11:51 comment could occur.
Mac does not have this problem (it doesn't reuse windows, which is the real cause of this) but gtk and maybe windows could have it too.
qt is not supported anymore.