ole32: Call the MessagePending function for message filters.
This commit is contained in:
parent
aca17cd120
commit
038c8e642a
|
@ -34,8 +34,6 @@
|
||||||
* - Implement the OXID resolver so we don't need magic endpoint names for
|
* - Implement the OXID resolver so we don't need magic endpoint names for
|
||||||
* clients and servers to meet up
|
* clients and servers to meet up
|
||||||
*
|
*
|
||||||
* - Call IMessageFilter functions.
|
|
||||||
*
|
|
||||||
* - Make all ole interface marshaling use NDR to be wire compatible with
|
* - Make all ole interface marshaling use NDR to be wire compatible with
|
||||||
* native DCOM
|
* native DCOM
|
||||||
* - Use & interpret ORPCTHIS & ORPCTHAT.
|
* - Use & interpret ORPCTHIS & ORPCTHAT.
|
||||||
|
@ -2720,9 +2718,6 @@ HRESULT WINAPI CoRegisterMessageFilter(
|
||||||
else if (lpOldMessageFilter)
|
else if (lpOldMessageFilter)
|
||||||
IMessageFilter_Release(lpOldMessageFilter);
|
IMessageFilter_Release(lpOldMessageFilter);
|
||||||
|
|
||||||
if (lpMessageFilter)
|
|
||||||
FIXME("message filter has been registered, but will not be used\n");
|
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3191,6 +3186,32 @@ HRESULT WINAPI CoWaitForMultipleHandles(DWORD dwFlags, DWORD dwTimeout,
|
||||||
{
|
{
|
||||||
MSG msg;
|
MSG msg;
|
||||||
|
|
||||||
|
/* call message filter */
|
||||||
|
|
||||||
|
if (COM_CurrentApt()->filter)
|
||||||
|
{
|
||||||
|
DWORD be_handled = IMessageFilter_MessagePending(
|
||||||
|
COM_CurrentApt()->filter, 0 /* FIXME */,
|
||||||
|
now - start_time,
|
||||||
|
COM_CurrentInfo()->pending_call_count ? PENDINGTYPE_NESTED : PENDINGTYPE_TOPLEVEL);
|
||||||
|
TRACE("IMessageFilter_MessagePending returned %d\n", be_handled);
|
||||||
|
switch (be_handled)
|
||||||
|
{
|
||||||
|
case PENDINGMSG_CANCELCALL:
|
||||||
|
WARN("call canceled\n");
|
||||||
|
hr = RPC_E_CALL_CANCELED;
|
||||||
|
break;
|
||||||
|
case PENDINGMSG_WAITNOPROCESS:
|
||||||
|
case PENDINGMSG_WAITDEFPROCESS:
|
||||||
|
default:
|
||||||
|
/* FIXME: MSDN is very vague about the difference
|
||||||
|
* between WAITNOPROCESS and WAITDEFPROCESS - there
|
||||||
|
* appears to be none, so it is possibly a left-over
|
||||||
|
* from the 16-bit world. */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* note: using "if" here instead of "while" might seem less
|
/* note: using "if" here instead of "while" might seem less
|
||||||
* efficient, but only if we are optimising for quick delivery
|
* efficient, but only if we are optimising for quick delivery
|
||||||
* of pending messages, rather than quick completion of the
|
* of pending messages, rather than quick completion of the
|
||||||
|
|
Loading…
Reference in New Issue