Nikolay Sivov : mfplat: Remove extra critical section used in sample implementation.

Alexandre Julliard julliard at winehq.org
Fri Mar 6 16:38:41 CST 2020


Module: wine
Branch: master
Commit: 7f114274c0843bc7ec079a1eacea07466b2cdabc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7f114274c0843bc7ec079a1eacea07466b2cdabc

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Fri Mar  6 18:32:25 2020 +0300

mfplat: Remove extra critical section used in sample implementation.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mfplat/buffer.c | 55 +++++++++++++++++++++++++---------------------------
 1 file changed, 26 insertions(+), 29 deletions(-)

diff --git a/dlls/mfplat/buffer.c b/dlls/mfplat/buffer.c
index 03037590ec..8e54a538f6 100644
--- a/dlls/mfplat/buffer.c
+++ b/dlls/mfplat/buffer.c
@@ -49,7 +49,6 @@ struct sample
     size_t buffer_count;
     size_t capacity;
     DWORD flags;
-    CRITICAL_SECTION cs;
     DWORD prop_flags;
     LONGLONG duration;
     LONGLONG timestamp;
@@ -281,7 +280,6 @@ static ULONG WINAPI sample_Release(IMFSample *iface)
         for (i = 0; i < sample->buffer_count; ++i)
             IMFMediaBuffer_Release(sample->buffers[i]);
         clear_attributes_object(&sample->attributes);
-        DeleteCriticalSection(&sample->cs);
         heap_free(sample->buffers);
         heap_free(sample);
     }
@@ -566,9 +564,9 @@ static HRESULT WINAPI sample_GetSampleFlags(IMFSample *iface, DWORD *flags)
 
     TRACE("%p, %p.\n", iface, flags);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     *flags = sample->flags;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -579,9 +577,9 @@ static HRESULT WINAPI sample_SetSampleFlags(IMFSample *iface, DWORD flags)
 
     TRACE("%p, %#x.\n", iface, flags);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     sample->flags = flags;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -593,12 +591,12 @@ static HRESULT WINAPI sample_GetSampleTime(IMFSample *iface, LONGLONG *timestamp
 
     TRACE("%p, %p.\n", iface, timestamp);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     if (sample->prop_flags & SAMPLE_PROP_HAS_TIMESTAMP)
         *timestamp = sample->timestamp;
     else
         hr = MF_E_NO_SAMPLE_TIMESTAMP;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -609,10 +607,10 @@ static HRESULT WINAPI sample_SetSampleTime(IMFSample *iface, LONGLONG timestamp)
 
     TRACE("%p, %s.\n", iface, wine_dbgstr_longlong(timestamp));
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     sample->timestamp = timestamp;
     sample->prop_flags |= SAMPLE_PROP_HAS_TIMESTAMP;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -624,12 +622,12 @@ static HRESULT WINAPI sample_GetSampleDuration(IMFSample *iface, LONGLONG *durat
 
     TRACE("%p, %p.\n", iface, duration);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     if (sample->prop_flags & SAMPLE_PROP_HAS_DURATION)
         *duration = sample->duration;
     else
         hr = MF_E_NO_SAMPLE_DURATION;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -640,10 +638,10 @@ static HRESULT WINAPI sample_SetSampleDuration(IMFSample *iface, LONGLONG durati
 
     TRACE("%p, %s.\n", iface, wine_dbgstr_longlong(duration));
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     sample->duration = duration;
     sample->prop_flags |= SAMPLE_PROP_HAS_DURATION;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -657,9 +655,9 @@ static HRESULT WINAPI sample_GetBufferCount(IMFSample *iface, DWORD *count)
     if (!count)
         return E_INVALIDARG;
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     *count = sample->buffer_count;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -671,7 +669,7 @@ static HRESULT WINAPI sample_GetBufferByIndex(IMFSample *iface, DWORD index, IMF
 
     TRACE("%p, %u, %p.\n", iface, index, buffer);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     if (index < sample->buffer_count)
     {
         *buffer = sample->buffers[index];
@@ -679,7 +677,7 @@ static HRESULT WINAPI sample_GetBufferByIndex(IMFSample *iface, DWORD index, IMF
     }
     else
         hr = E_INVALIDARG;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -691,7 +689,7 @@ static HRESULT WINAPI sample_ConvertToContiguousBuffer(IMFSample *iface, IMFMedi
 
     TRACE("%p, %p.\n", iface, buffer);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
 
     if (sample->buffer_count == 0)
         hr = E_UNEXPECTED;
@@ -706,7 +704,7 @@ static HRESULT WINAPI sample_ConvertToContiguousBuffer(IMFSample *iface, IMFMedi
         hr = E_NOTIMPL;
     }
 
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -718,7 +716,7 @@ static HRESULT WINAPI sample_AddBuffer(IMFSample *iface, IMFMediaBuffer *buffer)
 
     TRACE("%p, %p.\n", iface, buffer);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     if (!mf_array_reserve((void **)&sample->buffers, &sample->capacity, sample->buffer_count + 1,
             sizeof(*sample->buffers)))
         hr = E_OUTOFMEMORY;
@@ -727,7 +725,7 @@ static HRESULT WINAPI sample_AddBuffer(IMFSample *iface, IMFMediaBuffer *buffer)
         sample->buffers[sample->buffer_count++] = buffer;
         IMFMediaBuffer_AddRef(buffer);
     }
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -739,7 +737,7 @@ static HRESULT WINAPI sample_RemoveBufferByIndex(IMFSample *iface, DWORD index)
 
     TRACE("%p, %u.\n", iface, index);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     if (index < sample->buffer_count)
     {
         IMFMediaBuffer_Release(sample->buffers[index]);
@@ -752,7 +750,7 @@ static HRESULT WINAPI sample_RemoveBufferByIndex(IMFSample *iface, DWORD index)
     }
     else
         hr = E_INVALIDARG;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return hr;
 }
@@ -764,11 +762,11 @@ static HRESULT WINAPI sample_RemoveAllBuffers(IMFSample *iface)
 
     TRACE("%p.\n", iface);
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     for (i = 0; i < sample->buffer_count; ++i)
          IMFMediaBuffer_Release(sample->buffers[i]);
     sample->buffer_count = 0;
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -783,13 +781,13 @@ static HRESULT WINAPI sample_GetTotalLength(IMFSample *iface, DWORD *total_lengt
 
     *total_length = 0;
 
-    EnterCriticalSection(&sample->cs);
+    EnterCriticalSection(&sample->attributes.cs);
     for (i = 0; i < sample->buffer_count; ++i)
     {
         if (SUCCEEDED(IMFMediaBuffer_GetCurrentLength(sample->buffers[i], &length)))
             *total_length += length;
     }
-    LeaveCriticalSection(&sample->cs);
+    LeaveCriticalSection(&sample->attributes.cs);
 
     return S_OK;
 }
@@ -873,7 +871,6 @@ HRESULT WINAPI MFCreateSample(IMFSample **sample)
     }
 
     object->IMFSample_iface.lpVtbl = &samplevtbl;
-    InitializeCriticalSection(&object->cs);
 
     *sample = &object->IMFSample_iface;
 




More information about the wine-cvs mailing list