merge b2g-inbound to mozilla-central
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Tue, 03 Dec 2013 10:41:51 +0100
changeset 173136 8648aa476eefd28ed305b6d0e648d9c802f4c327
parent 173110 41a3163ac71405b46341ef57e2cf63417d753a26 (current diff)
parent 173135 3c57c72b4b6155a332a1036d1390869b13fb832d (diff)
child 173137 4bf430d990e5b4f74f5876b4cabe1b3427977164
child 173144 e6b278c315bcb08d8b9c8884d501f9fae7df0889
child 173221 24161557228b65b567975a2ce36ee58a50b1a535
child 173260 669ccbd09ebf791eba7e58451cb940bdfaa2f5da
push id3224
push userlsblakk@mozilla.com
push dateTue, 04 Feb 2014 01:06:49 +0000
treeherdermozilla-beta@60c04d0987f1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone28.0a1
first release with
nightly linux32
8648aa476eef / 28.0a1 / 20131203030202 / files
nightly linux64
8648aa476eef / 28.0a1 / 20131203030202 / files
nightly mac
8648aa476eef / 28.0a1 / 20131203030202 / files
nightly win32
8648aa476eef / 28.0a1 / 20131203030202 / files
nightly win64
8648aa476eef / 28.0a1 / 20131203030202 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge b2g-inbound to mozilla-central
browser/metro/theme/browser.css
--- a/b2g/components/FilePicker.js
+++ b/b2g/components/FilePicker.js
@@ -42,16 +42,17 @@ function FilePicker() {
 
 FilePicker.prototype = {
   classID: Components.ID('{436ff8f9-0acc-4b11-8ec7-e293efba3141}'),
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIFilePicker]),
 
   /* members */
 
   mParent: undefined,
+  mExtraProps: {},
   mFilterTypes: [],
   mFileEnumerator: undefined,
   mFilePickerShownCallback: undefined,
 
   /* methods */
 
   init: function(parent, title, mode) {
     this.mParent = parent;
@@ -80,16 +81,18 @@ FilePicker.prototype = {
   },
 
   appendFilters: function(filterMask) {
     // Ci.nsIFilePicker.filterHTML is not supported
     // Ci.nsIFilePicker.filterText is not supported
 
     if (filterMask & Ci.nsIFilePicker.filterImages) {
       this.mFilterTypes = this.mFilterTypes.concat(IMAGE_FILTERS);
+      // This property is needed for the gallery app pick activity.
+      this.mExtraProps['nocrop'] = true;
     }
 
     // Ci.nsIFilePicker.filterXML is not supported
     // Ci.nsIFilePicker.filterXUL is not supported
     // Ci.nsIFilePicker.filterApps is not supported
     // Ci.nsIFilePicker.filterAllowURLs is not supported
 
     if (filterMask & Ci.nsIFilePicker.filterVideo) {
@@ -112,16 +115,22 @@ FilePicker.prototype = {
 
     cpmm.addMessageListener('file-picked', this);
 
     let detail = {};
     if (this.mFilterTypes) {
        detail.type = this.mFilterTypes;
     }
 
+    for (let prop in this.mExtraProps) {
+      if (!(prop in detail)) {
+        detail[prop] = this.mExtraProps[prop];
+      }
+    }
+
     cpmm.sendAsyncMessage('file-picker', detail);
   },
 
   fireSuccess: function(file) {
     this.mFilesEnumerator = {
       QueryInterface: XPCOMUtils.generateQI([Ci.nsISimpleEnumerator]),
 
       mFiles: [file],
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,4 +1,4 @@
 {
-    "revision": "c2506884aba22b968d3ab1ad6c28f0782b22a17f", 
+    "revision": "001672effec8835928519312c1075a842af9166c", 
     "repo_path": "/integration/gaia-central"
 }
--- a/browser/metro/theme/browser.css
+++ b/browser/metro/theme/browser.css
@@ -317,20 +317,16 @@ documenttab[selected] .documenttab-selec
 }
 
 .scroller[orient="horizontal"] {
   min-height: @scroller_thickness@;
   height: @scroller_thickness@;
   min-width: @scroller_minimum@;
 }
 
-#browsers[input="imprecise"] browser {
-  overflow: hidden;
-}
-
 /* overlay buttons */
 
 .overlay-button {
   position: fixed;
   top: 50%;
   margin-top: -65px;
   width: 118px;
   height: 118px;
--- a/content/media/omx/MediaOmxReader.cpp
+++ b/content/media/omx/MediaOmxReader.cpp
@@ -32,16 +32,20 @@ MediaOmxReader::MediaOmxReader(AbstractM
   mAudioSeekTimeUs(-1),
   mSkipCount(0)
 {
 }
 
 MediaOmxReader::~MediaOmxReader()
 {
   ResetDecode();
+  VideoFrameContainer* container = mDecoder->GetVideoFrameContainer();
+  if (container) {
+    container->ClearCurrentFrame();
+  }
   mOmxDecoder.clear();
 }
 
 nsresult MediaOmxReader::Init(MediaDecoderReader* aCloneDonor)
 {
   return NS_OK;
 }
 
@@ -59,16 +63,22 @@ bool MediaOmxReader::IsDormantNeeded()
     return false;
   }
   return mOmxDecoder->IsDormantNeeded();
 }
 
 void MediaOmxReader::ReleaseMediaResources()
 {
   ResetDecode();
+  // Before freeing a video codec, all video buffers needed to be released
+  // even from graphics pipeline.
+  VideoFrameContainer* container = mDecoder->GetVideoFrameContainer();
+  if (container) {
+    container->ClearCurrentFrame();
+  }
   if (mOmxDecoder.get()) {
     mOmxDecoder->ReleaseMediaResources();
   }
 }
 
 void MediaOmxReader::ReleaseDecoder()
 {
   if (mOmxDecoder.get()) {
@@ -161,28 +171,16 @@ nsresult MediaOmxReader::ReadMetadata(Me
     mInfo.mAudio.mRate = sampleRate;
   }
 
  *aInfo = mInfo;
 
   return NS_OK;
 }
 
-// Resets all state related to decoding, emptying all buffers etc.
-nsresult MediaOmxReader::ResetDecode()
-{
-  MediaDecoderReader::ResetDecode();
-
-  VideoFrameContainer* container = mDecoder->GetVideoFrameContainer();
-  if (container) {
-    container->ClearCurrentFrame();
-  }
-  return NS_OK;
-}
-
 bool MediaOmxReader::DecodeVideoFrame(bool &aKeyframeSkip,
                                       int64_t aTimeThreshold)
 {
   // Record number of frames decoded and parsed. Automatically update the
   // stats counters using the AutoNotifyDecoded stack-based class.
   uint32_t parsed = 0, decoded = 0;
   AbstractMediaDecoder::AutoNotifyDecoded autoNotify(mDecoder, parsed, decoded);
 
@@ -342,22 +340,21 @@ bool MediaOmxReader::DecodeAudioData()
                                  frame.mAudioChannels));
   return true;
 }
 
 nsresult MediaOmxReader::Seek(int64_t aTarget, int64_t aStartTime, int64_t aEndTime, int64_t aCurrentTime)
 {
   NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
 
+  ResetDecode();
   VideoFrameContainer* container = mDecoder->GetVideoFrameContainer();
   if (container && container->GetImageContainer()) {
     container->GetImageContainer()->ClearAllImagesExceptFront();
   }
-  mVideoQueue.Reset();
-  mAudioQueue.Reset();
 
   mAudioSeekTimeUs = mVideoSeekTimeUs = aTarget;
 
   return DecodeToTarget(aTarget);
 }
 
 static uint64_t BytesToTime(int64_t offset, uint64_t length, uint64_t durationUs) {
   double perc = double(offset) / double(length);
--- a/content/media/omx/MediaOmxReader.h
+++ b/content/media/omx/MediaOmxReader.h
@@ -43,17 +43,16 @@ protected:
   // information used for creating OMX decoder such as video/audio codec.
   virtual nsresult InitOmxDecoder();
 
 public:
   MediaOmxReader(AbstractMediaDecoder* aDecoder);
   ~MediaOmxReader();
 
   virtual nsresult Init(MediaDecoderReader* aCloneDonor);
-  virtual nsresult ResetDecode();
 
   virtual void NotifyDataArrived(const char* aBuffer, uint32_t aLength, int64_t aOffset);
 
   virtual bool DecodeAudioData();
   virtual bool DecodeVideoFrame(bool &aKeyframeSkip,
                                 int64_t aTimeThreshold);
 
   virtual bool HasAudio()
--- a/dom/ipc/ProcessPriorityManager.cpp
+++ b/dom/ipc/ProcessPriorityManager.cpp
@@ -1040,17 +1040,19 @@ ParticularProcessPriorityManager::ShutDo
 
   UnregisterWakeLockObserver(this);
 
   if (mResetPriorityTimer) {
     mResetPriorityTimer->Cancel();
     mResetPriorityTimer = nullptr;
   }
 
-  ProcessPriorityManager::RemoveFromBackgroundLRUPool(mContentParent);
+  if (mPriority == PROCESS_PRIORITY_BACKGROUND && !IsPreallocated()) {
+    ProcessPriorityManager::RemoveFromBackgroundLRUPool(mContentParent);
+  }
 
   mContentParent = nullptr;
 }
 
 void
 ProcessPriorityManagerImpl::FireTestOnlyObserverNotification(
   const char* aTopic,
   const nsACString& aData /* = EmptyCString() */)
--- a/dom/speakermanager/SpeakerManager.cpp
+++ b/dom/speakermanager/SpeakerManager.cpp
@@ -105,20 +105,22 @@ SpeakerManager::DispatchSimpleEvent(cons
     NS_ERROR("Failed to dispatch the event!!!");
     return;
   }
 }
 
 void
 SpeakerManager::Init(nsPIDOMWindow* aWindow)
 {
-  BindToOwner(aWindow->IsOuterWindow() ?
-    aWindow->GetCurrentInnerWindow() : aWindow);
+  BindToOwner(aWindow);
 
-  mVisible = !GetOwner()->IsBackground();
+  nsCOMPtr<nsIDocShell> docshell = do_GetInterface(GetOwner());
+  NS_ENSURE_TRUE_VOID(docshell);
+  docshell->GetIsActive(&mVisible);
+
   nsCOMPtr<nsIDOMEventTarget> target = do_QueryInterface(GetOwner());
   NS_ENSURE_TRUE_VOID(target);
 
   target->AddSystemEventListener(NS_LITERAL_STRING("visibilitychange"),
                                  this,
                                  /* useCapture = */ true,
                                  /* wantsUntrusted = */ false);
 }
--- a/widget/gonk/HwcComposer2D.cpp
+++ b/widget/gonk/HwcComposer2D.cpp
@@ -520,16 +520,18 @@ HwcComposer2D::Render(EGLDisplay dpy, EG
         mList->hwLayers[mList->numHwLayers - 1].handle = fbsurface->lastHandle;
         mList->hwLayers[mList->numHwLayers - 1].acquireFenceFd = fbsurface->lastFenceFD;
     } else {
         mList->numHwLayers = 2;
         mList->hwLayers[0].hints = 0;
         mList->hwLayers[0].compositionType = HWC_BACKGROUND;
         mList->hwLayers[0].flags = HWC_SKIP_LAYER;
         mList->hwLayers[0].backgroundColor = {0};
+        mList->hwLayers[0].acquireFenceFd = -1;
+        mList->hwLayers[0].releaseFenceFd = -1;
         mList->hwLayers[0].displayFrame = {0, 0, mScreenRect.width, mScreenRect.height};
         Prepare(fbsurface->lastHandle, fbsurface->lastFenceFD);
     }
 
     // GPU or partial HWC Composition
     Commit();
 
     GetGonkDisplay()->SetFBReleaseFd(mList->hwLayers[mList->numHwLayers - 1].releaseFenceFd);
--- a/widget/gonk/libdisplay/GonkDisplayJB.cpp
+++ b/widget/gonk/libdisplay/GonkDisplayJB.cpp
@@ -229,16 +229,18 @@ GonkDisplayJB::Post(buffer_handle_t buf,
     mList->retireFenceFd = -1;
     mList->numHwLayers = 2;
     mList->flags = HWC_GEOMETRY_CHANGED;
     mList->hwLayers[0].compositionType = HWC_BACKGROUND;
     mList->hwLayers[0].hints = 0;
     /* Skip this layer so the hwc module doesn't complain about null handles */
     mList->hwLayers[0].flags = HWC_SKIP_LAYER;
     mList->hwLayers[0].backgroundColor = {0};
+    mList->hwLayers[0].acquireFenceFd = -1;
+    mList->hwLayers[0].releaseFenceFd = -1;
     /* hwc module checks displayFrame even though it shouldn't */
     mList->hwLayers[0].displayFrame = r;
     mList->hwLayers[1].compositionType = HWC_FRAMEBUFFER_TARGET;
     mList->hwLayers[1].hints = 0;
     mList->hwLayers[1].flags = 0;
     mList->hwLayers[1].handle = buf;
     mList->hwLayers[1].transform = 0;
     mList->hwLayers[1].blending = HWC_BLENDING_PREMULT;