[QUARTZ]
authorAmine Khaldi <amine.khaldi@reactos.org>
Fri, 26 Sep 2014 09:51:00 +0000 (09:51 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Fri, 26 Sep 2014 09:51:00 +0000 (09:51 +0000)
* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64305

reactos/dll/directx/wine/quartz/avisplit.c
reactos/dll/directx/wine/quartz/dsoundrender.c
reactos/dll/directx/wine/quartz/filesource.c
reactos/dll/directx/wine/quartz/filtergraph.c
reactos/dll/directx/wine/quartz/filtermapper.c
reactos/dll/directx/wine/quartz/parser.c
reactos/dll/directx/wine/quartz/regsvr.c
reactos/dll/directx/wine/quartz/videorenderer.c
reactos/media/doc/README.WINE

index f651cf7..a1b1c59 100644 (file)
@@ -134,6 +134,7 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe
     PullPin *pin = This->Parser.pInputPin;
     IMediaSample *sample = NULL;
     HRESULT hr;
+    ULONG ref;
 
     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);
 
             if (FAILED(hr))
-                assert(IMediaSample_Release(sample) == 0);
+            {
+                ref = IMediaSample_Release(sample);
+                assert(ref == 0);
+            }
         }
         else
         {
@@ -261,7 +265,8 @@ static HRESULT AVISplitter_next_request(AVISplitterImpl *This, DWORD streamnumbe
         if (sample)
         {
             ERR("There should be no sample!\n");
-            assert(IMediaSample_Release(sample) == 0);
+            ref = IMediaSample_Release(sample);
+            assert(ref == 0);
         }
     }
     TRACE("--> %08x\n", hr);
@@ -493,8 +498,8 @@ static HRESULT AVISplitter_first_request(LPVOID iface)
 static HRESULT AVISplitter_done_process(LPVOID iface)
 {
     AVISplitterImpl *This = iface;
-
     DWORD x;
+    ULONG ref;
 
     for (x = 0; x < This->Parser.cStreams; ++x)
     {
@@ -508,7 +513,10 @@ static HRESULT AVISplitter_done_process(LPVOID iface)
         stream->thread = NULL;
 
         if (stream->sample)
-            assert(IMediaSample_Release(stream->sample) == 0);
+        {
+            ref = IMediaSample_Release(stream->sample);
+            assert(ref == 0);
+        }
         stream->sample = NULL;
 
         ResetEvent(stream->packet_queued);
@@ -1202,6 +1210,7 @@ static HRESULT AVISplitter_Flush(LPVOID iface)
 {
     AVISplitterImpl *This = iface;
     DWORD x;
+    ULONG ref;
 
     TRACE("(%p)->()\n", This);
 
@@ -1210,7 +1219,10 @@ static HRESULT AVISplitter_Flush(LPVOID iface)
         StreamData *stream = This->streams + x;
 
         if (stream->sample)
-            assert(IMediaSample_Release(stream->sample) == 0);
+        {
+            ref = IMediaSample_Release(stream->sample);
+            assert(ref == 0);
+        }
         stream->sample = NULL;
 
         ResetEvent(stream->packet_queued);
index e5c3454..1169be8 100644 (file)
@@ -225,7 +225,7 @@ end:
 
 static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This)
 {
-    while (1)
+    while (This->renderer.filter.state == State_Running)
     {
         DWORD 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.csRenderLock);
         WaitForSingleObject(This->blocked, 10);
-        EnterCriticalSection(&This->renderer.filter.csFilter);
         EnterCriticalSection(&This->renderer.csRenderLock);
+        EnterCriticalSection(&This->renderer.filter.csFilter);
         This->in_loop = 0;
     }
 
index 46229cc..6644f64 100644 (file)
@@ -834,7 +834,7 @@ static ULONG WINAPI FileAsyncReaderPin_Release(IPin * iface)
         CloseHandle(This->hFile);
         This->csList.DebugInfo->Spare[0] = 0;
         DeleteCriticalSection(&This->csList);
-        CoTaskMemFree(This);
+        BaseOutputPin_Destroy(&This->pin);
         return 0;
     }
     return refCount;
index 9aff4a2..b8c1204 100644 (file)
@@ -801,7 +801,7 @@ static HRESULT GetFilterInfo(IMoniker* pMoniker, VARIANT* pvar)
         hr = IPropertyBag_Read(pPropBagCat, wszFriendlyName, pvar, NULL);
 
     if (SUCCEEDED(hr))
-        TRACE("Moniker = %s\n", debugstr_w(V_UNION(pvar, bstrVal)));
+        TRACE("Moniker = %s\n", debugstr_w(V_BSTR(pvar)));
 
     if (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)) {
             WARN("Unable to add filter (%x)\n", hr);
             IBaseFilter_Release(pfilter);
@@ -1384,7 +1384,7 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
                 goto error;
             }
 
-            hr = IFilterGraph2_AddFilter(iface, pfilter, V_UNION(&var, bstrVal));
+            hr = IFilterGraph2_AddFilter(iface, pfilter, V_BSTR(&var));
             if (FAILED(hr)) {
                 WARN("Unable to add filter (%x)\n", hr);
                 IBaseFilter_Release(pfilter);
@@ -1424,10 +1424,10 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
                 IPin_Release(ppinfilter);
 
                 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;
                 }
-                TRACE("Connected, recursing %s\n",  debugstr_w(V_UNION(&var, bstrVal)));
+                TRACE("Connected, recursing %s\n",  debugstr_w(V_BSTR(&var)));
 
                 VariantClear(&var);
 
index 0d7e873..e13a967 100644 (file)
@@ -348,7 +348,7 @@ static HRESULT FM2_WriteFriendlyName(IPropertyBag * pPropBag, LPCWSTR szName)
     BSTR value;
 
     V_VT(&var) = VT_BSTR;
-    V_UNION(&var, bstrVal) = value = SysAllocString(szName);
+    V_BSTR(&var) = value = SysAllocString(szName);
 
     ret = IPropertyBag_Write(pPropBag, wszFriendlyName, &var);
     SysFreeString(value);
@@ -367,7 +367,7 @@ static HRESULT FM2_WriteClsid(IPropertyBag * pPropBag, REFCLSID clsid)
     if (SUCCEEDED(hr))
     {
         V_VT(&var) = VT_BSTR;
-        V_UNION(&var, bstrVal) = wszClsid;
+        V_BSTR(&var) = wszClsid;
         hr = IPropertyBag_Write(pPropBag, wszClsidName, &var);
     }
     CoTaskMemFree(wszClsid);
@@ -779,7 +779,7 @@ static HRESULT WINAPI FilterMapper3_RegisterFilter(
             }
 
             V_VT(&var) = VT_ARRAY | VT_UI1;
-            V_UNION(&var, parray) = psa;
+            V_ARRAY(&var) = psa;
 
             if (SUCCEEDED(hr))
                 hr = IPropertyBag_Write(pPropBag, wszFilterDataName, &var);
@@ -928,7 +928,7 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
         if (SUCCEEDED(hrSub))
             hrSub = IPropertyBag_Read(pPropBagCat, wszMeritName, &var, NULL);
 
-        if (SUCCEEDED(hrSub) && (V_UNION(&var, ulVal) >= dwMerit))
+        if (SUCCEEDED(hrSub) && (V_UI4(&var) >= dwMerit))
         {
             CLSID clsidCat;
             IEnumMoniker * pEnum;
@@ -941,14 +941,14 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
                 VARIANT temp;
                 V_VT(&temp) = VT_EMPTY;
                 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);
             }
 
             hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL);
 
             if (SUCCEEDED(hrSub))
-                hrSub = CLSIDFromString(V_UNION(&var, bstrVal), &clsidCat);
+                hrSub = CLSIDFromString(V_BSTR(&var), &clsidCat);
 
             if (SUCCEEDED(hrSub))
                 hrSub = ICreateDevEnum_CreateClassEnumerator(pCreateDevEnum, &clsidCat, &pEnum, 0);
@@ -975,7 +975,7 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
                         VARIANT temp;
                         V_VT(&temp) = VT_EMPTY;
                         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);
                     }
 
@@ -985,13 +985,13 @@ static HRESULT WINAPI FilterMapper3_EnumMatchingFilters(
                     }
 
                     if (SUCCEEDED(hrSub))
-                        hrSub = SafeArrayAccessData(V_UNION(&var, parray), (LPVOID*)&pData);
+                        hrSub = SafeArrayAccessData(V_ARRAY(&var), (LPVOID*)&pData);
 
                     if (SUCCEEDED(hrSub))
                         hrSub = FM2_ReadFilterData(pData, &rf2);
 
                     if (pData)
-                        SafeArrayUnaccessData(V_UNION(&var, parray));
+                        SafeArrayUnaccessData(V_ARRAY(&var));
 
                     VariantClear(&var);
 
@@ -1165,7 +1165,7 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
 
     if (FAILED(hr))
         return hr;
-
+    
     while(IEnumMoniker_Next(ppEnumMoniker, 1, &IMon, &nb) == S_OK)
     {
         IMoniker_Release(IMon);
@@ -1185,7 +1185,7 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
         return E_OUTOFMEMORY;
     }
     ZeroMemory(regfilters, nb_mon * sizeof(REGFILTER)); /* will prevent bad free of Name in case of error. */
-
+    
     IEnumMoniker_Reset(ppEnumMoniker);
     while(IEnumMoniker_Next(ppEnumMoniker, 1, &IMon, &nb) == S_OK)
     {
@@ -1203,7 +1203,7 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
             hrSub = IPropertyBag_Read(pPropBagCat, wszClsidName, &var, NULL);
 
         if (SUCCEEDED(hrSub))
-            hrSub = CLSIDFromString(V_UNION(&var, bstrVal), &clsid);
+            hrSub = CLSIDFromString(V_BSTR(&var), &clsid);
 
         VariantClear(&var);
 
@@ -1212,14 +1212,14 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
 
         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)))
                 hr = E_OUTOFMEMORY;
         }
 
         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;
             idx++;
         }
@@ -1239,7 +1239,7 @@ static HRESULT WINAPI FilterMapper_EnumMatchingFilters(
         CoTaskMemFree(regfilters[idx].Name);
     CoTaskMemFree(regfilters);
     IEnumMoniker_Release(ppEnumMoniker);
-
+    
     return hr;
 }
 
@@ -1260,7 +1260,7 @@ static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper * iface, CLSID c
     {
         strcpyW(wszKeyName, wszFilterSlash);
         strcatW(wszKeyName, wszClsid);
-
+    
         lRet = RegCreateKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
         hr = HRESULT_FROM_WIN32(lRet);
     }
@@ -1276,7 +1276,7 @@ static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper * iface, CLSID c
     {
         strcpyW(wszKeyName, wszClsidSlash);
         strcatW(wszKeyName, wszClsid);
-
+    
         lRet = RegCreateKeyExW(HKEY_CLASSES_ROOT, wszKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL);
         hr = HRESULT_FROM_WIN32(lRet);
     }
@@ -1287,7 +1287,7 @@ static HRESULT WINAPI FilterMapper_RegisterFilter(IFilterMapper * iface, CLSID c
         hr = HRESULT_FROM_WIN32(lRet);
         RegCloseKey(hKey);
     }
-
+    
     CoTaskMemFree(wszClsid);
 
     return hr;
@@ -1347,7 +1347,7 @@ static HRESULT WINAPI FilterMapper_RegisterPin(
         strcpyW(wszPinsKeyName, wszPins);
         strcatW(wszPinsKeyName, wszSlash);
         strcatW(wszPinsKeyName, szName);
-
+    
         lRet = RegCreateKeyExW(hKey, wszPinsKeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hPinsKey, NULL);
         hr = HRESULT_FROM_WIN32(lRet);
         CoTaskMemFree(wszPinsKeyName);
index 705c784..9b698dc 100644 (file)
@@ -156,6 +156,7 @@ void Parser_Destroy(ParserImpl *This)
 {
     IPin *connected = NULL;
     ULONG pinref;
+    HRESULT hr;
 
     assert(!This->filter.refCount);
     PullPin_WaitForStateChange(This->pInputPin, INFINITE);
@@ -164,9 +165,11 @@ void Parser_Destroy(ParserImpl *This)
     IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &connected);
     if (connected)
     {
-        assert(IPin_Disconnect(connected) == S_OK);
+        hr = IPin_Disconnect(connected);
+        assert(hr == S_OK);
         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);
     if (pinref)
index 686257d..94f0bc7 100644 (file)
@@ -592,7 +592,7 @@ static HRESULT register_filters(struct regsvr_filter const *list)
                    if (list->pins[i].mediatypes[j].subtype)
                        memcpy(lpClsid + j*2 + 1, list->pins[i].mediatypes[j].subtype, sizeof(CLSID));
                    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));
                        *(DWORD*)(lpClsid + j*2 + 1) = list->pins[i].mediatypes[j].fourcc;
                    }
index 42b29f1..0024bef 100644 (file)
@@ -352,11 +352,11 @@ static HRESULT WINAPI VideoRenderer_EndFlush(BaseRenderer* iface)
     if (This->renderer.pMediaSample) {
         ResetEvent(This->hEvent);
         LeaveCriticalSection(iface->pInputPin->pin.pCritSec);
-        LeaveCriticalSection(&iface->csRenderLock);
         LeaveCriticalSection(&iface->filter.csFilter);
+        LeaveCriticalSection(&iface->csRenderLock);
         WaitForSingleObject(This->hEvent, INFINITE);
-        EnterCriticalSection(&iface->filter.csFilter);
         EnterCriticalSection(&iface->csRenderLock);
+        EnterCriticalSection(&iface->filter.csFilter);
         EnterCriticalSection(iface->pInputPin->pin.pCritSec);
     }
     if (This->renderer.filter.state == State_Paused) {
index 01679f4..1de6243 100644 (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/msdmo          # Synced to Wine-1.7.17
 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/win32/activeds            # Synced to Wine-1.7.17