[Bug 24869] New: Worms Armageddon: Dismissing post-mission frontend dialogues after sound has finished playing causes a freeze

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Oct 23 21:40:56 CDT 2010


http://bugs.winehq.org/show_bug.cgi?id=24869

           Summary: Worms Armageddon: Dismissing post-mission frontend
                    dialogues after sound has finished playing causes a
                    freeze
           Product: Wine
           Version: unspecified
          Platform: x86
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: quartz
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: thecybershadow at gmail.com


Created an attachment (id=31476)
 --> (http://bugs.winehq.org/attachment.cgi?id=31476)
Patch

Worms Armageddon will display a dialog before beginning a training mission
(describing the tasks to be performed), or after a mission or training mission
(displaying the player's results). This dialog is accompanied with a sound,
which is streamed from a .wav file using DirectShow.

If the dialog is dismissed after the sound has stopped playing, the game
freezes.

The reason for the freeze appears to be as follows:

When the dialog is dismissed, the game will attempt to stop the sound, whether
it's still playing or not. Part of its procedure to stop the sound involves
pausing the graph (using IMediaControl::Pause()). After that, it calls
IMediaControl::GetState(INFINITE, ...), which locks up the game.

The freeze occurs in Wine's DSoundRender_GetState - it will wait indefinitely
for the state_change event to be signalled - which will never happen. The
reason for this seems to be that the intended implementation of
DSoundRender_Pause is to put the filter into an intermediary state, and
complete the transition when a media sample is received (in
DSoundRender_Receive). However, since the end of file has been reached, a new
sample is never received, and the filter get stuck into an intermediary state.

The attached patch seems to fix the problem at hand, but I'm not certain about
its correctness.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list