[KSPROXY]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Wed, 24 Mar 2010 14:03:40 +0000 (14:03 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Wed, 24 Mar 2010 14:03:40 +0000 (14:03 +0000)
- Add support for IKsClockForward interface which is an alias for IKsObject
- CKsClockForwarder is now functional

svn path=/trunk/; revision=46397

reactos/dll/directx/ksproxy/clockforward.cpp

index d692dec..75d7795 100644 (file)
@@ -12,6 +12,8 @@
 const GUID KSCATEGORY_CLOCK       = {0x53172480, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
 #endif
 
 const GUID KSCATEGORY_CLOCK       = {0x53172480, 0x4791, 0x11D0, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}};
 #endif
 
+const GUID IID_IKsClockForwarder              = {0x877e4352, 0x6fea, 0x11d0, {0xb8, 0x63, 0x00, 0xaa, 0x00, 0xa2, 0x16, 0xa1}};
+
 DWORD WINAPI CKsClockForwarder_ThreadStartup(LPVOID lpParameter);
 
 class CKsClockForwarder : public IDistributorNotify,
 DWORD WINAPI CKsClockForwarder_ThreadStartup(LPVOID lpParameter);
 
 class CKsClockForwarder : public IDistributorNotify,
@@ -91,7 +93,8 @@ CKsClockForwarder::QueryInterface(
         reinterpret_cast<IUnknown*>(*Output)->AddRef();
         return NOERROR;
     }
         reinterpret_cast<IUnknown*>(*Output)->AddRef();
         return NOERROR;
     }
-    if (IsEqualGUID(refiid, IID_IKsObject))
+    if (IsEqualGUID(refiid, IID_IKsObject) ||
+        IsEqualGUID(refiid, IID_IKsClockForwarder))
     {
         *Output = (IKsObject*)(this);
         reinterpret_cast<IKsObject*>(*Output)->AddRef();
     {
         *Output = (IKsObject*)(this);
         reinterpret_cast<IKsObject*>(*Output)->AddRef();
@@ -105,15 +108,6 @@ CKsClockForwarder::QueryInterface(
         return NOERROR;
     }
 
         return NOERROR;
     }
 
-#if 0
-    if (IsEqualGUID(refiid, IID_IKsClockForwarder))
-    {
-        *Output = PVOID(this);
-        reinterpret_cast<IKsObject*>(*Output)->AddRef();
-        return NOERROR;
-    }
-#endif
-
     return E_NOINTERFACE;
 }
 
     return E_NOINTERFACE;
 }
 
@@ -126,8 +120,12 @@ HRESULT
 STDMETHODCALLTYPE
 CKsClockForwarder::Stop()
 {
 STDMETHODCALLTYPE
 CKsClockForwarder::Stop()
 {
-    OutputDebugString("CKsClockForwarder::Stop\n");
+    WCHAR Buffer[200];
+
+    swprintf(Buffer, L"CKsClockForwarder::Stop m_ThreadStarted %u m_PendingStop %u m_hThread %p m_hEvent %p m_Handle %p\n", m_ThreadStarted, m_PendingStop, m_hThread, m_hEvent, m_Handle);
+    OutputDebugStringW(Buffer);
 
 
+    m_Time = 0;
     if (m_ThreadStarted)
     {
         // signal pending stop
     if (m_ThreadStarted)
     {
         // signal pending stop
@@ -251,8 +249,7 @@ STDMETHODCALLTYPE
 CKsClockForwarder::NotifyGraphChange()
 {
     OutputDebugString("CKsClockForwarder::NotifyGraphChange\n");
 CKsClockForwarder::NotifyGraphChange()
 {
     OutputDebugString("CKsClockForwarder::NotifyGraphChange\n");
-    DebugBreak();
-    return E_NOTIMPL;
+    return NOERROR;
 }
 
 //-------------------------------------------------------------------
 }
 
 //-------------------------------------------------------------------
@@ -282,6 +279,10 @@ CKsClockForwarder::SetClockState(KSSTATE State)
     if (SUCCEEDED(hr))
         m_State = State;
 
     if (SUCCEEDED(hr))
         m_State = State;
 
+    WCHAR Buffer[100];
+    swprintf(Buffer, L"CKsClockForwarder::SetClockState m_State %u State %u hr %lx\n", m_State, State, hr);
+    OutputDebugStringW(Buffer);
+
     return hr;
 }
 
     return hr;
 }