[PATCH 1/5] quartz: Handle seeking while running better

Maarten Lankhorst m.b.lankhorst at gmail.com
Fri Dec 10 09:06:55 CST 2010


---
 dlls/quartz/filtergraph.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/dlls/quartz/filtergraph.c b/dlls/quartz/filtergraph.c
index 37ed9b3..39dd745 100644
--- a/dlls/quartz/filtergraph.c
+++ b/dlls/quartz/filtergraph.c
@@ -2470,17 +2470,18 @@ static HRESULT WINAPI MediaSeeking_SetPositions(IMediaSeeking *iface,
     else if ((dwStopFlags & 0x7) != AM_SEEKING_NoPositioning)
         FIXME("Stop position not handled yet!\n");
 
+    if (state == State_Running && !(dwCurrentFlags & AM_SEEKING_NoFlush))
+        IMediaControl_Pause((IMediaControl*)&This->IMediaControl_vtbl);
     args.current = pCurrent;
     args.stop = pStop;
     args.curflags = dwCurrentFlags;
     args.stopflags = dwStopFlags;
     hr = all_renderers_seek(This, found_setposition, (DWORD_PTR)&args);
 
-    if ((dwCurrentFlags & 0x7) != AM_SEEKING_NoPositioning) {
-        if (This->state == State_Running)
-            FIXME("Seeking while graph is running is not properly supported!\n");
+    if ((dwCurrentFlags & 0x7) != AM_SEEKING_NoPositioning)
         This->pause_time = This->start_time = -1;
-    }
+    if (state == State_Running && !(dwCurrentFlags & AM_SEEKING_NoFlush))
+        IMediaControl_Run((IMediaControl*)&This->IMediaControl_vtbl);
     LeaveCriticalSection(&This->cs);
 
     return hr;
-- 
1.7.1




More information about the wine-patches mailing list