diff options
Diffstat (limited to 'dom/media/systemservices/LoadManagerFactory.cpp')
-rw-r--r-- | dom/media/systemservices/LoadManagerFactory.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/dom/media/systemservices/LoadManagerFactory.cpp b/dom/media/systemservices/LoadManagerFactory.cpp new file mode 100644 index 000000000..be22a75fe --- /dev/null +++ b/dom/media/systemservices/LoadManagerFactory.cpp @@ -0,0 +1,52 @@ +/* -*- Mode: C++; tab-width: 50; 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 "LoadManager.h" +#include "LoadManagerFactory.h" +#include "MainThreadUtils.h" +#include "nsIObserverService.h" + +#include "mozilla/Preferences.h" + +namespace mozilla { + +// Assume stored in an nsAutoPtr<> +LoadManager * +LoadManagerBuild(void) +{ + return new LoadManager(LoadManagerSingleton::Get()); +} + +/* static */ LoadManagerSingleton* +LoadManagerSingleton::Get() { + if (!sSingleton) { + MOZ_ASSERT(NS_IsMainThread()); + + bool loadEncoderOnly = + mozilla::Preferences::GetBool("media.navigator.load_adapt.encoder_only", true); + int loadMeasurementInterval = + mozilla::Preferences::GetInt("media.navigator.load_adapt.measure_interval", 1000); + int averagingSeconds = + mozilla::Preferences::GetInt("media.navigator.load_adapt.avg_seconds", 3); + float highLoadThreshold = + mozilla::Preferences::GetFloat("media.navigator.load_adapt.high_load", 0.90f); + float lowLoadThreshold = + mozilla::Preferences::GetFloat("media.navigator.load_adapt.low_load", 0.40f); + + sSingleton = new LoadManagerSingleton(loadEncoderOnly, + loadMeasurementInterval, + averagingSeconds, + highLoadThreshold, + lowLoadThreshold); + + nsCOMPtr<nsIObserverService> obs = services::GetObserverService(); + if (obs) { + obs->AddObserver(sSingleton, "xpcom-shutdown", false); + } + } + return sSingleton; +} + +}; // namespace |