mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
4ffe849a5a
This is necessary because we're going to want to start disconnecting sample and seek requests directly from the state machine thread, and the machinery asserts that disconnection happens on the same thread as resolution. More generally, this is the right thing to do architecturally, and will help wean us off the monitor.
55 lines
1.5 KiB
C++
55 lines
1.5 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "MediaPromise.h"
|
|
|
|
#include "MediaDecoderStateMachineScheduler.h"
|
|
#include "MediaTaskQueue.h"
|
|
#include "nsThreadUtils.h"
|
|
|
|
namespace mozilla {
|
|
namespace detail {
|
|
|
|
nsresult
|
|
DispatchMediaPromiseRunnable(MediaTaskQueue* aTaskQueue, nsIRunnable* aRunnable)
|
|
{
|
|
return aTaskQueue->ForceDispatch(aRunnable);
|
|
}
|
|
|
|
nsresult
|
|
DispatchMediaPromiseRunnable(nsIEventTarget* aEventTarget, nsIRunnable* aRunnable)
|
|
{
|
|
return aEventTarget->Dispatch(aRunnable, NS_DISPATCH_NORMAL);
|
|
}
|
|
|
|
nsresult
|
|
DispatchMediaPromiseRunnable(MediaDecoderStateMachineScheduler* aScheduler, nsIRunnable* aRunnable)
|
|
{
|
|
return aScheduler->GetStateMachineThread()->Dispatch(aRunnable, NS_DISPATCH_NORMAL);
|
|
}
|
|
|
|
void
|
|
AssertOnThread(MediaTaskQueue* aQueue)
|
|
{
|
|
MOZ_ASSERT(aQueue->IsCurrentThreadIn());
|
|
}
|
|
|
|
void AssertOnThread(nsIEventTarget* aTarget)
|
|
{
|
|
nsCOMPtr<nsIThread> targetThread = do_QueryInterface(aTarget);
|
|
MOZ_ASSERT(targetThread, "Don't know how to deal with threadpools etc here");
|
|
MOZ_ASSERT(NS_GetCurrentThread() == targetThread);
|
|
}
|
|
|
|
void
|
|
AssertOnThread(MediaDecoderStateMachineScheduler* aScheduler)
|
|
{
|
|
MOZ_ASSERT(aScheduler->OnStateMachineThread());
|
|
}
|
|
|
|
}
|
|
} // namespace mozilla
|