[PATCH 5/5] rtworkq: Add MMCSS-related stubs.
Nikolay Sivov
nsivov at codeweavers.com
Tue Mar 31 07:46:38 CDT 2020
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/mfplat/mfplat.spec | 8 ++++--
dlls/rtworkq/queue.c | 57 +++++++++++++++++++++++++++++++++++++++
dlls/rtworkq/rtworkq.spec | 16 +++++------
include/mfapi.h | 7 +++++
include/rtworkq.idl | 20 ++++++++++++++
5 files changed, 98 insertions(+), 10 deletions(-)
diff --git a/dlls/mfplat/mfplat.spec b/dlls/mfplat/mfplat.spec
index 5311757d2b..25e5f62f21 100644
--- a/dlls/mfplat/mfplat.spec
+++ b/dlls/mfplat/mfplat.spec
@@ -24,6 +24,7 @@
@ stdcall MFBeginCreateFile(long long long wstr ptr ptr ptr)
@ stub MFBeginGetHostByName
@ stub MFBeginRegisterWorkQueueWithMMCSS
+@ stdcall MFBeginRegisterWorkQueueWithMMCSSEx(long wstr long long ptr ptr) rtworkq.RtwqBeginRegisterWorkQueueWithMMCSS
@ stub MFBeginUnregisterWorkQueueWithMMCSS
@ stub MFBlockThread
@ stub MFCalculateBitmapImageSize
@@ -107,8 +108,9 @@
@ stdcall MFGetSystemTime()
@ stdcall MFGetTimerPeriodicity(ptr)
@ stub MFGetUncompressedVideoFormat
-@ stub MFGetWorkQueueMMCSSClass
-@ stub MFGetWorkQueueMMCSSTaskId
+@ stdcall MFGetWorkQueueMMCSSClass(long ptr ptr) rtworkq.RtwqGetWorkQueueMMCSSClass
+@ stdcall MFGetWorkQueueMMCSSTaskId(long ptr) rtworkq.RtwqGetWorkQueueMMCSSTaskId
+@ stdcall MFGetWorkQueueMMCSSPriority(long ptr) rtworkq.RtwqGetWorkQueueMMCSSPriority
@ stdcall MFHeapAlloc(long long str long long)
@ stdcall MFHeapFree(ptr)
@ stub MFInitAMMediaTypeFromMFMediaType
@@ -135,6 +137,7 @@
@ stub MFRecordError
@ stdcall MFRegisterLocalByteStreamHandler(wstr wstr ptr)
@ stdcall MFRegisterLocalSchemeHandler(wstr ptr)
+@ stdcall MFRegisterPlatformWithMMCSS(wstr ptr long) rtworkq.RtwqRegisterPlatformWithMMCSS
@ stdcall MFRemovePeriodicCallback(long) rtworkq.RtwqRemovePeriodicCallback
@ stdcall MFScheduleWorkItem(ptr ptr int64 ptr)
@ stdcall MFScheduleWorkItemEx(ptr int64 ptr) rtworkq.RtwqScheduleWorkItem
@@ -156,6 +159,7 @@
@ stdcall MFTUnregister(int128)
@ stdcall MFTUnregisterLocal(ptr)
@ stdcall MFTUnregisterLocalByCLSID(int128)
+@ stdcall MFUnregisterPlatformFromMMCSS() rtworkq.RtwqUnregisterPlatformFromMMCSS
@ stub MFTraceError
@ stub MFTraceFuncEnter
@ stub MFUnblockThread
diff --git a/dlls/rtworkq/queue.c b/dlls/rtworkq/queue.c
index 32bd75b346..ce06df1c8c 100644
--- a/dlls/rtworkq/queue.c
+++ b/dlls/rtworkq/queue.c
@@ -1485,3 +1485,60 @@ HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie)
return E_NOTIMPL;
}
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length)
+{
+ FIXME("%#x, %p, %p.\n", queue, class, length);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid)
+{
+ FIXME("%#x, %p.\n", queue, taskid);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority)
+{
+ FIXME("%#x, %p.\n", queue, priority);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *class, DWORD *taskid, LONG priority)
+{
+ FIXME("%s, %p, %d.\n", debugstr_w(class), taskid, priority);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqUnregisterPlatformFromMMCSS(void)
+{
+ FIXME("\n");
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *class, DWORD taskid, LONG priority,
+ IRtwqAsyncCallback *callback, IUnknown *state)
+{
+ FIXME("%#x, %s, %u, %d, %p, %p.\n", queue, debugstr_w(class), taskid, priority, callback, state);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events)
+{
+ FIXME("%p.\n", events);
+
+ return E_NOTIMPL;
+}
+
+HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events)
+{
+ FIXME("%p.\n", events);
+
+ return E_NOTIMPL;
+}
diff --git a/dlls/rtworkq/rtworkq.spec b/dlls/rtworkq/rtworkq.spec
index 11955ac1a6..09d877790d 100644
--- a/dlls/rtworkq/rtworkq.spec
+++ b/dlls/rtworkq/rtworkq.spec
@@ -1,7 +1,7 @@
@ stdcall RtwqAddPeriodicCallback(ptr ptr ptr)
@ stdcall RtwqAllocateSerialWorkQueue(long ptr)
@ stdcall RtwqAllocateWorkQueue(long ptr)
-@ stub RtwqBeginRegisterWorkQueueWithMMCSS
+@ stdcall RtwqBeginRegisterWorkQueueWithMMCSS(long wstr long long ptr ptr)
@ stub RtwqBeginUnregisterWorkQueueWithMMCSS
@ stdcall RtwqCancelDeadline(long)
@ stub RtwqCancelMultipleWaitingWorkItem
@@ -10,9 +10,9 @@
@ stub RtwqEndRegisterWorkQueueWithMMCSS
@ stub RtwqEndUnregisterWorkQueueWithMMCSS
@ stub RtwqGetPlatform
-@ stub RtwqGetWorkQueueMMCSSClass
-@ stub RtwqGetWorkQueueMMCSSPriority
-@ stub RtwqGetWorkQueueMMCSSTaskId
+@ stdcall RtwqGetWorkQueueMMCSSClass(long ptr ptr)
+@ stdcall RtwqGetWorkQueueMMCSSPriority(long ptr)
+@ stdcall RtwqGetWorkQueueMMCSSTaskId(long ptr)
@ stdcall RtwqInvokeCallback(ptr)
@ stdcall RtwqJoinWorkQueue(long long ptr)
@ stdcall RtwqLockPlatform()
@@ -21,8 +21,8 @@
@ stub RtwqPutMultipleWaitingWorkItem
@ stdcall RtwqPutWaitingWorkItem(long long ptr ptr)
@ stdcall RtwqPutWorkItem(long long ptr)
-@ stub RtwqRegisterPlatformEvents
-@ stub RtwqRegisterPlatformWithMMCSS
+@ stdcall RtwqRegisterPlatformEvents(ptr)
+@ stdcall RtwqRegisterPlatformWithMMCSS(wstr ptr long)
@ stdcall RtwqRemovePeriodicCallback(long)
@ stdcall RtwqScheduleWorkItem(ptr int64 ptr)
@ stdcall RtwqSetDeadline(long int64 ptr)
@@ -33,5 +33,5 @@
@ stdcall RtwqUnjoinWorkQueue(long long)
@ stdcall RtwqUnlockPlatform()
@ stdcall RtwqUnlockWorkQueue(long)
-@ stub RtwqUnregisterPlatformEvents
-@ stub RtwqUnregisterPlatformFromMMCSS
+@ stdcall RtwqUnregisterPlatformEvents(ptr)
+@ stdcall RtwqUnregisterPlatformFromMMCSS()
diff --git a/include/mfapi.h b/include/mfapi.h
index f83b7636fe..b9383630ab 100644
--- a/include/mfapi.h
+++ b/include/mfapi.h
@@ -488,6 +488,8 @@ HRESULT WINAPI MFAllocateWorkQueue(DWORD *queue);
HRESULT WINAPI MFAllocateWorkQueueEx(MFASYNC_WORKQUEUE_TYPE queue_type, DWORD *queue);
HRESULT WINAPI MFBeginCreateFile(MF_FILE_ACCESSMODE access_mode, MF_FILE_OPENMODE open_mode, MF_FILE_FLAGS flags,
const WCHAR *path, IMFAsyncCallback *callback, IUnknown *state, IUnknown **cancel_cookie);
+HRESULT WINAPI MFBeginRegisterWorkQueueWithMMCSSEx(DWORD queue, const WCHAR *usage_class, DWORD taskid, LONG priority,
+ IMFAsyncCallback *callback, IUnknown *state);
HRESULT WINAPI MFCalculateImageSize(REFGUID subtype, UINT32 width, UINT32 height, UINT32 *size);
HRESULT WINAPI MFCancelCreateFile(IUnknown *cancel_cookie);
HRESULT WINAPI MFCancelWorkItem(MFWORKITEM_KEY key);
@@ -518,6 +520,9 @@ HRESULT WINAPI MFGetAttributesAsBlobSize(IMFAttributes *attributes, UINT32 *size
HRESULT WINAPI MFGetStrideForBitmapInfoHeader(DWORD format, DWORD width, LONG *stride);
HRESULT WINAPI MFGetPlaneSize(DWORD format, DWORD width, DWORD height, DWORD *size);
HRESULT WINAPI MFGetTimerPeriodicity(DWORD *periodicity);
+HRESULT WINAPI MFGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length);
+HRESULT WINAPI MFGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);
+HRESULT WINAPI MFGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);
HRESULT WINAPI MFTEnum(GUID category, UINT32 flags, MFT_REGISTER_TYPE_INFO *input_type,
MFT_REGISTER_TYPE_INFO *output_type, IMFAttributes *attributes,
CLSID **pclsids, UINT32 *pcount);
@@ -535,6 +540,7 @@ HRESULT WINAPI MFPutWorkItemEx(DWORD queue, IMFAsyncResult *result);
HRESULT WINAPI MFPutWorkItemEx2(DWORD queue, LONG priority, IMFAsyncResult *result);
HRESULT WINAPI MFRegisterLocalByteStreamHandler(const WCHAR *extension, const WCHAR *mime, IMFActivate *activate);
HRESULT WINAPI MFRegisterLocalSchemeHandler(const WCHAR *scheme, IMFActivate *activate);
+HRESULT WINAPI MFRegisterPlatformWithMMCSS(const WCHAR *usage_class, DWORD *taskid, LONG priority);
HRESULT WINAPI MFScheduleWorkItem(IMFAsyncCallback *callback, IUnknown *state, INT64 timeout, MFWORKITEM_KEY *key);
HRESULT WINAPI MFScheduleWorkItemEx(IMFAsyncResult *result, INT64 timeout, MFWORKITEM_KEY *key);
HRESULT WINAPI MFTRegister(CLSID clsid, GUID category, LPWSTR name, UINT32 flags, UINT32 cinput,
@@ -551,6 +557,7 @@ HRESULT WINAPI MFShutdown(void);
HRESULT WINAPI MFStartup(ULONG version, DWORD flags);
HRESULT WINAPI MFUnlockPlatform(void);
HRESULT WINAPI MFUnlockWorkQueue(DWORD queue);
+HRESULT WINAPI MFUnregisterPlatformFromMMCSS(void);
HRESULT WINAPI MFTUnregister(CLSID clsid);
HRESULT WINAPI MFTUnregisterLocal(IClassFactory *factory);
HRESULT WINAPI MFTUnregisterLocalByCLSID(CLSID clsid);
diff --git a/include/rtworkq.idl b/include/rtworkq.idl
index ca6645b862..ed32df1c3b 100644
--- a/include/rtworkq.idl
+++ b/include/rtworkq.idl
@@ -52,6 +52,18 @@ interface IRtwqAsyncCallback : IUnknown
HRESULT Invoke([in] IRtwqAsyncResult *result);
}
+[
+ object,
+ uuid(63d9255a-7ff1-4b61-8faf-ed6460dacf2b),
+ local
+]
+interface IRtwqPlatformEvents : IUnknown
+{
+ HRESULT InitializationComplete(void);
+ HRESULT ShutdownStart(void);
+ HRESULT ShutdownComplete(void);
+}
+
cpp_quote("#define RTWQ_E_ERROR(x) ((HRESULT)(0xc00d0000L+x))")
cpp_quote("#define RTWQ_E_BUFFERTOOSMALL RTWQ_E_ERROR(14001)")
cpp_quote("#define RTWQ_E_NOT_INITIALIZED RTWQ_E_ERROR(14006)")
@@ -80,9 +92,13 @@ cpp_quote("typedef void (WINAPI *RTWQPERIODICCALLBACK)(IUnknown *context);")
cpp_quote("HRESULT WINAPI RtwqAddPeriodicCallback(RTWQPERIODICCALLBACK callback, IUnknown *context, DWORD *key);")
cpp_quote("HRESULT WINAPI RtwqAllocateSerialWorkQueue(DWORD target_queue, DWORD *queue);")
cpp_quote("HRESULT WINAPI RtwqAllocateWorkQueue(RTWQ_WORKQUEUE_TYPE queue_type, DWORD *queue);")
+cpp_quote("HRESULT WINAPI RtwqBeginRegisterWorkQueueWithMMCSS(DWORD queue, const WCHAR *class, DWORD taskid, LONG priority, IRtwqAsyncCallback *callback, IUnknown *state);")
cpp_quote("HRESULT WINAPI RtwqCancelDeadline(HANDLE request);")
cpp_quote("HRESULT WINAPI RtwqCancelWorkItem(RTWQWORKITEM_KEY key);")
cpp_quote("HRESULT WINAPI RtwqCreateAsyncResult(IUnknown *object, IRtwqAsyncCallback *callback, IUnknown *state, IRtwqAsyncResult **result);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSClass(DWORD queue, WCHAR *class, DWORD *length);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSPriority(DWORD queue, LONG *priority);")
+cpp_quote("HRESULT WINAPI RtwqGetWorkQueueMMCSSTaskId(DWORD queue, DWORD *taskid);")
cpp_quote("HRESULT WINAPI RtwqInvokeCallback(IRtwqAsyncResult *result);")
cpp_quote("HRESULT WINAPI RtwqJoinWorkQueue(DWORD queue, HANDLE hFile, HANDLE *cookie);")
cpp_quote("HRESULT WINAPI RtwqLockPlatform(void);")
@@ -90,6 +106,8 @@ cpp_quote("HRESULT WINAPI RtwqLockSharedWorkQueue(const WCHAR *usageclass, LONG
cpp_quote("HRESULT WINAPI RtwqLockWorkQueue(DWORD queue);")
cpp_quote("HRESULT WINAPI RtwqPutWaitingWorkItem(HANDLE event, LONG priority, IRtwqAsyncResult *result, RTWQWORKITEM_KEY *key);")
cpp_quote("HRESULT WINAPI RtwqPutWorkItem(DWORD queue, LONG priority, IRtwqAsyncResult *result);")
+cpp_quote("HRESULT WINAPI RtwqRegisterPlatformEvents(IRtwqPlatformEvents *events);")
+cpp_quote("HRESULT WINAPI RtwqRegisterPlatformWithMMCSS(const WCHAR *class, DWORD *taskid, LONG priority);")
cpp_quote("HRESULT WINAPI RtwqRemovePeriodicCallback(DWORD key);")
cpp_quote("HRESULT WINAPI RtwqScheduleWorkItem(IRtwqAsyncResult *result, INT64 timeout, RTWQWORKITEM_KEY *key);")
cpp_quote("HRESULT WINAPI RtwqSetDeadline(DWORD queue_id, LONGLONG deadline, HANDLE *request);")
@@ -100,3 +118,5 @@ cpp_quote("HRESULT WINAPI RtwqStartup(void);")
cpp_quote("HRESULT WINAPI RtwqUnjoinWorkQueue(DWORD queue, HANDLE cookie);")
cpp_quote("HRESULT WINAPI RtwqUnlockPlatform(void);")
cpp_quote("HRESULT WINAPI RtwqUnlockWorkQueue(DWORD queue);")
+cpp_quote("HRESULT WINAPI RtwqUnregisterPlatformEvents(IRtwqPlatformEvents *events);")
+cpp_quote("HRESULT WINAPI RtwqUnregisterPlatformFromMMCSS(void);")
--
2.25.1
More information about the wine-devel
mailing list