author | Carsten "Tomcat" Book <cbook@mozilla.com> |
Tue, 03 Dec 2013 10:41:51 +0100 | |
changeset 158471 | 8648aa476eefd28ed305b6d0e648d9c802f4c327 |
parent 158450 | 41a3163ac71405b46341ef57e2cf63417d753a26 (current diff) |
parent 158470 | 3c57c72b4b6155a332a1036d1390869b13fb832d (diff) |
child 158472 | 4bf430d990e5b4f74f5876b4cabe1b3427977164 |
child 158478 | e6b278c315bcb08d8b9c8884d501f9fae7df0889 |
child 158546 | 24161557228b65b567975a2ce36ee58a50b1a535 |
child 158585 | 669ccbd09ebf791eba7e58451cb940bdfaa2f5da |
push id | 25746 |
push user | cbook@mozilla.com |
push date | Tue, 03 Dec 2013 09:42:02 +0000 |
treeherder | mozilla-central@8648aa476eef [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
milestone | 28.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
28.0a1
/
20131203030202
/
pushlog to previous
nightly linux64
28.0a1
/
20131203030202
/
pushlog to previous
nightly mac
28.0a1
/
20131203030202
/
pushlog to previous
nightly win32
28.0a1
/
20131203030202
/
pushlog to previous
nightly win64
28.0a1
/
20131203030202
/
pushlog to previous
|
--- 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;