mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-13 18:27:35 +00:00
8c61fa8fde
An actual use of the `BACKGROUND_X11` thread may have briefly existed in 2009 but probably never shipped; it's been unused since then, and even the comments mentioning it have been pruned (bug 909028, bug 624422). The other thread types besides IO have been commented out ever since they were first committed. This patch also removes `x11_util.h`, which has been unused since 2017 (bug 1426284); earlier in history, it had one of those comments mentioning the nonexistent X11 thread. Differential Revision: https://phabricator.services.mozilla.com/D85346
74 lines
1.9 KiB
C++
74 lines
1.9 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 "mozilla/ipc/BrowserProcessSubThread.h"
|
|
|
|
#if defined(OS_WIN)
|
|
# include <objbase.h>
|
|
#endif
|
|
|
|
namespace mozilla {
|
|
namespace ipc {
|
|
|
|
//
|
|
// BrowserProcessSubThread
|
|
//
|
|
|
|
// Friendly names for the well-known threads.
|
|
static const char* kBrowserThreadNames[BrowserProcessSubThread::ID_COUNT] = {
|
|
"Gecko_IOThread", // IO
|
|
};
|
|
|
|
/* static */
|
|
StaticMutex BrowserProcessSubThread::sLock;
|
|
BrowserProcessSubThread* BrowserProcessSubThread::sBrowserThreads[ID_COUNT] = {
|
|
nullptr, // IO
|
|
};
|
|
|
|
BrowserProcessSubThread::BrowserProcessSubThread(ID aId)
|
|
: base::Thread(kBrowserThreadNames[aId]), mIdentifier(aId) {
|
|
StaticMutexAutoLock lock(sLock);
|
|
DCHECK(aId >= 0 && aId < ID_COUNT);
|
|
DCHECK(sBrowserThreads[aId] == nullptr);
|
|
sBrowserThreads[aId] = this;
|
|
}
|
|
|
|
BrowserProcessSubThread::~BrowserProcessSubThread() {
|
|
Stop();
|
|
{
|
|
StaticMutexAutoLock lock(sLock);
|
|
sBrowserThreads[mIdentifier] = nullptr;
|
|
}
|
|
}
|
|
|
|
void BrowserProcessSubThread::Init() {
|
|
#if defined(OS_WIN)
|
|
// Initializes the COM library on the current thread.
|
|
CoInitialize(nullptr);
|
|
#endif
|
|
}
|
|
|
|
void BrowserProcessSubThread::CleanUp() {
|
|
#if defined(OS_WIN)
|
|
// Closes the COM library on the current thread. CoInitialize must
|
|
// be balanced by a corresponding call to CoUninitialize.
|
|
CoUninitialize();
|
|
#endif
|
|
}
|
|
|
|
// static
|
|
MessageLoop* BrowserProcessSubThread::GetMessageLoop(ID aId) {
|
|
StaticMutexAutoLock lock(sLock);
|
|
DCHECK(aId >= 0 && aId < ID_COUNT);
|
|
|
|
if (sBrowserThreads[aId]) return sBrowserThreads[aId]->message_loop();
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
} // namespace ipc
|
|
} // namespace mozilla
|