コード例 #1
0
IToplevelProtocol::~IToplevelProtocol()
{
  bool last = false;

  {
    MutexAutoLock al(*gProtocolMutex);

    for (IToplevelProtocol* actor = mOpenActors.getFirst();
         actor;
         actor = actor->getNext()) {
      actor->mOpener = nullptr;
    }

    mOpenActors.clear();

    if (mOpener) {
      removeFrom(mOpener->mOpenActors);
    }

    gNumProtocols--;
    last = gNumProtocols == 0;
  }

  if (last) {
    gProtocolMutex = nullptr;
  }
}
コード例 #2
0
ファイル: ProtocolUtils.cpp プロジェクト: hobinjk/gecko-dev
void
IToplevelProtocol::GetOpenedActorsLocked(nsTArray<IToplevelProtocol*>& aActors)
{
  gProtocolMutex.AssertCurrentThreadOwns();

  for (IToplevelProtocol* actor = mOpenActors.getFirst();
       actor;
       actor = actor->getNext()) {
    aActors.AppendElement(actor);
  }
}
コード例 #3
0
ファイル: ProtocolUtils.cpp プロジェクト: hobinjk/gecko-dev
size_t
IToplevelProtocol::GetOpenedActorsUnsafe(IToplevelProtocol** aActors, size_t aActorsMax)
{
  size_t count = 0;
  for (IToplevelProtocol* actor = mOpenActors.getFirst();
       actor;
       actor = actor->getNext()) {
    MOZ_RELEASE_ASSERT(count < aActorsMax);
    aActors[count++] = actor;
  }
  return count;
}
コード例 #4
0
ファイル: ProtocolUtils.cpp プロジェクト: Andrel322/gecko-dev
void
IToplevelProtocol::CloneOpenedToplevels(IToplevelProtocol* aTemplate,
                                        const InfallibleTArray<ProtocolFdMapping>& aFds,
                                        base::ProcessHandle aPeerProcess,
                                        ProtocolCloneContext* aCtx)
{
  for (IToplevelProtocol* actor = aTemplate->GetFirstOpenedActors();
       actor;
       actor = actor->getNext()) {
    IToplevelProtocol* newactor = actor->CloneToplevel(aFds, aPeerProcess, aCtx);
    AddOpenedActor(newactor);
  }
}
コード例 #5
0
ファイル: ProtocolUtils.cpp プロジェクト: hobinjk/gecko-dev
IToplevelProtocol::~IToplevelProtocol()
{
  StaticMutexAutoLock al(gProtocolMutex);

  for (IToplevelProtocol* actor = mOpenActors.getFirst();
       actor;
       actor = actor->getNext()) {
    actor->mOpener = nullptr;
  }

  mOpenActors.clear();

  if (mOpener) {
      removeFrom(mOpener->mOpenActors);
  }
}