DefaultFactory 定义在 SurfaceFlingerDefaultFactory.h
中。实现都非常简单。例如 createBufferQueueLayer()
实现是调用 BufferQueueLayer 构造函数,createBufferQueue()
实现是调用 BufferQueue::createBufferQueue()。
sp<BufferQueueLayer> DefaultFactory::createBufferQueueLayer(const LayerCreationArgs& args) {
return new BufferQueueLayer(args);
}
void DefaultFactory::createBufferQueue(sp<IGraphicBufferProducer>* outProducer,
sp<IGraphicBufferConsumer>* outConsumer,
bool consumerIsSurfaceFlinger) {
BufferQueue::createBufferQueue(outProducer, outConsumer, consumerIsSurfaceFlinger);
}
sp<IGraphicBufferProducer> DefaultFactory::createMonitoredProducer(
const sp<IGraphicBufferProducer>& producer, const sp<SurfaceFlinger>& flinger,
const wp<Layer>& layer) {
return new MonitoredProducer(producer, flinger, layer);
}