Bug 1411805 - Update() needs to read some prefs off the main thread. draft
authorJW Wang <jwwang@mozilla.com>
Tue, 24 Oct 2017 10:13:30 +0800
changeset 687258 285216febaf01caf7550009f8a91b95d5be6cd36
parent 687257 3d1138d52be195ad8037b71fa6978448637b3618
child 687371 2fa3d4a310a6e5765ee51cd3115013434d4662e5
push id86464
push userjwwang@mozilla.com
push dateFri, 27 Oct 2017 03:16:04 +0000
bugs1411805
milestone58.0a1
Bug 1411805 - Update() needs to read some prefs off the main thread. MediaPrefs is our friend. MozReview-Commit-ID: 3lz5oqUR9R9
dom/media/MediaCache.cpp
dom/media/MediaPrefs.h
--- a/dom/media/MediaCache.cpp
+++ b/dom/media/MediaCache.cpp
@@ -1302,18 +1302,18 @@ MediaCache::Update()
   TimeDuration latestNextUse;
   if (freeBlockCount == 0) {
     int32_t reusableBlock = FindReusableBlock(now, nullptr, 0, maxBlocks);
     if (reusableBlock >= 0) {
       latestNextUse = PredictNextUse(now, reusableBlock);
     }
   }
 
-  int32_t resumeThreshold = Preferences::GetInt("media.cache_resume_threshold", 10);
-  int32_t readaheadLimit = Preferences::GetInt("media.cache_readahead_limit", 30);
+  int32_t resumeThreshold = MediaPrefs::MediaCacheResumeThreshold();
+  int32_t readaheadLimit = MediaPrefs::MediaCacheReadaheadLimit();
 
   for (uint32_t i = 0; i < mStreams.Length(); ++i) {
     actions.AppendElement(StreamAction{});
 
     MediaCacheStream* stream = mStreams[i];
     if (stream->mClosed) {
       LOG("Stream %p closed", stream);
       continue;
--- a/dom/media/MediaPrefs.h
+++ b/dom/media/MediaPrefs.h
@@ -89,16 +89,19 @@ private:
   // Cache sizes.
   DECL_MEDIA_PREF("media.cache_size",                         MediaCacheSizeKb, uint32_t, 512000);
   DECL_MEDIA_PREF("media.memory_cache_max_size",              MediaMemoryCacheMaxSize, uint32_t, 8192);
   DECL_MEDIA_PREF("media.memory_caches_combined_limit_kb",    MediaMemoryCachesCombinedLimitKb, uint32_t, 524288);
   DECL_MEDIA_PREF("media.memory_caches_combined_limit_pc_sysmem",
                                                               MediaMemoryCachesCombinedLimitPcSysmem, uint32_t, 5);
   DECL_MEDIA_PREF("media.cache.resource-index",               MediaResourceIndexCache, uint32_t, 8192);
 
+  DECL_MEDIA_PREF("media.cache_resume_threshold",             MediaCacheResumeThreshold, int32_t, 10);
+  DECL_MEDIA_PREF("media.cache_readahead_limit",              MediaCacheReadaheadLimit, int32_t, 30);
+
   // AudioSink
   DECL_MEDIA_PREF("accessibility.monoaudio.enable",           MonoAudio, bool, false);
   DECL_MEDIA_PREF("media.resampling.enabled",                 AudioSinkResampling, bool, false);
   DECL_MEDIA_PREF("media.resampling.rate",                    AudioSinkResampleRate, uint32_t, 48000);
 #if defined(XP_WIN) || defined(XP_DARWIN) || defined(MOZ_PULSEAUDIO)
   // libcubeb backend implement .get_preferred_channel_layout
   DECL_MEDIA_PREF("media.forcestereo.enabled",                AudioSinkForceStereo, bool, false);
 #else