A couple of optimizations to avoid some server calls in WIN_FindWndPtr
[wine/multimedia.git] / dlls / quartz / ptmseek.c
blob95f7c394289c576fdcbd1d54e2ff8032a3274a0e
1 /*
2 * A pass-through class for IMediaSeeking.
4 * hidenori@a2.ctktv.ne.jp
5 */
7 #include "config.h"
9 #include "windef.h"
10 #include "winbase.h"
11 #include "wingdi.h"
12 #include "winuser.h"
13 #include "winerror.h"
14 #include "wine/obj_base.h"
15 #include "strmif.h"
16 #include "control.h"
17 #include "uuids.h"
19 #include "debugtools.h"
20 DEFAULT_DEBUG_CHANNEL(quartz);
22 #include "quartz_private.h"
23 #include "ptimpl.h"
26 #define QUERYSEEKPASS \
27 IMediaSeeking* pSeek; \
28 HRESULT hr; \
29 hr = CPassThruImpl_QuerySeekPass( This, &pSeek ); \
30 if ( FAILED(hr) ) return hr;
33 static HRESULT WINAPI
34 IMediaSeeking_fnQueryInterface(IMediaSeeking* iface,REFIID riid,void** ppobj)
36 CPassThruImpl_THIS(iface,mseek);
38 TRACE("(%p)->()\n",This);
40 return IUnknown_QueryInterface(This->punk,riid,ppobj);
43 static ULONG WINAPI
44 IMediaSeeking_fnAddRef(IMediaSeeking* iface)
46 CPassThruImpl_THIS(iface,mseek);
48 TRACE("(%p)->()\n",This);
50 return IUnknown_AddRef(This->punk);
53 static ULONG WINAPI
54 IMediaSeeking_fnRelease(IMediaSeeking* iface)
56 CPassThruImpl_THIS(iface,mseek);
58 TRACE("(%p)->()\n",This);
60 return IUnknown_Release(This->punk);
64 static HRESULT WINAPI
65 IMediaSeeking_fnGetCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
67 CPassThruImpl_THIS(iface,mseek);
68 QUERYSEEKPASS
70 TRACE("(%p)->()\n",This);
72 return IMediaSeeking_GetCapabilities(pSeek,pdwCaps);
75 static HRESULT WINAPI
76 IMediaSeeking_fnCheckCapabilities(IMediaSeeking* iface,DWORD* pdwCaps)
78 CPassThruImpl_THIS(iface,mseek);
79 QUERYSEEKPASS
81 TRACE("(%p)->()\n",This);
83 return IMediaSeeking_CheckCapabilities(pSeek,pdwCaps);
86 static HRESULT WINAPI
87 IMediaSeeking_fnIsFormatSupported(IMediaSeeking* iface,const GUID* pidFormat)
89 CPassThruImpl_THIS(iface,mseek);
90 QUERYSEEKPASS
92 TRACE("(%p)->()\n",This);
94 return IMediaSeeking_IsFormatSupported(pSeek,pidFormat);
97 static HRESULT WINAPI
98 IMediaSeeking_fnQueryPreferredFormat(IMediaSeeking* iface,GUID* pidFormat)
100 CPassThruImpl_THIS(iface,mseek);
101 QUERYSEEKPASS
103 TRACE("(%p)->()\n",This);
105 return IMediaSeeking_QueryPreferredFormat(pSeek,pidFormat);
108 static HRESULT WINAPI
109 IMediaSeeking_fnGetTimeFormat(IMediaSeeking* iface,GUID* pidFormat)
111 CPassThruImpl_THIS(iface,mseek);
112 QUERYSEEKPASS
114 TRACE("(%p)->()\n",This);
116 return IMediaSeeking_GetTimeFormat(pSeek,pidFormat);
119 static HRESULT WINAPI
120 IMediaSeeking_fnIsUsingTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
122 CPassThruImpl_THIS(iface,mseek);
123 QUERYSEEKPASS
125 TRACE("(%p)->()\n",This);
127 return IMediaSeeking_IsUsingTimeFormat(pSeek,pidFormat);
130 static HRESULT WINAPI
131 IMediaSeeking_fnSetTimeFormat(IMediaSeeking* iface,const GUID* pidFormat)
133 CPassThruImpl_THIS(iface,mseek);
134 QUERYSEEKPASS
136 TRACE("(%p)->()\n",This);
138 return IMediaSeeking_SetTimeFormat(pSeek,pidFormat);
141 static HRESULT WINAPI
142 IMediaSeeking_fnGetDuration(IMediaSeeking* iface,LONGLONG* pllDuration)
144 CPassThruImpl_THIS(iface,mseek);
145 QUERYSEEKPASS
147 TRACE("(%p)->()\n",This);
149 return IMediaSeeking_GetDuration(pSeek,pllDuration);
152 static HRESULT WINAPI
153 IMediaSeeking_fnGetStopPosition(IMediaSeeking* iface,LONGLONG* pllPos)
155 CPassThruImpl_THIS(iface,mseek);
156 QUERYSEEKPASS
158 TRACE("(%p)->()\n",This);
160 return IMediaSeeking_GetStopPosition(pSeek,pllPos);
163 static HRESULT WINAPI
164 IMediaSeeking_fnGetCurrentPosition(IMediaSeeking* iface,LONGLONG* pllPos)
166 CPassThruImpl_THIS(iface,mseek);
167 QUERYSEEKPASS
169 TRACE("(%p)->()\n",This);
171 return IMediaSeeking_GetCurrentPosition(pSeek,pllPos);
174 static HRESULT WINAPI
175 IMediaSeeking_fnConvertTimeFormat(IMediaSeeking* iface,LONGLONG* pllOut,const GUID* pidFmtOut,LONGLONG llIn,const GUID* pidFmtIn)
177 CPassThruImpl_THIS(iface,mseek);
178 QUERYSEEKPASS
180 TRACE("(%p)->()\n",This);
182 return IMediaSeeking_ConvertTimeFormat(pSeek,pllOut,pidFmtOut,llIn,pidFmtIn);
185 static HRESULT WINAPI
186 IMediaSeeking_fnSetPositions(IMediaSeeking* iface,LONGLONG* pllCur,DWORD dwCurFlags,LONGLONG* pllStop,DWORD dwStopFlags)
188 CPassThruImpl_THIS(iface,mseek);
189 QUERYSEEKPASS
191 TRACE("(%p)->()\n",This);
193 return IMediaSeeking_SetPositions(pSeek,pllCur,dwCurFlags,pllStop,dwStopFlags);
196 static HRESULT WINAPI
197 IMediaSeeking_fnGetPositions(IMediaSeeking* iface,LONGLONG* pllCur,LONGLONG* pllStop)
199 CPassThruImpl_THIS(iface,mseek);
200 QUERYSEEKPASS
202 TRACE("(%p)->()\n",This);
204 return IMediaSeeking_GetPositions(pSeek,pllCur,pllStop);
207 static HRESULT WINAPI
208 IMediaSeeking_fnGetAvailable(IMediaSeeking* iface,LONGLONG* pllFirst,LONGLONG* pllLast)
210 CPassThruImpl_THIS(iface,mseek);
211 QUERYSEEKPASS
213 TRACE("(%p)->()\n",This);
215 return IMediaSeeking_GetAvailable(pSeek,pllFirst,pllLast);
218 static HRESULT WINAPI
219 IMediaSeeking_fnSetRate(IMediaSeeking* iface,double dblRate)
221 CPassThruImpl_THIS(iface,mseek);
222 QUERYSEEKPASS
224 TRACE("(%p)->()\n",This);
226 return IMediaSeeking_SetRate(pSeek,dblRate);
229 static HRESULT WINAPI
230 IMediaSeeking_fnGetRate(IMediaSeeking* iface,double* pdblRate)
232 CPassThruImpl_THIS(iface,mseek);
233 QUERYSEEKPASS
235 TRACE("(%p)->()\n",This);
237 return IMediaSeeking_GetRate(pSeek,pdblRate);
240 static HRESULT WINAPI
241 IMediaSeeking_fnGetPreroll(IMediaSeeking* iface,LONGLONG* pllPreroll)
243 CPassThruImpl_THIS(iface,mseek);
244 QUERYSEEKPASS
246 TRACE("(%p)->()\n",This);
248 return IMediaSeeking_GetPreroll(pSeek,pllPreroll);
254 static ICOM_VTABLE(IMediaSeeking) imseek =
256 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
257 /* IUnknown fields */
258 IMediaSeeking_fnQueryInterface,
259 IMediaSeeking_fnAddRef,
260 IMediaSeeking_fnRelease,
261 /* IMediaSeeking fields */
262 IMediaSeeking_fnGetCapabilities,
263 IMediaSeeking_fnCheckCapabilities,
264 IMediaSeeking_fnIsFormatSupported,
265 IMediaSeeking_fnQueryPreferredFormat,
266 IMediaSeeking_fnGetTimeFormat,
267 IMediaSeeking_fnIsUsingTimeFormat,
268 IMediaSeeking_fnSetTimeFormat,
269 IMediaSeeking_fnGetDuration,
270 IMediaSeeking_fnGetStopPosition,
271 IMediaSeeking_fnGetCurrentPosition,
272 IMediaSeeking_fnConvertTimeFormat,
273 IMediaSeeking_fnSetPositions,
274 IMediaSeeking_fnGetPositions,
275 IMediaSeeking_fnGetAvailable,
276 IMediaSeeking_fnSetRate,
277 IMediaSeeking_fnGetRate,
278 IMediaSeeking_fnGetPreroll,
283 HRESULT CPassThruImpl_InitIMediaSeeking( CPassThruImpl* pImpl )
285 TRACE("(%p)\n",pImpl);
286 ICOM_VTBL(&pImpl->mseek) = &imseek;
288 return NOERROR;
291 void CPassThruImpl_UninitIMediaSeeking( CPassThruImpl* pImpl )
293 TRACE("(%p)\n",pImpl);