зеркало из https://github.com/mozilla/gecko-dev.git
Factor compositor initialization out of LayerManagerComposite. (bug 1245765 part 6, r=mattwoodrow)
This commit is contained in:
Родитель
dd2df9d99a
Коммит
d4db86d05e
|
@ -133,13 +133,6 @@ LayerManagerComposite::~LayerManagerComposite()
|
|||
}
|
||||
|
||||
|
||||
bool
|
||||
LayerManagerComposite::Initialize()
|
||||
{
|
||||
bool result = mCompositor->Initialize();
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
LayerManagerComposite::Destroy()
|
||||
{
|
||||
|
|
|
@ -76,11 +76,6 @@ public:
|
|||
|
||||
virtual void Destroy() override;
|
||||
|
||||
/**
|
||||
* return True if initialization was succesful, false when it was not.
|
||||
*/
|
||||
bool Initialize();
|
||||
|
||||
/**
|
||||
* Sets the clipping region for this layer manager. This is important on
|
||||
* windows because using OGL we no longer have GDI's native clipping. Therefor
|
||||
|
|
|
@ -1566,6 +1566,20 @@ CompositorParent::InitializeLayerManager(const nsTArray<LayersBackend>& aBackend
|
|||
NS_ASSERTION(!mLayerManager, "Already initialised mLayerManager");
|
||||
NS_ASSERTION(!mCompositor, "Already initialised mCompositor");
|
||||
|
||||
mCompositor = NewCompositor(aBackendHints);
|
||||
if (!mCompositor) {
|
||||
return;
|
||||
}
|
||||
|
||||
mLayerManager = new LayerManagerComposite(mCompositor);
|
||||
|
||||
MonitorAutoLock lock(*sIndirectLayerTreesLock);
|
||||
sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = mLayerManager;
|
||||
}
|
||||
|
||||
RefPtr<Compositor>
|
||||
CompositorParent::NewCompositor(const nsTArray<LayersBackend>& aBackendHints)
|
||||
{
|
||||
for (size_t i = 0; i < aBackendHints.Length(); ++i) {
|
||||
RefPtr<Compositor> compositor;
|
||||
if (aBackendHints[i] == LayersBackend::LAYERS_OPENGL) {
|
||||
|
@ -1590,24 +1604,13 @@ CompositorParent::InitializeLayerManager(const nsTArray<LayersBackend>& aBackend
|
|||
#endif
|
||||
}
|
||||
|
||||
if (!compositor) {
|
||||
// We passed a backend hint for which we can't create a compositor.
|
||||
// For example, we sometime pass LayersBackend::LAYERS_NONE as filler in aBackendHints.
|
||||
continue;
|
||||
}
|
||||
|
||||
compositor->SetCompositorID(mCompositorID);
|
||||
RefPtr<LayerManagerComposite> layerManager = new LayerManagerComposite(compositor);
|
||||
|
||||
if (layerManager->Initialize()) {
|
||||
mLayerManager = layerManager;
|
||||
MOZ_ASSERT(compositor);
|
||||
mCompositor = compositor;
|
||||
MonitorAutoLock lock(*sIndirectLayerTreesLock);
|
||||
sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager;
|
||||
return;
|
||||
if (compositor && compositor->Initialize()) {
|
||||
compositor->SetCompositorID(mCompositorID);
|
||||
return compositor;
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
PLayerTransactionParent*
|
||||
|
|
|
@ -501,6 +501,8 @@ protected:
|
|||
void CancelCurrentCompositeTask();
|
||||
void Invalidate();
|
||||
|
||||
RefPtr<Compositor> NewCompositor(const nsTArray<LayersBackend>& aBackendHints);
|
||||
|
||||
/**
|
||||
* Add a compositor to the global compositor map.
|
||||
*/
|
||||
|
|
|
@ -128,7 +128,7 @@ static already_AddRefed<Compositor> CreateTestCompositor(LayersBackend backend,
|
|||
#endif
|
||||
}
|
||||
|
||||
if (!compositor) {
|
||||
if (!compositor || !compositor->Initialize()) {
|
||||
printf_stderr("Failed to construct layer manager for the requested backend\n");
|
||||
abort();
|
||||
}
|
||||
|
@ -151,8 +151,6 @@ static std::vector<LayerManagerData> GetLayerManagers(std::vector<LayersBackend>
|
|||
|
||||
RefPtr<LayerManagerComposite> layerManager = new LayerManagerComposite(compositor);
|
||||
|
||||
layerManager->Initialize();
|
||||
|
||||
managers.push_back(LayerManagerData(compositor, widget, layerManager));
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче