[PATCH 2/4] qcap/filewriter: Implement IFileSinkFilter::SetFileName().
Zhiyi Zhang
zzhang at codeweavers.com
Wed Apr 22 21:04:43 CDT 2020
On 4/23/20 9:10 AM, Zebediah Figura wrote:
> Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
> ---
> dlls/qcap/filewriter.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/qcap/filewriter.c b/dlls/qcap/filewriter.c
> index e56b5f68a4..284fee2c36 100644
> --- a/dlls/qcap/filewriter.c
> +++ b/dlls/qcap/filewriter.c
> @@ -22,6 +22,7 @@
> #include "dshow.h"
> #include "qcap_main.h"
> #include "wine/debug.h"
> +#include "wine/unicode.h"
>
> WINE_DEFAULT_DEBUG_CHANNEL(qcap);
>
> @@ -31,6 +32,8 @@ struct file_writer
> IFileSinkFilter IFileSinkFilter_iface;
>
> struct strmbase_sink sink;
> +
> + WCHAR *filename;
> };
>
> static inline struct file_writer *impl_from_strmbase_pin(struct strmbase_pin *iface)
> @@ -87,6 +90,7 @@ static void file_writer_destroy(struct strmbase_filter *iface)
> {
> struct file_writer *filter = impl_from_strmbase_filter(iface);
>
> + heap_free(filter->filename);
> strmbase_sink_cleanup(&filter->sink);
> strmbase_filter_cleanup(&filter->filter);
> heap_free(filter);
> @@ -127,10 +131,16 @@ static HRESULT WINAPI filesinkfilter_SetFileName(IFileSinkFilter *iface,
> {
> struct file_writer *filter = impl_from_IFileSinkFilter(iface);
>
> - FIXME("filter %p, filename %s, mt %p, stub!\n", filter, debugstr_w(filename), mt);
> + TRACE("filter %p, filename %s, mt %p, stub!\n", filter, debugstr_w(filename), mt);
> strmbase_dump_media_type(mt);
>
> - return E_NOTIMPL;
> + if (mt)
> + FIXME("Ignoring media type %p.\n", mt);
> +
> + if (!(filter->filename = heap_alloc((strlenW(filename) + 1) * sizeof(WCHAR))))
> + return E_OUTOFMEMORY;
> + strcpyW(filter->filename, filename);
filter->filename is leaked when filesinkfilter_SetFileName() is called more than once.
> + return S_OK;
> }
>
> static HRESULT WINAPI filesinkfilter_GetCurFile(IFileSinkFilter *iface,
More information about the wine-devel
mailing list