already_AddRefed<ThebesLayer> ClientLayerManager::CreateThebesLayerWithHint(ThebesLayerCreationHint aHint) { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); if ( #ifdef MOZ_B2G aHint == SCROLLABLE && #endif gfxPrefs::LayersTilesEnabled() && (AsShadowForwarder()->GetCompositorBackendType() == LayersBackend::LAYERS_OPENGL || AsShadowForwarder()->GetCompositorBackendType() == LayersBackend::LAYERS_D3D9 || AsShadowForwarder()->GetCompositorBackendType() == LayersBackend::LAYERS_D3D11)) { if (gfxPrefs::LayersUseSimpleTiles()) { nsRefPtr<SimpleClientTiledThebesLayer> layer = new SimpleClientTiledThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } else { nsRefPtr<ClientTiledThebesLayer> layer = new ClientTiledThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } } else { nsRefPtr<ClientThebesLayer> layer = new ClientThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } }
already_AddRefed<PaintedLayer> ClientLayerManager::CreatePaintedLayerWithHint(PaintedLayerCreationHint aHint) { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); // The non-tiling ContentClient requires CrossProcessSemaphore which // isn't implemented for OSX. #ifdef XP_MACOSX if (true) { #else if (gfxPrefs::LayersTilesEnabled()) { #endif RefPtr<ClientTiledPaintedLayer> layer = new ClientTiledPaintedLayer(this, aHint); CREATE_SHADOW(Painted); return layer.forget(); } else { RefPtr<ClientPaintedLayer> layer = new ClientPaintedLayer(this, aHint); CREATE_SHADOW(Painted); return layer.forget(); } } void ClientPaintedLayer::PrintInfo(std::stringstream& aStream, const char* aPrefix) { PaintedLayer::PrintInfo(aStream, aPrefix); if (mContentClient) { aStream << "\n"; nsAutoCString pfx(aPrefix); pfx += " "; mContentClient->PrintInfo(aStream, pfx.get()); } }
already_AddRefed<ThebesLayer> ClientLayerManager::CreateThebesLayer() { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); if (Preferences::GetBool("layers.force-tiles") && GetCompositorBackendType() == LAYERS_OPENGL) { nsRefPtr<ClientTiledThebesLayer> layer = new ClientTiledThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } else { nsRefPtr<ClientThebesLayer> layer = new ClientThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } }
already_AddRefed<CanvasLayer> ClientLayerManager::CreateCanvasLayer() { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); nsRefPtr<ClientCanvasLayer> layer = new ClientCanvasLayer(this); CREATE_SHADOW(Canvas); return layer.forget(); }
already_AddRefed<ThebesLayer> ClientLayerManager::CreateThebesLayer() { NS_ASSERTION(InConstruction(), "Only allowed in construction phase"); #ifdef FORCE_BASICTILEDTHEBESLAYER if (GetCompositorBackendType() == LAYERS_OPENGL) { nsRefPtr<ClientTiledThebesLayer> layer = new ClientTiledThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } else #endif { nsRefPtr<ClientThebesLayer> layer = new ClientThebesLayer(this); CREATE_SHADOW(Thebes); return layer.forget(); } }