On Tue Apr 8 16:31:42 2025 +0000, Conor McCarthy wrote:
Actually I think this is an rtworkq issue. `invoke_async_callback()` should take as a second parameter the default queue, which should be TIMER if the callback is invoked as a result of `RtwqPutWaitingWorkItem()`, `RtwqScheduleWorkItem()` or `RtwqAddPeriodicCallback()`. Does that sound right?
Where do you see this? It's a two step process. First item should trigger and that's where QUEUE_TIMER is used, but where payload is executed is determined by GetParameters() essentially, with standard queue being a default one. Now in context of the media session, docs talk about explicit per topology branch queues. User queues do behave differently, using MFPutWorkItem() with a user queue makes Invoke happens consistently on another thread.
Current logic we have is almost like that except that MFPutWorkItem() always uses the queue it was told to use.