author | Nicholas Cameron <ncameron@mozilla.com> |
Mon, 09 Dec 2013 14:40:58 +1300 | |
changeset 159643 | 96fd6d7d2f8c38379ebd964fbd9c35f076a3909f |
parent 159642 | 5204feef4698f12f5161a72a88fb1a2fd068811c |
child 159644 | 8927d5297df192032ddc29042dff0e2b467173e5 |
push id | 25808 |
push user | cbook@mozilla.com |
push date | Tue, 10 Dec 2013 12:03:31 +0000 |
treeherder | mozilla-central@7fb91a422c5e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 865033 |
milestone | 29.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
gfx/layers/ipc/CompositorCocoaWidgetHelper.cpp | file | annotate | diff | comparison | revisions | |
gfx/layers/ipc/CompositorCocoaWidgetHelper.h | file | annotate | diff | comparison | revisions | |
gfx/layers/ipc/CompositorParent.cpp | file | annotate | diff | comparison | revisions | |
gfx/layers/ipc/CompositorParent.h | file | annotate | diff | comparison | revisions | |
gfx/layers/moz.build | file | annotate | diff | comparison | revisions | |
widget/cocoa/nsChildView.mm | file | annotate | diff | comparison | revisions |
deleted file mode 100644 --- a/gfx/layers/ipc/CompositorCocoaWidgetHelper.cpp +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set sw=2 ts=2 et tw=80 : */ -/* 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 "CompositorParent.h" -#include "CompositorCocoaWidgetHelper.h" -#include "nsDebug.h" - -namespace mozilla { -namespace layers { -namespace compositor { - -LayerManagerComposite* -GetLayerManager(CompositorParent* aParent) -{ - return aParent->GetLayerManager(); -} - - -} -} -}
deleted file mode 100644 --- a/gfx/layers/ipc/CompositorCocoaWidgetHelper.h +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim: set sw=4 ts=8 et tw=80 : */ -/* 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/. */ - -#ifndef mozilla_layers_CompositorCocoaWidgetHelper_h -#define mozilla_layers_CompositorCocoaWidgetHelper_h - -// Note we can't include IPDL-generated headers here, since this file is being -// used as a workaround for Bug 719036. - -namespace mozilla { -namespace layers { - -class CompositorParent; -class LayerManagerComposite; - -namespace compositor { - -// Needed when we cannot directly include CompositorParent.h since it includes -// an IPDL-generated header (e.g. in widget/cocoa/nsChildView.mm; see Bug 719036). -LayerManagerComposite* GetLayerManager(CompositorParent* aParent); - -} -} -} -#endif // mozilla_layers_CompositorCocoaWidgetHelper_h -
--- a/gfx/layers/ipc/CompositorParent.cpp +++ b/gfx/layers/ipc/CompositorParent.cpp @@ -57,16 +57,17 @@ using namespace mozilla::ipc; using namespace mozilla::gfx; using namespace std; namespace mozilla { namespace layers { CompositorParent::LayerTreeState::LayerTreeState() : mParent(nullptr) + , mLayerManager(nullptr) { } typedef map<uint64_t, CompositorParent::LayerTreeState> LayerTreeMap; static LayerTreeMap sIndirectLayerTrees; // FIXME/bug 774386: we're assuming that there's only one // CompositorParent, but that's not always true. This assumption only @@ -258,16 +259,17 @@ CompositorParent::RecvWillStop() // Ensure that the layer manager is destroyed before CompositorChild. if (mLayerManager) { for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin(); it != sIndirectLayerTrees.end(); it++) { LayerTreeState* lts = &it->second; if (lts->mParent == this) { mLayerManager->ClearCachedResources(lts->mRoot); + lts->mLayerManager = nullptr; } } mLayerManager->Destroy(); mLayerManager = nullptr; mCompositionManager = nullptr; } return true; @@ -366,16 +368,17 @@ void CompositorParent::ActorDestroy(ActorDestroyReason why) { mPaused = true; RemoveCompositor(mCompositorID); if (mLayerManager) { mLayerManager->Destroy(); mLayerManager = nullptr; + sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr; mCompositionManager = nullptr; } } void CompositorParent::ScheduleRenderOnCompositorThread() { @@ -498,17 +501,17 @@ void CompositorParent::NotifyShadowTreeTransaction(uint64_t aId, bool aIsFirstPaint) { if (mApzcTreeManager && mLayerManager && mLayerManager->GetRoot()) { AutoResolveRefLayers resolve(mCompositionManager); mApzcTreeManager->UpdatePanZoomControllerTree(this, mLayerManager->GetRoot(), aIsFirstPaint, aId); - mLayerManager->AsLayerManagerComposite()->NotifyShadowTreeTransaction(); + mLayerManager->NotifyShadowTreeTransaction(); } ScheduleComposition(); } // Used when layout.frame_rate is -1. Needs to be kept in sync with // DEFAULT_FRAME_RATE in nsRefreshDriver.cpp. static const int32_t kDefaultFrameRate = 60; @@ -729,16 +732,17 @@ CompositorParent::InitializeLayerManager if (!layerManager) { continue; } layerManager->SetCompositorID(mCompositorID); if (layerManager->Initialize()) { mLayerManager = layerManager; + sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager; return; } } } PLayerTransactionParent* CompositorParent::AllocPLayerTransactionParent(const nsTArray<LayersBackend>& aBackendHints, const uint64_t& aId, @@ -846,16 +850,17 @@ CompositorParent::RecvNotifyChildCreated NotifyChildCreated(child); return true; } void CompositorParent::NotifyChildCreated(uint64_t aChild) { sIndirectLayerTrees[aChild].mParent = this; + sIndirectLayerTrees[aChild].mLayerManager = mLayerManager; } /*static*/ uint64_t CompositorParent::AllocateLayerTreeId() { MOZ_ASSERT(CompositorLoop()); MOZ_ASSERT(NS_IsMainThread()); static uint64_t ids = 0; @@ -1066,18 +1071,18 @@ CrossProcessCompositorParent::ActorDestr PLayerTransactionParent* CrossProcessCompositorParent::AllocPLayerTransactionParent(const nsTArray<LayersBackend>&, const uint64_t& aId, TextureFactoryIdentifier* aTextureFactoryIdentifier, bool *aSuccess) { MOZ_ASSERT(aId != 0); - if (sIndirectLayerTrees[aId].mParent) { - LayerManagerComposite* lm = sIndirectLayerTrees[aId].mParent->GetLayerManager(); + if (sIndirectLayerTrees[aId].mLayerManager) { + LayerManagerComposite* lm = sIndirectLayerTrees[aId].mLayerManager; *aTextureFactoryIdentifier = lm->GetTextureFactoryIdentifier(); *aSuccess = true; LayerTransactionParent* p = new LayerTransactionParent(lm, this, aId); p->AddIPDLReference(); return p; } NS_WARNING("Created child without a matching parent?");
--- a/gfx/layers/ipc/CompositorParent.h +++ b/gfx/layers/ipc/CompositorParent.h @@ -102,18 +102,16 @@ public: * be called by the widget code when it loses its viewport information * (or for whatever reason wants to refresh the viewport information). * The information refresh happens because the compositor will call * SetFirstPaintViewport on the next frame of composition. */ void ForceIsFirstPaint(); void Destroy(); - LayerManagerComposite* GetLayerManager() { return mLayerManager; } - void NotifyChildCreated(uint64_t aChild); void AsyncRender(); // Can be called from any thread void ScheduleRenderOnCompositorThread(); void SchedulePauseOnCompositorThread(); /** @@ -198,16 +196,17 @@ public: static void StartUpWithExistingThread(MessageLoop* aMsgLoop, PlatformThreadId aThreadID); struct LayerTreeState { LayerTreeState(); nsRefPtr<Layer> mRoot; nsRefPtr<GeckoContentController> mController; CompositorParent* mParent; + LayerManagerComposite* mLayerManager; TargetConfig mTargetConfig; }; /** * Lookup the indirect shadow tree for |aId| and return it if it * exists. Otherwise null is returned. This must only be called on * the compositor thread. */
--- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -123,17 +123,16 @@ EXPORTS.mozilla.layers += [ 'D3D9SurfaceImage.h', 'Effects.h', 'ImageDataSerializer.h', 'ipc/AsyncPanZoomController.h', 'ipc/Axis.h', 'ipc/CompositableForwarder.h', 'ipc/CompositableTransactionParent.h', 'ipc/CompositorChild.h', - 'ipc/CompositorCocoaWidgetHelper.h', 'ipc/CompositorParent.h', 'ipc/GeckoContentController.h', 'ipc/GestureEventListener.h', 'ipc/ImageBridgeChild.h', 'ipc/ImageBridgeParent.h', 'ipc/ISurfaceAllocator.h', 'ipc/LayerTransactionChild.h', 'ipc/LayerTransactionParent.h', @@ -235,17 +234,16 @@ UNIFIED_SOURCES += [ 'CopyableCanvasLayer.cpp', 'Effects.cpp', 'ImageDataSerializer.cpp', 'ImageLayers.cpp', 'ipc/AsyncPanZoomController.cpp', 'ipc/Axis.cpp', 'ipc/CompositableTransactionParent.cpp', 'ipc/CompositorChild.cpp', - 'ipc/CompositorCocoaWidgetHelper.cpp', 'ipc/CompositorParent.cpp', 'ipc/GestureEventListener.cpp', 'ipc/ImageBridgeChild.cpp', 'ipc/ImageBridgeParent.cpp', 'ipc/ISurfaceAllocator.cpp', 'ipc/LayerTransactionChild.cpp', 'ipc/LayerTransactionParent.cpp', 'ipc/ShadowLayerChild.cpp',
--- a/widget/cocoa/nsChildView.mm +++ b/widget/cocoa/nsChildView.mm @@ -58,17 +58,16 @@ #include "Layers.h" #include "ClientLayerManager.h" #include "mozilla/layers/LayerManagerComposite.h" #include "GLTextureImage.h" #include "GLContextProvider.h" #include "GLContext.h" #include "GLUploadHelpers.h" #include "mozilla/layers/GLManager.h" -#include "mozilla/layers/CompositorCocoaWidgetHelper.h" #include "mozilla/layers/CompositorOGL.h" #include "mozilla/layers/BasicCompositor.h" #include "gfxUtils.h" #include "mozilla/gfx/2D.h" #include "mozilla/gfx/BorrowedContext.h" #ifdef ACCESSIBILITY #include "nsAccessibilityService.h" #include "mozilla/a11y/Platform.h"