Alistair Leslie-Hughes : wmvcore: Support IWMLanguageList interfaces in IWMReader.
Alexandre Julliard
julliard at winehq.org
Mon Jul 24 15:51:20 CDT 2017
Module: wine
Branch: master
Commit: 163aac1670b9fb45061ff69f4c29efc971ee6055
URL: http://source.winehq.org/git/wine.git/?a=commit;h=163aac1670b9fb45061ff69f4c29efc971ee6055
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Sun Jul 23 00:51:36 2017 +0000
wmvcore: Support IWMLanguageList interfaces in IWMReader.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wmvcore/tests/wmvcore.c | 6 +++++
dlls/wmvcore/wmvcore_main.c | 62 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 68 insertions(+)
diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c
index 6080a93..5bfec25 100644
--- a/dlls/wmvcore/tests/wmvcore.c
+++ b/dlls/wmvcore/tests/wmvcore.c
@@ -82,6 +82,7 @@ static void test_wmreader_interfaces(void)
IWMDRMReader2 *drmreader2;
IWMDRMReader3 *drmreader3;
IWMReaderPlaylistBurn *playlist;
+ IWMLanguageList *langlist;
hr = WMCreateReader( NULL, 0, &reader );
ok(hr == S_OK, "WMCreateReader failed 0x%08x\n", hr);
@@ -151,6 +152,9 @@ static void test_wmreader_interfaces(void)
hr = IWMReader_QueryInterface(reader, &IID_IWMReaderPlaylistBurn, (void **)&playlist);
ok(hr == S_OK, "Failed 0x%08x\n", hr);
+ hr = IWMReader_QueryInterface(reader, &IID_IWMLanguageList, (void **)&langlist);
+ ok(hr == S_OK, "Failed 0x%08x\n", hr);
+
if(packet)
IWMPacketSize_Release(packet);
if(packet2)
@@ -185,6 +189,8 @@ static void test_wmreader_interfaces(void)
IWMReaderTypeNegotiation_Release(negotiation);
if(playlist)
IWMReaderPlaylistBurn_Release(playlist);
+ if(langlist)
+ IWMLanguageList_Release(langlist);
IWMReader_Release(reader);
}
diff --git a/dlls/wmvcore/wmvcore_main.c b/dlls/wmvcore/wmvcore_main.c
index 790aef0..9619463 100644
--- a/dlls/wmvcore/wmvcore_main.c
+++ b/dlls/wmvcore/wmvcore_main.c
@@ -73,6 +73,7 @@ typedef struct {
IWMReaderTimecode IWMReaderTimecode_iface;
IWMReaderPlaylistBurn IWMReaderPlaylistBurn_iface;
IWMHeaderInfo3 IWMHeaderInfo3_iface;
+ IWMLanguageList IWMLanguageList_iface;
LONG ref;
} WMReader;
@@ -139,6 +140,9 @@ static HRESULT WINAPI WMReader_QueryInterface(IWMReader *iface, REFIID riid, voi
}else if(IsEqualGUID(riid, &IID_IWMHeaderInfo3)) {
TRACE("(%p)->(IWMHeaderInfo3 %p)\n", This, ppv);
*ppv = &This->IWMHeaderInfo3_iface;
+ }else if(IsEqualGUID(riid, &IID_IWMLanguageList)) {
+ TRACE("(%p)->(IWMLanguageList %p)\n", This, ppv);
+ *ppv = &This->IWMLanguageList_iface;
}else {
*ppv = NULL;
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
@@ -1580,6 +1584,63 @@ static const IWMHeaderInfo3Vtbl WMHeaderInfo3Vtbl =
headerinfo_AddCodecInfo
};
+
+static inline WMReader *impl_from_IWMLanguageList(IWMLanguageList *iface)
+{
+ return CONTAINING_RECORD(iface, WMReader, IWMLanguageList_iface);
+}
+
+static HRESULT WINAPI langlist_QueryInterface(IWMLanguageList *iface, REFIID riid, void **ppv)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ return IWMReader_QueryInterface(&This->IWMReader_iface, riid, ppv);
+}
+
+static ULONG WINAPI langlist_AddRef(IWMLanguageList *iface)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ return IWMReader_AddRef(&This->IWMReader_iface);
+}
+
+static ULONG WINAPI langlist_Release(IWMLanguageList *iface)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ return IWMReader_Release(&This->IWMReader_iface);
+}
+
+static HRESULT WINAPI langlist_GetLanguageCount(IWMLanguageList *iface, WORD *count)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ FIXME("%p, %p\n", This, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI langlist_GetLanguageDetails(IWMLanguageList *iface, WORD index,
+ WCHAR *language, WORD *length)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ FIXME("%p, %d, %p, %p\n", This, index, language, length);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI langlist_AddLanguageByRFC1766String(IWMLanguageList *iface, LPCWSTR_WMSDK_TYPE_SAFE language,
+ WORD *index)
+{
+ WMReader *This = impl_from_IWMLanguageList(iface);
+ FIXME("%p, %p, %p\n", This, language, index);
+ return E_NOTIMPL;
+}
+
+static const IWMLanguageListVtbl WMLanguageListVtbl =
+{
+ langlist_QueryInterface,
+ langlist_AddRef,
+ langlist_Release,
+ langlist_GetLanguageCount,
+ langlist_GetLanguageDetails,
+ langlist_AddLanguageByRFC1766String
+};
+
HRESULT WINAPI WMCreateReader(IUnknown *reserved, DWORD rights, IWMReader **ret_reader)
{
WMReader *reader;
@@ -1599,6 +1660,7 @@ HRESULT WINAPI WMCreateReader(IUnknown *reserved, DWORD rights, IWMReader **ret_
reader->IWMReaderTimecode_iface.lpVtbl = &WMReaderTimecodeVtbl;
reader->IWMReaderPlaylistBurn_iface.lpVtbl = &WMReaderPlaylistBurnVtbl;
reader->IWMHeaderInfo3_iface.lpVtbl = &WMHeaderInfo3Vtbl;
+ reader->IWMLanguageList_iface.lpVtbl = &WMLanguageListVtbl;
reader->ref = 1;
*ret_reader = &reader->IWMReader_iface;
More information about the wine-cvs
mailing list