source: trunk/src/quartz/seekpass.c@ 6710

Last change on this file since 6710 was 6710, checked in by sandervl, 24 years ago

wine update

File size: 2.7 KB
Line 
1/*
2 * Implementation of CLSID_SeekingPassThru.
3 *
4 * hidenori@a2.ctktv.ne.jp
5 */
6
7#include "config.h"
8
9#include "windef.h"
10#include "winbase.h"
11#include "wingdi.h"
12#include "winerror.h"
13#include "wine/obj_base.h"
14#include "strmif.h"
15#include "uuids.h"
16
17#include "debugtools.h"
18DEFAULT_DEBUG_CHANNEL(quartz);
19
20#include "quartz_private.h"
21#include "seekpass.h"
22
23
24
25static HRESULT WINAPI
26ISeekingPassThru_fnQueryInterface(ISeekingPassThru* iface,REFIID riid,void** ppobj)
27{
28 CSeekingPassThru_THIS(iface,seekpass);
29
30 TRACE("(%p)->()\n",This);
31
32 return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
33}
34
35static ULONG WINAPI
36ISeekingPassThru_fnAddRef(ISeekingPassThru* iface)
37{
38 CSeekingPassThru_THIS(iface,seekpass);
39
40 TRACE("(%p)->()\n",This);
41
42 return IUnknown_AddRef(This->unk.punkControl);
43}
44
45static ULONG WINAPI
46ISeekingPassThru_fnRelease(ISeekingPassThru* iface)
47{
48 CSeekingPassThru_THIS(iface,seekpass);
49
50 TRACE("(%p)->()\n",This);
51
52 return IUnknown_Release(This->unk.punkControl);
53}
54
55static HRESULT WINAPI
56ISeekingPassThru_fnInit(ISeekingPassThru* iface,BOOL bRendering,IPin* pPin)
57{
58 CSeekingPassThru_THIS(iface,seekpass);
59
60 FIXME("(%p)->(%d,%p) stub!\n",This,bRendering,pPin);
61
62 return E_NOTIMPL;
63}
64
65
66static ICOM_VTABLE(ISeekingPassThru) iseekingpassthru =
67{
68 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
69 /* IUnknown fields */
70 ISeekingPassThru_fnQueryInterface,
71 ISeekingPassThru_fnAddRef,
72 ISeekingPassThru_fnRelease,
73 /* ISeekingPassThru fields */
74 ISeekingPassThru_fnInit,
75};
76
77static
78HRESULT CSeekingPassThru_InitISeekingPassThru(CSeekingPassThru* This)
79{
80 TRACE("(%p)\n",This);
81 ICOM_VTBL(&This->seekpass) = &iseekingpassthru;
82
83 return NOERROR;
84}
85
86static
87void CSeekingPassThru_UninitISeekingPassThru(CSeekingPassThru* This)
88{
89 TRACE("(%p)\n",This);
90}
91
92
93/* can I use offsetof safely? - FIXME? */
94static QUARTZ_IFEntry IFEntries[] =
95{
96 { &IID_ISeekingPassThru, offsetof(CSeekingPassThru,seekpass)-offsetof(CSeekingPassThru,unk) },
97};
98
99
100static void QUARTZ_DestroySeekingPassThru(IUnknown* punk)
101{
102 CSeekingPassThru_THIS(punk,unk);
103
104 CSeekingPassThru_UninitISeekingPassThru(This);
105}
106
107HRESULT QUARTZ_CreateSeekingPassThru(IUnknown* punkOuter,void** ppobj)
108{
109 CSeekingPassThru* This;
110 HRESULT hr;
111
112 TRACE("(%p,%p)\n",punkOuter,ppobj);
113
114 This = (CSeekingPassThru*)QUARTZ_AllocObj( sizeof(CSeekingPassThru) );
115 if ( This == NULL )
116 return E_OUTOFMEMORY;
117
118 QUARTZ_IUnkInit( &This->unk, punkOuter );
119 hr = CSeekingPassThru_InitISeekingPassThru(This);
120 if ( FAILED(hr) )
121 {
122 QUARTZ_FreeObj( This );
123 return hr;
124 }
125
126 This->unk.pEntries = IFEntries;
127 This->unk.dwEntries = sizeof(IFEntries)/sizeof(IFEntries[0]);
128 This->unk.pOnFinalRelease = QUARTZ_DestroySeekingPassThru;
129
130 *ppobj = (void*)(&This->unk);
131
132 return S_OK;
133}
134
Note: See TracBrowser for help on using the repository browser.