mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 03:05:34 +00:00
11ac9e9cf8
* Remove redundant virtual keywords * Mark all destructors of inheriting classes as virtual for clarity * Mark all classes without virtual destructor as final (exposed errors) * Make destructor virtual where it needed to be (some were missing) * Replace empty ({}) code declaration in header with = default * Remove virtual unused methods I probably missed some, it quickly became a rabbit hole. Differential Revision: https://phabricator.services.mozilla.com/D26060 --HG-- extra : moz-landing-system : lando
75 lines
2.1 KiB
C++
75 lines
2.1 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/. */
|
|
|
|
#ifndef MOZILLA_LAYERS_LAYERTRANSACTIONCHILD_H
|
|
#define MOZILLA_LAYERS_LAYERTRANSACTIONCHILD_H
|
|
|
|
#include <stdint.h> // for uint32_t
|
|
#include "mozilla/Attributes.h" // for override
|
|
#include "mozilla/ipc/ProtocolUtils.h"
|
|
#include "mozilla/layers/PLayerTransactionChild.h"
|
|
#include "mozilla/RefPtr.h"
|
|
|
|
namespace mozilla {
|
|
|
|
namespace layers {
|
|
|
|
class ShadowLayerForwarder;
|
|
|
|
class LayerTransactionChild : public PLayerTransactionChild {
|
|
public:
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(LayerTransactionChild)
|
|
/**
|
|
* Clean this up, finishing with SendShutDown() which will cause __delete__
|
|
* to be sent from the parent side.
|
|
*
|
|
* It is expected (checked with an assert) that all shadow layers
|
|
* created by this have already been destroyed and
|
|
* Send__delete__()d by the time this method is called.
|
|
*/
|
|
void Destroy();
|
|
|
|
bool IPCOpen() const { return mIPCOpen && !mDestroyed; }
|
|
bool IsDestroyed() const { return mDestroyed; }
|
|
|
|
void SetForwarder(ShadowLayerForwarder* aForwarder) {
|
|
mForwarder = aForwarder;
|
|
}
|
|
|
|
LayersId GetId() const { return mId; }
|
|
|
|
void MarkDestroyed() { mDestroyed = true; }
|
|
|
|
protected:
|
|
explicit LayerTransactionChild(const LayersId& aId)
|
|
: mForwarder(nullptr), mIPCOpen(false), mDestroyed(false), mId(aId) {}
|
|
virtual ~LayerTransactionChild() = default;
|
|
|
|
void ActorDestroy(ActorDestroyReason why) override;
|
|
|
|
void AddIPDLReference() {
|
|
MOZ_ASSERT(mIPCOpen == false);
|
|
mIPCOpen = true;
|
|
AddRef();
|
|
}
|
|
void ReleaseIPDLReference() {
|
|
MOZ_ASSERT(mIPCOpen == true);
|
|
mIPCOpen = false;
|
|
Release();
|
|
}
|
|
friend class CompositorBridgeChild;
|
|
|
|
ShadowLayerForwarder* mForwarder;
|
|
bool mIPCOpen;
|
|
bool mDestroyed;
|
|
LayersId mId;
|
|
};
|
|
|
|
} // namespace layers
|
|
} // namespace mozilla
|
|
|
|
#endif // MOZILLA_LAYERS_LAYERTRANSACTIONCHILD_H
|