mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-27 14:52:16 +00:00
496f8377a1
Currently, a SystemParametersInfo(SPI_GETFLATMENU) happens very very early during the XUL DLL startup. This is unnecessary, as this value is not used until way later. For Win32k lockdown, we will need to remote this call, so ContentChild must be available. By loading this value lazily, we ensure IPC will be available and also get to remove a Win32 call from the Firefox startup time. Differential Revision: https://phabricator.services.mozilla.com/D76022
70 lines
1.8 KiB
C++
70 lines
1.8 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* 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 "nsToolkit.h"
|
|
#include "nsAppShell.h"
|
|
#include "nsWindow.h"
|
|
#include "nsWidgetsCID.h"
|
|
#include "prmon.h"
|
|
#include "prtime.h"
|
|
#include "nsComponentManagerUtils.h"
|
|
#include <objbase.h>
|
|
#include "WinUtils.h"
|
|
|
|
#include "nsUXThemeData.h"
|
|
|
|
// unknwn.h is needed to build with WIN32_LEAN_AND_MEAN
|
|
#include <unknwn.h>
|
|
|
|
using namespace mozilla::widget;
|
|
|
|
nsToolkit* nsToolkit::gToolkit = nullptr;
|
|
HINSTANCE nsToolkit::mDllInstance = 0;
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// constructor
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
nsToolkit::nsToolkit() {
|
|
MOZ_COUNT_CTOR(nsToolkit);
|
|
|
|
#if defined(MOZ_STATIC_COMPONENT_LIBS)
|
|
nsToolkit::Startup(GetModuleHandle(nullptr));
|
|
#endif
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// destructor
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
nsToolkit::~nsToolkit() { MOZ_COUNT_DTOR(nsToolkit); }
|
|
|
|
void nsToolkit::Startup(HMODULE hModule) {
|
|
nsToolkit::mDllInstance = hModule;
|
|
WinUtils::Initialize();
|
|
}
|
|
|
|
void nsToolkit::Shutdown() {
|
|
delete gToolkit;
|
|
gToolkit = nullptr;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
//
|
|
// Return the nsToolkit for the current thread. If a toolkit does not
|
|
// yet exist, then one will be created...
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
// static
|
|
nsToolkit* nsToolkit::GetToolkit() {
|
|
if (!gToolkit) {
|
|
gToolkit = new nsToolkit();
|
|
}
|
|
|
|
return gToolkit;
|
|
}
|