On 4/16/20 10:24 AM, Gabriel Ivăncescu wrote:
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com
This will be needed after put_Filter is implemented so that it passes the tests properly.
dlls/qedit/mediadet.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c index 0a06d52..5152eea 100644 --- a/dlls/qedit/mediadet.c +++ b/dlls/qedit/mediadet.c @@ -28,6 +28,7 @@ #include "ole2.h"
#include "qedit_private.h" +#include "wine/heap.h" #include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(qedit); @@ -40,6 +41,7 @@ typedef struct MediaDetImpl { IGraphBuilder *graph; IBaseFilter *source; IBaseFilter *splitter;
- WCHAR *filename; LONG num_streams; LONG cur_stream; IPin *cur_pin;
@@ -65,6 +67,8 @@ static void MD_cleanup(MediaDetImpl *This) This->splitter = NULL; if (This->graph) IGraphBuilder_Release(This->graph); This->graph = NULL;
- if (This->filename) heap_free(This->filename);
- This->filename = NULL; This->num_streams = -1; This->cur_stream = 0;
} @@ -341,9 +345,6 @@ static HRESULT WINAPI MediaDet_get_StreamLength(IMediaDet* iface, double *pVal) static HRESULT WINAPI MediaDet_get_Filename(IMediaDet* iface, BSTR *pVal) { MediaDetImpl *This = impl_from_IMediaDet(iface);
IFileSourceFilter *file;
LPOLESTR name;
HRESULT hr;
TRACE("(%p)\n", This);
@@ -353,21 +354,10 @@ static HRESULT WINAPI MediaDet_get_Filename(IMediaDet* iface, BSTR *pVal) *pVal = NULL; /* MSDN says it should return E_FAIL if no file is open, but tests show otherwise. */
- if (!This->source)
- if (!This->filename) return S_OK;
- hr = IBaseFilter_QueryInterface(This->source, &IID_IFileSourceFilter,
(void **) &file);
- if (FAILED(hr))
return hr;
- hr = IFileSourceFilter_GetCurFile(file, &name, NULL);
- IFileSourceFilter_Release(file);
- if (FAILED(hr))
return hr;
- *pVal = SysAllocString(name);
- CoTaskMemFree(name);
- *pVal = SysAllocString(This->filename); if (!*pVal) return E_OUTOFMEMORY;
@@ -522,6 +512,7 @@ static HRESULT WINAPI MediaDet_put_Filename(IMediaDet* iface, BSTR newVal) MediaDetImpl *This = impl_from_IMediaDet(iface); IGraphBuilder *gb; IBaseFilter *bf;
WCHAR *filename; HRESULT hr;
TRACE("(%p)->(%s)\n", This, debugstr_w(newVal));
@@ -537,14 +528,23 @@ static HRESULT WINAPI MediaDet_put_Filename(IMediaDet* iface, BSTR newVal) if (FAILED(hr)) return hr;
- if (!(filename = heap_alloc((wcslen(newVal) + 1) * sizeof(WCHAR))))
qedit is compiled with msvcrt, so this can be wcsdup().
{
IGraphBuilder_Release(gb);
return E_OUTOFMEMORY;
}
if (FAILED(hr = IGraphBuilder_AddSourceFilter(gb, newVal, L"Reader", &bf))) {
heap_free(filename); IGraphBuilder_Release(gb); return hr;
}
This->graph = gb; This->source = bf;
This->filename = filename;
wcscpy(filename, newVal); hr = GetSplitter(This); if (FAILED(hr)) return hr;