Skip to content

Commit

Permalink
Merge branch 'embedlite' into embedlite_upgrade
Browse files Browse the repository at this point in the history
Conflicts:
	content/media/gstreamer/GStreamerReader.h
  • Loading branch information
tmeshkova committed Feb 12, 2014
2 parents e961fb6 + 5f1f417 commit eed5cc3
Show file tree
Hide file tree
Showing 12 changed files with 65 additions and 17 deletions.
11 changes: 10 additions & 1 deletion content/media/gstreamer/GStreamerDecoder.cpp
Expand Up @@ -13,7 +13,8 @@ namespace mozilla {

MediaDecoderStateMachine* GStreamerDecoder::CreateStateMachine()
{
return new MediaDecoderStateMachine(this, new GStreamerReader(this));
mLastReader = new GStreamerReader(this);
return new MediaDecoderStateMachine(this, mLastReader);
}

bool
Expand All @@ -24,5 +25,13 @@ GStreamerDecoder::CanHandleMediaType(const nsACString& aMIMEType,
GStreamerFormatHelper::Instance()->CanHandleMediaType(aMIMEType, aCodecs);
}

void
GStreamerDecoder::Suspend()
{
if (mLastReader) {
mLastReader->Suspend();
}
}

} // namespace mozilla

4 changes: 4 additions & 0 deletions content/media/gstreamer/GStreamerDecoder.h
Expand Up @@ -12,12 +12,16 @@

namespace mozilla {

class GStreamerReader;
class GStreamerDecoder : public MediaDecoder
{
public:
virtual MediaDecoder* Clone() { return new GStreamerDecoder(); }
virtual void Suspend() MOZ_OVERRIDE;
virtual MediaDecoderStateMachine* CreateStateMachine();
static bool CanHandleMediaType(const nsACString& aMIMEType, const nsAString* aCodecs);
private:
GStreamerReader* mLastReader;
};

} // namespace mozilla
Expand Down
7 changes: 7 additions & 0 deletions content/media/gstreamer/GStreamerReader.cpp
Expand Up @@ -157,6 +157,13 @@ GStreamerReader::~GStreamerReader()
}
}

void GStreamerReader::Suspend()
{
#ifdef HAS_NEMO_RESOURCE
ResetIfCurrentDecoderActive(this);
#endif
}

nsresult GStreamerReader::Init(MediaDecoderReader* aCloneDonor)
{
GStreamerFormatHelper::Instance();
Expand Down
2 changes: 2 additions & 0 deletions content/media/gstreamer/GStreamerReader.h
Expand Up @@ -68,6 +68,8 @@ class GStreamerReader : public MediaDecoderReader

layers::ImageContainer* GetImageContainer() { return mDecoder->GetImageContainer(); }

void Suspend();

private:

void ReadAndPushData(guint aLength);
Expand Down
5 changes: 0 additions & 5 deletions embedding/embedlite/embedding.js
Expand Up @@ -303,8 +303,3 @@ pref("extensions.minCompatibleAppVersion", "11.0");

// Enable sub layers for apzc
pref("layout.want.subapzc", true);

// Temporary, until bug 957504 fixed
pref("javascript.options.baselinejit.content", false);
pref("javascript.options.baselinejit.chrome", false);

12 changes: 12 additions & 0 deletions embedding/embedlite/embedthread/EmbedLiteViewThreadChild.cpp
Expand Up @@ -31,6 +31,9 @@
#include "EmbedLiteAppService.h"
#include "nsIWidgetListener.h"

#include "APZCCallbackHelper.h"
#include "mozilla/dom/Element.h"

using namespace mozilla::layers;
using namespace mozilla::widget;

Expand Down Expand Up @@ -931,6 +934,15 @@ EmbedLiteViewThreadChild::OnUpdateDisplayPort()
return NS_OK;
}

bool
EmbedLiteViewThreadChild::GetScrollIdentifiers(uint32_t *aPresShellIdOut, mozilla::layers::FrameMetrics::ViewID *aViewIdOut)
{
nsCOMPtr<nsIDOMDocument> domDoc;
mWebNavigation->GetDocument(getter_AddRefs(domDoc));
nsCOMPtr<nsIDocument> doc(do_QueryInterface(domDoc));
return APZCCallbackHelper::GetScrollIdentifiers(doc->GetDocumentElement(), aPresShellIdOut, aViewIdOut);
}

} // namespace embedlite
} // namespace mozilla

5 changes: 5 additions & 0 deletions embedding/embedlite/embedthread/EmbedLiteViewThreadChild.h
Expand Up @@ -56,6 +56,11 @@ class EmbedLiteViewThreadChild : public PEmbedLiteViewChild,
uint32_t GetID() { return mId; }
gfxSize GetGLViewSize();

/**
* This method is used by EmbedLiteAppService::ZoomToRect() only.
*/
bool GetScrollIdentifiers(uint32_t *aPresShellId, mozilla::layers::FrameMetrics::ViewID *aViewId);

virtual bool RecvAsyncMessage(const nsString& aMessage,
const nsString& aData);

Expand Down
8 changes: 7 additions & 1 deletion embedding/embedlite/modules/EmbedLiteAppService.cpp
Expand Up @@ -276,7 +276,13 @@ EmbedLiteAppService::ZoomToRect(uint32_t aWinId, float aX, float aY, float aWidt
{
EmbedLiteViewThreadChild* view = sGetViewById(aWinId);
NS_ENSURE_TRUE(view, NS_ERROR_FAILURE);
view->SendZoomToRect(0, 0, CSSRect(aX, aY, aWidth, aHeight));

uint32_t presShellId;
mozilla::layers::FrameMetrics::ViewID viewId;
if (view->GetScrollIdentifiers(&presShellId, &viewId)) {
view->SendZoomToRect(presShellId, viewId, CSSRect(aX, aY, aWidth, aHeight));
}

return NS_OK;
}

Expand Down
12 changes: 9 additions & 3 deletions gfx/layers/ipc/AsyncPanZoomController.cpp
Expand Up @@ -1681,11 +1681,17 @@ void AsyncPanZoomController::NotifyLayersUpdated(const FrameMetrics& aLayerMetri
// If we're not taking the aLayerMetrics wholesale we still need to pull
// in some things into our local mFrameMetrics because these things are
// determined by Gecko and our copy in mFrameMetrics may be stale.

if (mFrameMetrics.mCompositionBounds.width == aLayerMetrics.mCompositionBounds.width) {
float parentResolutionChange = aLayerMetrics.GetParentResolution().scale
/ mFrameMetrics.GetParentResolution().scale;
mFrameMetrics.mZoom.scale *= parentResolutionChange;
} else {
// Take the new zoom as composition width got changed (i.e. due to orientation change)
mFrameMetrics.mZoom.scale = aLayerMetrics.mZoom.scale;
}
mFrameMetrics.mScrollableRect = aLayerMetrics.mScrollableRect;
mFrameMetrics.mCompositionBounds = aLayerMetrics.mCompositionBounds;
float parentResolutionChange = aLayerMetrics.GetParentResolution().scale
/ mFrameMetrics.GetParentResolution().scale;
mFrameMetrics.mZoom.scale *= parentResolutionChange;
mFrameMetrics.mResolution = aLayerMetrics.mResolution;
mFrameMetrics.mCumulativeResolution = aLayerMetrics.mCumulativeResolution;
mFrameMetrics.mHasScrollgrab = aLayerMetrics.mHasScrollgrab;
Expand Down
1 change: 0 additions & 1 deletion js/src/jit/BaselineIC.cpp
Expand Up @@ -1926,7 +1926,6 @@ ICCompare_Fallback::Compiler::generateStubCode(MacroAssembler &masm)
masm.pushValue(R0);
masm.push(BaselineStubReg);
masm.pushBaselineFramePtr(BaselineFrameReg, R0.scratchReg());

return tailCallVM(DoCompareFallbackInfo, masm);
}

Expand Down
14 changes: 8 additions & 6 deletions js/src/jit/arm/MacroAssembler-arm.cpp
Expand Up @@ -3493,6 +3493,7 @@ MacroAssemblerARMCompat::setupABICall(uint32_t args)
#ifdef JS_CODEGEN_ARM_HARDFP
usedIntSlots_ = 0;
usedFloatSlots_ = 0;
usedFloat32_ = false;
padding_ = 0;
#else
usedSlots_ = 0;
Expand Down Expand Up @@ -3535,25 +3536,27 @@ MacroAssemblerARMCompat::passABIArg(const MoveOperand &from, MoveOp::Type type)
switch (type) {
case MoveOp::FLOAT32:
case MoveOp::DOUBLE: {
JS_ASSERT(!usedFloat32_);
if (type == MoveOp::FLOAT32)
usedFloat32_ = true;
FloatRegister fr;
if (GetFloatArgReg(usedIntSlots_, usedFloatSlots_, &fr)) {
if (from.isFloatReg() && from.floatReg() == fr) {
// Nothing to do; the value is in the right register already
usedFloatSlots_++;
if (type == MoveOp::FLOAT32)
passedArgTypes_ = (passedArgTypes_ << ArgType_Shift) | ArgType_Float32;
else
passedArgTypes_ = (passedArgTypes_ << ArgType_Shift) | ArgType_Double;
break;
// Nothing to do; the value is in the right register already
return;
}
to = MoveOperand(fr);
} else {
// If (and only if) the integer registers have started spilling, do we
// need to take the register's alignment into account
uint32_t disp;
uint32_t disp = INT_MAX;
if (type == MoveOp::FLOAT32)
disp = GetFloat32ArgStackDisp(usedIntSlots_, usedFloatSlots_, &padding_);
disp = GetFloat32ArgStackDisp(usedIntSlots_, usedFloatSlots_, &padding_);
else
disp = GetDoubleArgStackDisp(usedIntSlots_, usedFloatSlots_, &padding_);
to = MoveOperand(sp, disp);
Expand All @@ -3569,10 +3572,9 @@ MacroAssemblerARMCompat::passABIArg(const MoveOperand &from, MoveOp::Type type)
Register r;
if (GetIntArgReg(usedIntSlots_, usedFloatSlots_, &r)) {
if (from.isGeneralReg() && from.reg() == r) {
// Almost nothing to do; the value is in the right register already
// Nothing to do; the value is in the right register already
usedIntSlots_++;
passedArgTypes_ = (passedArgTypes_ << ArgType_Shift) | ArgType_General;

return;
}
to = MoveOperand(r);
Expand Down
1 change: 1 addition & 0 deletions js/src/jit/arm/MacroAssembler-arm.h
Expand Up @@ -448,6 +448,7 @@ class MacroAssemblerARMCompat : public MacroAssemblerARM
#ifdef JS_CODEGEN_ARM_HARDFP
uint32_t usedIntSlots_;
uint32_t usedFloatSlots_;
bool usedFloat32_;
uint32_t padding_;
#else
// ARM treats arguments as a vector in registers/memory, that looks like:
Expand Down

0 comments on commit eed5cc3

Please sign in to comment.