Remove ReadLockHandle and ReadLockInit code (bug 1445008, r=aosmond)

This code is unused now that ReadLockDescriptors are not sent in layer transactions.

--HG--
extra : rebase_source : 8cd25541b22c3151e2dbd2f8ea6d1119e2f26c94
extra : source : 99a2d26d1ba82ad34a6c27641500a424cda015c3
This commit is contained in:
Ryan Hunt 2018-03-13 17:00:18 -05:00
parent 0fd0d36de4
commit 691f20afd2
20 changed files with 3 additions and 222 deletions

View File

@ -333,32 +333,6 @@ private:
uint64_t mHandle;
};
class ReadLockHandle
{
friend struct IPC::ParamTraits<mozilla::layers::ReadLockHandle>;
public:
ReadLockHandle() : mHandle(0)
{}
ReadLockHandle(const ReadLockHandle& aOther) : mHandle(aOther.mHandle)
{}
explicit ReadLockHandle(uint64_t aHandle) : mHandle(aHandle)
{}
bool IsValid() const {
return mHandle != 0;
}
explicit operator bool() const {
return IsValid();
}
bool operator ==(const ReadLockHandle& aOther) const {
return mHandle == aOther.mHandle;
}
uint64_t Value() const {
return mHandle;
}
private:
uint64_t mHandle;
};
MOZ_DEFINE_ENUM_CLASS_WITH_BASE(ScrollDirection, uint32_t, (
eVertical,
eHorizontal

View File

@ -291,29 +291,6 @@ CompositableParentManager::ReleaseCompositable(const CompositableHandle& aHandle
host->Detach(nullptr, CompositableHost::FORCE_DETACH);
}
bool
CompositableParentManager::AddReadLocks(ReadLockArray&& aReadLocks)
{
for (ReadLockInit& r : aReadLocks) {
if (mReadLocks.find(r.handle().Value()) != mReadLocks.end()) {
NS_ERROR("Duplicate read lock handle!");
return false;
}
mReadLocks[r.handle().Value()] = TextureReadLock::Deserialize(r.sharedLock(), this);
}
return true;
}
TextureReadLock*
CompositableParentManager::FindReadLock(const ReadLockHandle& aHandle)
{
auto iter = mReadLocks.find(aHandle.Value());
if (iter == mReadLocks.end()) {
return nullptr;
}
return iter->second.get();
}
} // namespace layers
} // namespace mozilla

View File

@ -24,7 +24,6 @@ namespace layers {
class CompositableParentManager : public HostIPCAllocator
{
public:
typedef InfallibleTArray<ReadLockInit> ReadLockArray;
CompositableParentManager() {}
@ -44,9 +43,6 @@ public:
bool aUseWebRender);
RefPtr<CompositableHost> FindCompositable(const CompositableHandle& aHandle);
bool AddReadLocks(ReadLockArray&& aReadLocks);
TextureReadLock* FindReadLock(const ReadLockHandle& aLockHandle);
protected:
/**
* Handle the IPDL messages that affect PCompositable actors.
@ -61,24 +57,9 @@ protected:
* Mapping form IDs to CompositableHosts.
*/
std::map<uint64_t, RefPtr<CompositableHost>> mCompositables;
std::map<uint64_t, RefPtr<TextureReadLock>> mReadLocks;
};
struct AutoClearReadLocks {
explicit AutoClearReadLocks(std::map<uint64_t, RefPtr<TextureReadLock>>& aReadLocks)
: mReadLocks(aReadLocks)
{}
~AutoClearReadLocks()
{
mReadLocks.clear();
}
std::map<uint64_t, RefPtr<TextureReadLock>>& mReadLocks;
};
} // namespace layers
} // namespace mozilla

View File

@ -59,13 +59,11 @@ using namespace mozilla::media;
typedef std::vector<CompositableOperation> OpVector;
typedef nsTArray<OpDestroy> OpDestroyVector;
typedef nsTArray<ReadLockInit> ReadLockVector;
struct CompositableTransaction
{
CompositableTransaction()
: mReadLockSequenceNumber(0)
, mFinished(true)
: mFinished(true)
{}
~CompositableTransaction()
{
@ -79,15 +77,12 @@ struct CompositableTransaction
{
MOZ_ASSERT(mFinished);
mFinished = false;
mReadLockSequenceNumber = 0;
mReadLocks.AppendElement();
}
void End()
{
mFinished = true;
mOperations.clear();
mDestroyedActors.Clear();
mReadLocks.Clear();
}
bool IsEmpty() const
{
@ -99,20 +94,8 @@ struct CompositableTransaction
mOperations.push_back(op);
}
ReadLockHandle AddReadLock(const ReadLockDescriptor& aReadLock)
{
ReadLockHandle handle(++mReadLockSequenceNumber);
if (mReadLocks.LastElement().Length() >= CompositableForwarder::GetMaxFileDescriptorsPerMessage()) {
mReadLocks.AppendElement();
}
mReadLocks.LastElement().AppendElement(ReadLockInit(aReadLock, handle));
return handle;
}
OpVector mOperations;
OpDestroyVector mDestroyedActors;
nsTArray<ReadLockVector> mReadLocks;
uint64_t mReadLockSequenceNumber;
bool mFinished;
};
@ -507,15 +490,6 @@ ImageBridgeChild::EndTransaction()
ShadowLayerForwarder::PlatformSyncBeforeUpdate();
}
for (ReadLockVector& locks : mTxn->mReadLocks) {
if (locks.Length()) {
if (!SendInitReadLocks(locks)) {
NS_WARNING("[LayersForwarder] WARNING: sending read locks failed!");
return;
}
}
}
if (!SendUpdate(cset, mTxn->mDestroyedActors, GetFwdTransactionId())) {
NS_WARNING("could not send async texture transaction");
return;

View File

@ -201,15 +201,6 @@ private:
InfallibleTArray<OpDestroy>* mToDestroy;
};
mozilla::ipc::IPCResult
ImageBridgeParent::RecvInitReadLocks(ReadLockArray&& aReadLocks)
{
if (!AddReadLocks(Move(aReadLocks))) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
}
mozilla::ipc::IPCResult
ImageBridgeParent::RecvUpdate(EditArray&& aEdits, OpDestroyArray&& aToDestroy,
const uint64_t& aFwdTransactionId)
@ -218,7 +209,6 @@ ImageBridgeParent::RecvUpdate(EditArray&& aEdits, OpDestroyArray&& aToDestroy,
// to early-return from RecvUpdate without doing so.
AutoImageBridgeParentAsyncMessageSender autoAsyncMessageSender(this, &aToDestroy);
UpdateFwdTransactionId(aFwdTransactionId);
AutoClearReadLocks clearLocks(mReadLocks);
for (EditArray::index_type i = 0; i < aEdits.Length(); ++i) {
if (!ReceiveCompositableUpdate(aEdits[i])) {

View File

@ -77,7 +77,6 @@ public:
// PImageBridge
virtual mozilla::ipc::IPCResult RecvImageBridgeThreadId(const PlatformThreadId& aThreadId) override;
virtual mozilla::ipc::IPCResult RecvInitReadLocks(ReadLockArray&& aReadLocks) override;
virtual mozilla::ipc::IPCResult RecvUpdate(EditArray&& aEdits, OpDestroyArray&& aToDestroy,
const uint64_t& aFwdTransactionId) override;

View File

@ -156,15 +156,6 @@ LayerTransactionParent::RecvPaintTime(const uint64_t& aTransactionId,
return IPC_OK();
}
mozilla::ipc::IPCResult
LayerTransactionParent::RecvInitReadLocks(ReadLockArray&& aReadLocks)
{
if (!AddReadLocks(Move(aReadLocks))) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
}
mozilla::ipc::IPCResult
LayerTransactionParent::RecvUpdate(const TransactionInfo& aInfo)
{
@ -176,7 +167,6 @@ LayerTransactionParent::RecvUpdate(const TransactionInfo& aInfo)
MOZ_LAYERS_LOG(("[ParentSide] received txn with %zu edits", aInfo.cset().Length()));
UpdateFwdTransactionId(aInfo.fwdTransactionId());
AutoClearReadLocks clearLocks(mReadLocks);
if (mDestroyed || !mLayerManager || mLayerManager->IsDestroyed()) {
for (const auto& op : aInfo.toDestroy()) {

View File

@ -43,7 +43,6 @@ class LayerTransactionParent final : public PLayerTransactionParent,
typedef InfallibleTArray<Edit> EditArray;
typedef InfallibleTArray<OpDestroy> OpDestroyArray;
typedef InfallibleTArray<PluginWindowData> PluginsArray;
typedef InfallibleTArray<ReadLockInit> ReadLockArray;
public:
LayerTransactionParent(HostLayerManager* aManager,
@ -109,7 +108,6 @@ protected:
mozilla::ipc::IPCResult RecvPaintTime(const uint64_t& aTransactionId,
const TimeDuration& aPaintTime) override;
mozilla::ipc::IPCResult RecvInitReadLocks(ReadLockArray&& aReadLocks) override;
mozilla::ipc::IPCResult RecvUpdate(const TransactionInfo& aInfo) override;
mozilla::ipc::IPCResult RecvSetLayerObserverEpoch(const uint64_t& aLayerObserverEpoch) override;

View File

@ -113,19 +113,6 @@ struct ParamTraits<mozilla::layers::CompositableHandle>
}
};
template<>
struct ParamTraits<mozilla::layers::ReadLockHandle>
{
typedef mozilla::layers::ReadLockHandle paramType;
static void Write(Message* msg, const paramType& param) {
WriteParam(msg, param.mHandle);
}
static bool Read(const Message* msg, PickleIterator* iter, paramType* result) {
return ReadParam(msg, iter, &result->mHandle);
}
};
// Helper class for reading bitfields.
// If T has bitfields members, derive ParamTraits<T> from BitfieldHelper<T>.
template <typename ParamType>

View File

@ -51,7 +51,6 @@ using mozilla::layers::BorderCorners from "mozilla/layers/LayersTypes.h";
using mozilla::layers::BorderWidths from "mozilla/layers/LayersTypes.h";
using mozilla::layers::LayerHandle from "mozilla/layers/LayersTypes.h";
using mozilla::layers::CompositableHandle from "mozilla/layers/LayersTypes.h";
using mozilla::layers::ReadLockHandle from "mozilla/layers/LayersTypes.h";
using mozilla::layers::SimpleLayerAttributes from "mozilla/layers/LayerAttributes.h";
using mozilla::CrossProcessSemaphoreHandle from "mozilla/ipc/CrossProcessSemaphore.h";
using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
@ -379,11 +378,6 @@ union ReadLockDescriptor {
null_t;
};
struct ReadLockInit {
ReadLockDescriptor sharedLock;
ReadLockHandle handle;
};
union MaybeTexture {
PTexture;
null_t;

View File

@ -41,11 +41,6 @@ child:
parent:
async ImageBridgeThreadId(PlatformThreadId aTreahdId);
// Creates a set of mappings between TextureReadLocks and an associated
// ReadLockHandle that can be used in Update, and persist until the
// next Update call.
async InitReadLocks(ReadLockInit[] locks);
async Update(CompositableOperation[] ops, OpDestroy[] toDestroy, uint64_t fwdTransactionId);
// First step of the destruction sequence. This puts ImageBridge

View File

@ -47,11 +47,6 @@ sync protocol PLayerTransaction {
manager PCompositorBridge;
parent:
// Creates a set of mappings between TextureReadLocks and an associated
// ReadLockHandle that can be used in Update, and persist until the
// next Update call.
async InitReadLocks(ReadLockInit[] locks);
// The isFirstPaint flag can be used to indicate that this is the first update
// for a particular document.
async Update(TransactionInfo txn);

View File

@ -42,11 +42,6 @@ parent:
async NewCompositable(CompositableHandle handle, TextureInfo info);
async ReleaseCompositable(CompositableHandle compositable);
// Creates a set of mappings between TextureReadLocks and an associated
// ReadLockHandle that can be used in Update, and persist until the
// next Update call.
async InitReadLocks(ReadLockInit[] locks);
sync Create(IntSize aSize);
async DeleteCompositorAnimations(uint64_t[] aIds);
async SetDisplayList(IntSize aSize, WebRenderParentCommand[] commands, OpDestroy[] toDestroy, uint64_t fwdTransactionId, uint64_t transactionId,

View File

@ -56,14 +56,12 @@ typedef nsTArray<SurfaceDescriptor> BufferArray;
typedef nsTArray<Edit> EditVector;
typedef nsTHashtable<nsPtrHashKey<ShadowableLayer>> ShadowableLayerSet;
typedef nsTArray<OpDestroy> OpDestroyVector;
typedef nsTArray<ReadLockInit> ReadLockVector;
class Transaction
{
public:
Transaction()
: mReadLockSequenceNumber(0)
, mTargetRotation(ROTATION_0)
: mTargetRotation(ROTATION_0)
, mOpen(false)
, mRotationChanged(false)
{}
@ -82,8 +80,6 @@ public:
}
mTargetRotation = aRotation;
mTargetOrientation = aOrientation;
mReadLockSequenceNumber = 0;
mReadLocks.AppendElement();
}
void AddEdit(const Edit& aEdit)
{
@ -110,15 +106,6 @@ public:
MOZ_ASSERT(!Finished(), "forgot BeginTransaction?");
mSimpleMutants.PutEntry(aLayer);
}
ReadLockHandle AddReadLock(const ReadLockDescriptor& aReadLock)
{
ReadLockHandle handle(++mReadLockSequenceNumber);
if (mReadLocks.LastElement().Length() >= CompositableForwarder::GetMaxFileDescriptorsPerMessage()) {
mReadLocks.AppendElement();
}
mReadLocks.LastElement().AppendElement(ReadLockInit(aReadLock, handle));
return handle;
}
void End()
{
mCset.Clear();
@ -126,7 +113,6 @@ public:
mMutants.Clear();
mSimpleMutants.Clear();
mDestroyedActors.Clear();
mReadLocks.Clear();
mOpen = false;
mRotationChanged = false;
}
@ -150,8 +136,6 @@ public:
OpDestroyVector mDestroyedActors;
ShadowableLayerSet mMutants;
ShadowableLayerSet mSimpleMutants;
nsTArray<ReadLockVector> mReadLocks;
uint64_t mReadLockSequenceNumber;
gfx::IntRect mTargetBounds;
ScreenRotation mTargetRotation;
dom::ScreenOrientationInternal mTargetOrientation;
@ -782,15 +766,6 @@ ShadowLayerForwarder::EndTransaction(const nsIntRegion& aRegionToClear,
startTime = Some(TimeStamp::Now());
}
for (ReadLockVector& locks : mTxn->mReadLocks) {
if (locks.Length()) {
if (!mShadowManager->SendInitReadLocks(locks)) {
MOZ_LAYERS_LOG(("[LayersForwarder] WARNING: sending read locks failed!"));
return false;
}
}
}
// We delay at the last possible minute, to give the paint thread a chance to
// finish. If it does we don't have to delay messages at all.
GetCompositorBridgeChild()->PostponeMessagesIfAsyncPainting();

View File

@ -23,8 +23,7 @@ namespace layers {
using namespace mozilla::gfx;
WebRenderBridgeChild::WebRenderBridgeChild(const wr::PipelineId& aPipelineId)
: mReadLockSequenceNumber(0)
, mIsInTransaction(false)
: mIsInTransaction(false)
, mIsInClearCachedResources(false)
, mIdNamespace{0}
, mResourceId(0)
@ -102,23 +101,6 @@ WebRenderBridgeChild::BeginTransaction()
UpdateFwdTransactionId();
mIsInTransaction = true;
mReadLockSequenceNumber = 0;
mReadLocks.AppendElement();
}
void
WebRenderBridgeChild::ClearReadLocks()
{
for (nsTArray<ReadLockInit>& locks : mReadLocks) {
if (locks.Length()) {
if (!SendInitReadLocks(locks)) {
NS_WARNING("WARNING: sending read locks failed!");
return;
}
}
}
mReadLocks.Clear();
}
void

View File

@ -141,7 +141,6 @@ public:
wr::FontKey GetFontKeyForUnscaledFont(gfx::UnscaledFont* aUnscaledFont);
void RemoveExpiredFontKeys();
void ClearReadLocks();
void BeginClearCachedResources();
void EndClearCachedResources();
@ -218,8 +217,6 @@ private:
nsTArray<WebRenderParentCommand> mParentCommands;
nsTArray<OpDestroy> mDestroyedActors;
nsDataHashtable<nsUint64HashKey, CompositableClient*> mCompositables;
nsTArray<nsTArray<ReadLockInit>> mReadLocks;
uint64_t mReadLockSequenceNumber;
bool mIsInTransaction;
bool mIsInClearCachedResources;
wr::IdNamespace mIdNamespace;

View File

@ -582,7 +582,6 @@ WebRenderBridgeParent::RecvSetDisplayList(const gfx::IntSize& aSize,
AUTO_PROFILER_TRACING("Paint", "SetDisplayList");
UpdateFwdTransactionId(aFwdTransactionId);
AutoClearReadLocks clearLocks(mReadLocks);
// This ensures that destroy operations are always processed. It is not safe
// to early-return from RecvDPEnd without doing so.
@ -662,7 +661,6 @@ WebRenderBridgeParent::RecvEmptyTransaction(const FocusTarget& aFocusTarget,
AUTO_PROFILER_TRACING("Paint", "EmptyTransaction");
UpdateFwdTransactionId(aFwdTransactionId);
AutoClearReadLocks clearLocks(mReadLocks);
// This ensures that destroy operations are always processed. It is not safe
// to early-return without doing so.
@ -1485,18 +1483,6 @@ WebRenderBridgeParent::RecvReleaseCompositable(const CompositableHandle& aHandle
return IPC_OK();
}
mozilla::ipc::IPCResult
WebRenderBridgeParent::RecvInitReadLocks(ReadLockArray&& aReadLocks)
{
if (mDestroyed) {
return IPC_OK();
}
if (!AddReadLocks(Move(aReadLocks))) {
return IPC_FAIL_NO_REASON(this);
}
return IPC_OK();
}
TextureFactoryIdentifier
WebRenderBridgeParent::GetTextureFactoryIdentifier()
{

View File

@ -67,8 +67,6 @@ public:
const TextureInfo& aInfo) override;
mozilla::ipc::IPCResult RecvReleaseCompositable(const CompositableHandle& aHandle) override;
mozilla::ipc::IPCResult RecvInitReadLocks(ReadLockArray&& aReadLocks) override;
mozilla::ipc::IPCResult RecvCreate(const gfx::IntSize& aSize) override;
mozilla::ipc::IPCResult RecvShutdown() override;
mozilla::ipc::IPCResult RecvShutdownSync() override;

View File

@ -211,8 +211,6 @@ WebRenderLayerManager::EndEmptyTransaction(EndTransactionFlags aFlags)
mWebRenderCommandBuilder.EmptyTransaction();
WrBridge()->ClearReadLocks();
mLatestTransactionId = mTransactionIdAllocator->GetTransactionId(/*aThrottle*/ true);
TimeStamp transactionStart = mTransactionIdAllocator->GetTransactionStart();
@ -283,8 +281,6 @@ WebRenderLayerManager::EndTransactionWithoutLayer(nsDisplayList* aDisplayList,
mWidget->AddWindowOverlayWebRenderCommands(WrBridge(), builder, resourceUpdates);
mWindowOverlayChanged = false;
WrBridge()->ClearReadLocks();
if (AsyncPanZoomEnabled()) {
mScrollData.SetFocusTarget(mFocusTarget);
mFocusTarget = FocusTarget();

View File

@ -38,7 +38,5 @@ segment_capacity = 128
segment_capacity = 192
[PCompositorBridge::PTextureConstructor]
segment_capacity = 192
[PLayerTransaction::InitReadLocks]
segment_capacity = 256
[PHttpBackgroundChannel::OnStopRequest]
segment_capacity = 192