hal/fallback/FallbackScreenConfiguration.h
author Jean-Yves Avenard <jyavenard@mozilla.com>
Mon, 08 Oct 2018 13:24:19 +0200
changeset 498410 2851d7aead763576969cf47383066977ae75f4b3
parent 491688 000a3f46f36c9c400d35af815c7b19a9db6f7a9a
child 508163 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1495025 - P2. Use lambda for callback. r=cpearce I find it easier to read than a function pointer making you search elsewhere to see what it's about Depends on D7294 Differential Revision: https://phabricator.services.mozilla.com/D7295

/* 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_fallback_FallbackScreenConfiguration_h
#define mozilla_fallback_FallbackScreenConfiguration_h

#include "Hal.h"
#include "nsIScreenManager.h"
#include "nsServiceManagerUtils.h"

namespace mozilla {
namespace fallback {

inline void
GetCurrentScreenConfiguration(hal::ScreenConfiguration* aScreenConfiguration)
{
  nsresult rv;
  nsCOMPtr<nsIScreenManager> screenMgr =
    do_GetService("@mozilla.org/gfx/screenmanager;1", &rv);
  if (NS_FAILED(rv)) {
    NS_ERROR("Can't find nsIScreenManager!");
    return;
  }

  int32_t colorDepth, pixelDepth, x, y, w, h;
  ScreenOrientation orientation;
  nsCOMPtr<nsIScreen> screen;

  screenMgr->GetPrimaryScreen(getter_AddRefs(screen));
  screen->GetRect(&x, &y, &w, &h);
  screen->GetColorDepth(&colorDepth);
  screen->GetPixelDepth(&pixelDepth);
  orientation = w >= h
                ? hal::eScreenOrientation_LandscapePrimary
                : hal::eScreenOrientation_PortraitPrimary;

  *aScreenConfiguration = hal::ScreenConfiguration(nsIntRect(x, y, w, h),
						   orientation, 0,
						   colorDepth, pixelDepth);
}

}
}

#endif // mozilla_fallback_FallbackScreenConfiguration_h