hal/windows/WindowsProcessPriority.cpp
author Chris Peterson <cpeterson@mozilla.com>
Thu, 13 Sep 2018 21:47:36 -0700
changeset 493580 eace0121d8f7575a0857c23de541ac22704daf4c
parent 485035 966b020f6c63ac55b84a5c510a77b84db3f92397
child 505383 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1336712 - a11y: Drop test check for OS X 10.6. r=RyanVM Differential Revision: https://phabricator.services.mozilla.com/D6577

/* 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 "Hal.h"
#include "HalLog.h"

#include <windows.h>

using namespace mozilla::hal;

namespace mozilla {
namespace hal_impl {

bool
SetProcessPrioritySupported()
{
  return true;
}

void
SetProcessPriority(int aPid, ProcessPriority aPriority)
{
  HAL_LOG("WindowsProcessPriority - SetProcessPriority(%d, %s)\n",
          aPid, ProcessPriorityToString(aPriority));

  nsAutoHandle processHandle(::OpenProcess(PROCESS_SET_INFORMATION, FALSE, aPid));
  MOZ_ASSERT(processHandle);
  if (processHandle) {
    DWORD priority = NORMAL_PRIORITY_CLASS;
    if (aPriority == PROCESS_PRIORITY_BACKGROUND ||
        aPriority == PROCESS_PRIORITY_BACKGROUND_PERCEIVABLE) {
      priority = IDLE_PRIORITY_CLASS;
    }
    ::SetPriorityClass(processHandle, priority);
  }

  HAL_LOG("WindowsProcessPriority - priority set to %d for pid %d\n",
          aPriority, aPid);
}

} // namespace hal_impl
} // namespace mozilla