* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64305
This commit is contained in:
Amine Khaldi 2014-09-26 09:51:00 +00:00
parent cd97d921f9
commit 80675f700d
9 changed files with 53 additions and 38 deletions

View file

@ -134,6 +134,7 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe
PullPin *pin = This->Parser.pInputPin; PullPin *pin = This->Parser.pInputPin;
IMediaSample *sample = NULL; IMediaSample *sample = NULL;
HRESULT hr; HRESULT hr;
ULONG ref;
TRACE("(%p, %u)->()\n", This, streamnumber); TRACE("(%p, %u)->()\n", This, streamnumber);
@ -247,7 +248,10 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe
hr = IAsyncReader_Request(pin->pReader, sample, streamnumber); hr = IAsyncReader_Request(pin->pReader, sample, streamnumber);
if (FAILED(hr)) if (FAILED(hr))
assert(IMediaSample_Release(sample) == 0); {
ref = IMediaSample_Release(sample);
assert(ref == 0);
}
} }
else else
{ {
@ -261,7 +265,8 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe
if (sample) if (sample)
{ {
ERR("There should be no sample!\n"); ERR("There should be no sample!\n");
assert(IMediaSample_Release(sample) == 0); ref = IMediaSample_Release(sample);
assert(ref == 0);
} }
} }
TRACE("--> %08x\n", hr); TRACE("--> %08x\n", hr);
@ -493,8 +498,8 @@ static HRESULT AVISplitter_first_request(LPVOID iface)
static HRESULT AVISplitter_done_process(LPVOID iface) static HRESULT AVISplitter_done_process(LPVOID iface)
{ {
AVISplitterImpl *This = iface; AVISplitterImpl *This = iface;
DWORD x; DWORD x;
ULONG ref;
for (x = 0; x < This->Parser.cStreams; ++x) for (x = 0; x < This->Parser.cStreams; ++x)
{ {
@ -508,7 +513,10 @@ static HRESULT AVISplitter_done_process(LPVOID iface)
stream->thread = NULL; stream->thread = NULL;
if (stream->sample) if (stream->sample)
assert(IMediaSample_Release(stream->sample) == 0); {
ref = IMediaSample_Release(stream->sample);
assert(ref == 0);
}
stream->sample = NULL; stream->sample = NULL;
ResetEvent(stream->packet_queued); ResetEvent(stream->packet_queued);
@ -1202,6 +1210,7 @@ static HRESULT AVISplitter_Flush(LPVOID iface)
{ {
AVISplitterImpl *This = iface; AVISplitterImpl *This = iface;
DWORD x; DWORD x;
ULONG ref;
TRACE("(%p)->()\n", This); TRACE("(%p)->()\n", This);
@ -1210,7 +1219,10 @@ static HRESULT AVISplitter_Flush(LPVOID iface)
StreamData *stream = This->streams + x; StreamData *stream = This->streams + x;
if (stream->sample) if (stream->sample)
assert(IMediaSample_Release(stream->sample) == 0); {
ref = IMediaSample_Release(stream->sample);
assert(ref == 0);
}
stream->sample = NULL; stream->sample = NULL;
ResetEvent(stream->packet_queued); ResetEvent(stream->packet_queued);

View file

@ -225,7 +225,7 @@ end:
static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This) static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This)
{ {
while (1) while (This->renderer.filter.state == State_Running)
{ {
DWORD pos1, pos2; DWORD pos1, pos2;
DSoundRender_UpdatePositions(This, &pos1, &pos2); DSoundRender_UpdatePositions(This, &pos1, &pos2);
@ -236,8 +236,8 @@ static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This)
LeaveCriticalSection(&This->renderer.filter.csFilter); LeaveCriticalSection(&This->renderer.filter.csFilter);
LeaveCriticalSection(&This->renderer.csRenderLock); LeaveCriticalSection(&This->renderer.csRenderLock);
WaitForSingleObject(This->blocked, 10); WaitForSingleObject(This->blocked, 10);
EnterCriticalSection(&This->renderer.filter.csFilter);
EnterCriticalSection(&This->renderer.csRenderLock); EnterCriticalSection(&This->renderer.csRenderLock);
EnterCriticalSection(&This->renderer.filter.csFilter);
This->in_loop = 0; This->in_loop = 0;
} }

View file

@ -834,7 +834,7 @@ static ULONG WINAPI FileAsyncReaderPin_Release(IPin * iface)
CloseHandle(This->hFile); CloseHandle(This->hFile);
This->csList.DebugInfo->Spare[0] = 0; This->csList.DebugInfo->Spare[0] = 0;
DeleteCriticalSection(&This->csList); DeleteCriticalSection(&This->csList);
CoTaskMemFree(This); BaseOutputPin_Destroy(&This->pin);
return 0; return 0;
} }
return refCount; return refCount;

View file

@ -801,7 +801,7 @@ static HRESULT GetFilterInfo(IMoniker* pMoniker, VARIANT* pvar)
hr = IPropertyBag_Read(pPropBagCat, wszFriendlyName, pvar, NULL); hr = IPropertyBag_Read(pPropBagCat, wszFriendlyName, pvar, NULL);
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
TRACE("Moniker = %s\n", debugstr_w(V_UNION(pvar, bstrVal))); TRACE("Moniker = %s\n", debugstr_w(V_BSTR(pvar)));
if (pPropBagCat) if (pPropBagCat)
IPropertyBag_Release(pPropBagCat); IPropertyBag_Release(pPropBagCat);
@ -1050,7 +1050,7 @@ static HRESULT WINAPI FilterGraph2_Connect(IFilterGraph2 *iface, IPin *ppinOut,
} }
} }
hr = IFilterGraph2_AddFilter(iface, pfilter, V_UNION(&var, bstrVal)); hr = IFilterGraph2_AddFilter(iface, pfilter, V_BSTR(&var));
if (FAILED(hr)) { if (FAILED(hr)) {
WARN("Unable to add filter (%x)\n", hr); WARN("Unable to add filter (%x)\n", hr);
IBaseFilter_Release(pfilter); IBaseFilter_Release(pfilter);
@ -1384,7 +1384,7 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
goto error; goto error;
} }
hr = IFilterGraph2_AddFilter(iface, pfilter, V_UNION(&var, bstrVal)); hr = IFilterGraph2_AddFilter(iface, pfilter, V_BSTR(&var));
if (FAILED(hr)) { if (FAILED(hr)) {
WARN("Unable to add filter (%x)\n", hr); WARN("Unable to add filter (%x)\n", hr);
IBaseFilter_Release(pfilter); IBaseFilter_Release(pfilter);
@ -1424,10 +1424,10 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
IPin_Release(ppinfilter); IPin_Release(ppinfilter);
if (FAILED(hr)) { if (FAILED(hr)) {
WARN("Unable to connect %s to renderer (%x)\n", debugstr_w(V_UNION(&var, bstrVal)), hr); WARN("Unable to connect %s to renderer (%x)\n", debugstr_w(V_BSTR(&var)), hr);
goto error; goto error;
} }
TRACE("Connected, recursing %s\n", debugstr_w(V_UNION(&var, bstrVal))); TRACE("Connected, recursing %s\n", debugstr_w(V_BSTR(&var)));
VariantClear(&var); VariantClear(&var);

View file

@ -348,7 +348,7 @@ static HRESULT FM2_WriteFriendlyName(IPropertyBag * pPropBag, LPCWSTR szName)
BSTR value; BSTR value;
V_VT(&var) = VT_BSTR; V_VT(&var) = VT_BSTR;
V_UNION(&var, bstrVal) = value = SysAllocString(szName); V_BSTR(&var) = value = SysAllocString(szName);
ret = IPropertyBag_Write(pPropBag, wszFriendlyName, &var); ret = IPropertyBag_Write(pPropBag, wszFriendlyName, &var);
SysFreeString(value); SysFreeString(value);
@ -367,7 +367,7 @@ static HRESULT FM2_WriteClsid(IPropertyBag * pPropBag, REFCLSID clsid)
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
{ {
V_VT(&var) = VT_BSTR; V_VT(&var) = VT_BSTR;
V_UNION(&var, bstrVal) = wszClsid; V_BSTR(&var) = wszClsid;
hr = IPropertyBag_Write(pPropBag, wszClsidName, &var); hr = IPropertyBag_Write(pPropBag, wszClsidName, &var);
} }
CoTaskMemFree(wszClsid); CoTaskMemFree(wszClsid);
@ -779,7 +779,7 @@ static HRESULT WINAPI FilterMapper3_RegisterFilter(
} }
V_VT(&var) = VT_ARRAY | VT_UI1; V_VT(&var) = VT_ARRAY | VT_UI1;
V_UNION(&var, parray) = psa; V_ARRAY(&var) = psa;
if (SUCCEEDED(hr)) if (SUCCEEDED(hr))
hr = IPropertyBag_Write(pPropBag, wszFilterDataName, &var); hr = IPropertyBag_Write(pPropBag, wszFilterDataName, &var);
@ -928,7 +928,7 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = IPropertyBag_Read(pPropBagCat, wszMeritName, &var, NULL); hrSub = IPropertyBag_Read(pPropBagCat, wszMeritName, &var, NULL);
if (SUCCEEDED(hrSub) && (V_UNION(&var, ulVal) >= dwMerit)) if (SUCCEEDED(hrSub) && (V_UI4(&var) >= dwMerit))
{ {
CLSID clsidCat; CLSID clsidCat;
IEnumMoniker * pEnum; IEnumMoniker * pEnum;
@ -941,14 +941,14 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
VARIANT temp; VARIANT temp;
V_VT(&temp) = VT_EMPTY; V_VT(&temp) = VT_EMPTY;
IPropertyBag_Read(pPropBagCat, wszFriendlyName, &temp, NULL); IPropertyBag_Read(pPropBagCat, wszFriendlyName, &temp, NULL);
TRACE("Considering category %s\n", debugstr_w(V_UNION(&temp, bstrVal))); TRACE("Considering category %s\n", debugstr_w(V_BSTR(&temp)));
VariantClear(&temp); VariantClear(&temp);
} }
hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL); hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL);
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = CLSIDFromString(V_UNION(&var, bstrVal), &clsidCat); hrSub = CLSIDFromString(V_BSTR(&var), &clsidCat);
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &clsidCat, &pEnum, 0); hrSub = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &clsidCat, &pEnum, 0);
@ -975,7 +975,7 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
VARIANT temp; VARIANT temp;
V_VT(&temp) = VT_EMPTY; V_VT(&temp) = VT_EMPTY;
IPropertyBag_Read(pPropBag, wszFriendlyName, &temp, NULL); IPropertyBag_Read(pPropBag, wszFriendlyName, &temp, NULL);
TRACE("Considering filter %s\n", debugstr_w(V_UNION(&temp, bstrVal))); TRACE("Considering filter %s\n", debugstr_w(V_BSTR(&temp)));
VariantClear(&temp); VariantClear(&temp);
} }
@ -985,13 +985,13 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
} }
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = SafeArrayAccessData(V_UNION(&var, parray), (LPVOID*)&pData); hrSub = SafeArrayAccessData(V_ARRAY(&var), (LPVOID*)&pData);
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = FM2_ReadFilterData(pData, &rf2); hrSub = FM2_ReadFilterData(pData, &rf2);
if (pData) if (pData)
SafeArrayUnaccessData(V_UNION(&var, parray)); SafeArrayUnaccessData(V_ARRAY(&var));
VariantClear(&var); VariantClear(&var);
@ -1203,7 +1203,7 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL); hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL);
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
hrSub = CLSIDFromString(V_UNION(&var, bstrVal), &clsid); hrSub = CLSIDFromString(V_BSTR(&var), &clsid);
VariantClear(&var); VariantClear(&var);
@ -1212,14 +1212,14 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
if (SUCCEEDED(hrSub)) if (SUCCEEDED(hrSub))
{ {
len = (strlenW(V_UNION(&var, bstrVal))+1) * sizeof(WCHAR); len = (strlenW(V_BSTR(&var))+1) * sizeof(WCHAR);
if (!(regfilters[idx].Name = CoTaskMemAlloc(len*2))) if (!(regfilters[idx].Name = CoTaskMemAlloc(len*2)))
hr = E_OUTOFMEMORY; hr = E_OUTOFMEMORY;
} }
if (SUCCEEDED(hrSub) && regfilters[idx].Name) if (SUCCEEDED(hrSub) && regfilters[idx].Name)
{ {
memcpy(regfilters[idx].Name, V_UNION(&var, bstrVal), len); memcpy(regfilters[idx].Name, V_BSTR(&var), len);
regfilters[idx].Clsid = clsid; regfilters[idx].Clsid = clsid;
idx++; idx++;
} }

View file

@ -156,6 +156,7 @@ void Parser_Destroy(ParserImpl *This)
{ {
IPin *connected = NULL; IPin *connected = NULL;
ULONG pinref; ULONG pinref;
HRESULT hr;
assert(!This->filter.refCount); assert(!This->filter.refCount);
PullPin_WaitForStateChange(This->pInputPin, INFINITE); PullPin_WaitForStateChange(This->pInputPin, INFINITE);
@ -164,9 +165,11 @@ void Parser_Destroy(ParserImpl *This)
IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &connected); IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &connected);
if (connected) if (connected)
{ {
assert(IPin_Disconnect(connected) == S_OK); hr = IPin_Disconnect(connected);
assert(hr == S_OK);
IPin_Release(connected); IPin_Release(connected);
assert(IPin_Disconnect(&This->pInputPin->pin.IPin_iface) == S_OK); hr = IPin_Disconnect(&This->pInputPin->pin.IPin_iface);
assert(hr == S_OK);
} }
pinref = IPin_Release(&This->pInputPin->pin.IPin_iface); pinref = IPin_Release(&This->pInputPin->pin.IPin_iface);
if (pinref) if (pinref)

View file

@ -592,7 +592,7 @@ static HRESULT register_filters(struct regsvr_filter const *list)
if (list->pins[i].mediatypes[j].subtype) if (list->pins[i].mediatypes[j].subtype)
memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].subtype, sizeof(CLSID)); memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].subtype, sizeof(CLSID));
else { else {
/* Subtype are often a combination of major type + fourcc/tag */ /* Subtypes are often a combination of major type + fourcc/tag */
memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].majortype, sizeof(CLSID)); memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].majortype, sizeof(CLSID));
*(DWORD*)(lpClsid + j*2 + 1) = list->pins[i].mediatypes[j].fourcc; *(DWORD*)(lpClsid + j*2 + 1) = list->pins[i].mediatypes[j].fourcc;
} }

View file

@ -352,11 +352,11 @@ static HRESULT WINAPI VideoRenderer_EndFlush(BaseRenderer* iface)
if (This->renderer.pMediaSample) { if (This->renderer.pMediaSample) {
ResetEvent(This->hEvent); ResetEvent(This->hEvent);
LeaveCriticalSection(iface->pInputPin->pin.pCritSec); LeaveCriticalSection(iface->pInputPin->pin.pCritSec);
LeaveCriticalSection(&iface->csRenderLock);
LeaveCriticalSection(&iface->filter.csFilter); LeaveCriticalSection(&iface->filter.csFilter);
LeaveCriticalSection(&iface->csRenderLock);
WaitForSingleObject(This->hEvent, INFINITE); WaitForSingleObject(This->hEvent, INFINITE);
EnterCriticalSection(&iface->filter.csFilter);
EnterCriticalSection(&iface->csRenderLock); EnterCriticalSection(&iface->csRenderLock);
EnterCriticalSection(&iface->filter.csFilter);
EnterCriticalSection(iface->pInputPin->pin.pCritSec); EnterCriticalSection(iface->pInputPin->pin.pCritSec);
} }
if (This->renderer.filter.state == State_Paused) { if (This->renderer.filter.state == State_Paused) {

View file

@ -45,7 +45,7 @@ reactos/dll/directx/wine/dxdiagn # Synced to Wine-1.7.17
reactos/dll/directx/wine/dxgi # Synced to Wine-1.7.27 reactos/dll/directx/wine/dxgi # Synced to Wine-1.7.27
reactos/dll/directx/wine/msdmo # Synced to Wine-1.7.17 reactos/dll/directx/wine/msdmo # Synced to Wine-1.7.17
reactos/dll/directx/wine/qedit # Synced to Wine-1.7.27 reactos/dll/directx/wine/qedit # Synced to Wine-1.7.27
reactos/dll/directx/wine/quartz # Synced to Wine-1.7.17 reactos/dll/directx/wine/quartz # Synced to Wine-1.7.27
reactos/dll/directx/wine/wined3d # Synced to Wine-1.7.27 reactos/dll/directx/wine/wined3d # Synced to Wine-1.7.27
reactos/dll/win32/activeds # Synced to Wine-1.7.17 reactos/dll/win32/activeds # Synced to Wine-1.7.17