mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-14 20:55:40 +00:00
winegstreamer: Check for already opened stream in wm_reader_open*.
This commit is contained in:
parent
359258560e
commit
ed0d100ec9
|
@ -393,21 +393,11 @@ static HRESULT WINAPI WMReader_Open(IWMReader *iface, const WCHAR *url,
|
|||
reader, debugstr_w(url), callback, context);
|
||||
|
||||
EnterCriticalSection(&reader->cs);
|
||||
EnterCriticalSection(&reader->reader.cs);
|
||||
|
||||
if (reader->reader.wg_parser)
|
||||
{
|
||||
LeaveCriticalSection(&reader->reader.cs);
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
WARN("Stream is already open; returning E_UNEXPECTED.\n");
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr = wm_reader_open_file(&reader->reader, url))
|
||||
&& FAILED(hr = async_reader_open(reader, callback, context)))
|
||||
wm_reader_close(&reader->reader);
|
||||
|
||||
LeaveCriticalSection(&reader->reader.cs);
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
return hr;
|
||||
}
|
||||
|
@ -873,21 +863,11 @@ static HRESULT WINAPI WMReaderAdvanced2_OpenStream(IWMReaderAdvanced6 *iface,
|
|||
TRACE("reader %p, stream %p, callback %p, context %p.\n", reader, stream, callback, context);
|
||||
|
||||
EnterCriticalSection(&reader->cs);
|
||||
EnterCriticalSection(&reader->reader.cs);
|
||||
|
||||
if (reader->reader.wg_parser)
|
||||
{
|
||||
LeaveCriticalSection(&reader->reader.cs);
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
WARN("Stream is already open; returning E_UNEXPECTED.\n");
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
if (SUCCEEDED(hr = wm_reader_open_stream(&reader->reader, stream))
|
||||
&& FAILED(hr = async_reader_open(reader, callback, context)))
|
||||
wm_reader_close(&reader->reader);
|
||||
|
||||
LeaveCriticalSection(&reader->reader.cs);
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -1558,6 +1558,13 @@ HRESULT wm_reader_open_stream(struct wm_reader *reader, IStream *stream)
|
|||
|
||||
EnterCriticalSection(&reader->cs);
|
||||
|
||||
if (reader->wg_parser)
|
||||
{
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
WARN("Stream is already open; returning E_UNEXPECTED.\n");
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
IStream_AddRef(reader->source_stream = stream);
|
||||
if (FAILED(hr = init_stream(reader, stat.cbSize.QuadPart)))
|
||||
{
|
||||
|
@ -1591,6 +1598,14 @@ HRESULT wm_reader_open_file(struct wm_reader *reader, const WCHAR *filename)
|
|||
|
||||
EnterCriticalSection(&reader->cs);
|
||||
|
||||
if (reader->wg_parser)
|
||||
{
|
||||
LeaveCriticalSection(&reader->cs);
|
||||
WARN("Stream is already open; returning E_UNEXPECTED.\n");
|
||||
CloseHandle(file);
|
||||
return E_UNEXPECTED;
|
||||
}
|
||||
|
||||
reader->file = file;
|
||||
|
||||
if (FAILED(hr = init_stream(reader, size.QuadPart)))
|
||||
|
|
Loading…
Reference in a new issue