mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-03 23:30:46 +00:00

For cases where the class has direct calls (that is, we cast `this` to the subclass before making the call) no longer declare Recv/Answer methods on the base class at all. This should ensure that slots for them are not generated in vtables, and also allow the derived class to choose the method signature (e.g. whether it wants to take something by reference or by value). Differential Revision: https://phabricator.services.mozilla.com/D18132 --HG-- extra : moz-landing-system : lando
53 lines
1.6 KiB
C++
53 lines
1.6 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* 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/. */
|
|
|
|
#ifndef mozilla_dom_MIDIPortChild_h
|
|
#define mozilla_dom_MIDIPortChild_h
|
|
|
|
#include "mozilla/dom/PMIDIPortChild.h"
|
|
#include "mozilla/dom/MIDIPortInterface.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class MIDIPort;
|
|
class MIDIPortInfo;
|
|
|
|
/**
|
|
* Child actor for a MIDIPort object. Each MIDIPort DOM object in JS has a its
|
|
* own child actor. The lifetime of the actor object is dependent on the
|
|
* lifetime of the JS object.
|
|
*
|
|
*/
|
|
class MIDIPortChild final : public PMIDIPortChild, public MIDIPortInterface {
|
|
public:
|
|
NS_INLINE_DECL_REFCOUNTING(MIDIPortChild);
|
|
mozilla::ipc::IPCResult RecvReceive(nsTArray<MIDIMessage>&& aMsgs);
|
|
|
|
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
|
|
|
|
mozilla::ipc::IPCResult RecvUpdateStatus(const uint32_t& aDeviceState,
|
|
const uint32_t& aConnectionState);
|
|
|
|
MIDIPortChild(const MIDIPortInfo& aPortInfo, bool aSysexEnabled,
|
|
MIDIPort* aPort);
|
|
// virtual void Shutdown() override;
|
|
void SetActorAlive();
|
|
|
|
void Teardown();
|
|
|
|
private:
|
|
~MIDIPortChild() = default;
|
|
// Pointer to the DOM object this actor represents. The actor cannot outlive
|
|
// the DOM object.
|
|
MIDIPort* mDOMPort;
|
|
bool mActorWasAlive;
|
|
};
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif
|