gecko/dom/ipc/ProcessPriorityManager.h
Justin Lebar ceb8f7b008 Bug 834059 - Send processses into the foreground when they first launch, so they don't get killed quite so quickly. r=cjones
This patch also sends the preallocated process into the background immediately after it's launched.
2013-01-26 16:14:01 -05:00

52 lines
1.8 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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_ProcessPriorityManager_h_
#define mozilla_ProcessPriorityManager_h_
namespace mozilla {
namespace dom {
namespace ipc {
/**
* Initialize the ProcessPriorityManager.
*
* The ProcessPriorityManager informs the hal back-end whether this is the root
* Gecko process, and, if we're not the root, informs hal when this process
* transitions between having no visible top-level windows, and having at least
* one visible top-level window.
*
* Hal may adjust this process's operating system priority (e.g. niceness, on
* *nix) according to these notificaitons.
*
* This function call does nothing if the pref for OOP tabs is not set.
*/
void InitProcessPriorityManager();
/**
* True iff the current process has foreground or higher priority as
* computed by DOM visibility. The returned answer may not match the
* actual OS process priority, for short intervals.
*/
bool CurrentProcessIsForeground();
/**
* If this process is in the background, temporarily boost its priority to the
* foreground. This priority boost will expire after a few seconds
* (dom.ipc.processPriorityManager.temporaryPriorityMS).
*
* You might want to call this function when a process starts loading some
* things, but doesn't yet have a foreground window. The hope would be that by
* once the timer here expires, the process will have a foreground window.
*/
void TemporarilySetProcessPriorityToForeground();
} // namespace ipc
} // namespace dom
} // namespace mozilla
#endif