Closed
Bug 714078
Opened 14 years ago
Closed 14 years ago
Code in AudioSession::OnSessionDisconnected needs to run asynchronously
Categories
(Core :: Widget: Win32, defect)
Core
Widget: Win32
Tracking
()
RESOLVED
FIXED
mozilla12
People
(Reporter: khuey, Assigned: khuey)
Details
Attachments
(1 file)
|
2.46 KB,
patch
|
ehsan.akhgari
:
review+
|
Details | Diff | Splinter Review |
http://msdn.microsoft.com/en-us/library/windows/desktop/dd368289%28v=VS.85%29.aspx
>In implementing the IAudioSessionEvents interface, the client should observe these rules to avoid deadlocks and undefined behavior:
>
> The methods in the interface must be nonblocking. The client should never wait on a synchronization object during an event callback.
> The client should never call the IAudioSessionControl::UnregisterAudioSessionNotification method during an event callback.
> The client should never release the final reference on a WASAPI object during an event callback.
I hit a deadlock at shutdown today that looked like it might be a result of us doing this.
Patch coming up.
| Assignee | ||
Comment 1•14 years ago
|
||
Attachment #584764 -
Flags: review?(ehsan)
| Assignee | ||
Comment 2•14 years ago
|
||
Technically NS_DispatchToMainThread takes a synchronization object ... but I think we can get away with that since it's a Gecko-only object.
Comment 3•14 years ago
|
||
Comment on attachment 584764 [details] [diff] [review]
Patch
Review of attachment 584764 [details] [diff] [review]:
-----------------------------------------------------------------
r=me
::: widget/src/windows/AudioSession.cpp
@@ +84,5 @@
> STDMETHODIMP OnDisplayNameChanged(LPCWSTR aDisplayName, LPCGUID aContext);
> STDMETHODIMP OnGroupingParamChanged(LPCGUID aGroupingParam, LPCGUID aContext);
> STDMETHODIMP OnIconPathChanged(LPCWSTR aIconPath, LPCGUID aContext);
> STDMETHODIMP OnSessionDisconnected(AudioSessionDisconnectReason aReason);
> + nsresult OnSessionDisconnectedInternal();
Make this private please.
@@ +451,5 @@
> mAudioSessionControl->UnregisterAudioSessionNotification(this);
> mAudioSessionControl = nsnull;
> +
> + Start(); // If it fails there's not much we can do
> + return NS_OK;
Allow me to express my disgust over (N)S_OK. :-)
Attachment #584764 -
Flags: review?(ehsan) → review+
| Assignee | ||
Comment 4•14 years ago
|
||
Flags: in-testsuite-
Target Milestone: --- → mozilla12
| Assignee | ||
Comment 5•14 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•