MaskedDevice constructor
MaskedDevice(
- GraphicsDevice inner, {
- required Iterable<
DeviceFeature> disabledFeatures,
inner without disabledFeatures. A feature inner does not have,
or a reserved one, may be named and changes nothing.
The answer is a device that mixes in SynchronousBufferReadback only
when inner does and the mask keeps synchronousReadback, so a
caller asking with is gets the masked answer too.
Implementation
factory MaskedDevice(
GraphicsDevice inner, {
required Iterable<DeviceFeature> disabledFeatures,
}) {
final disabled = Set<DeviceFeature>.unmodifiable(disabledFeatures);
return inner is SynchronousBufferReadback &&
!disabled.contains(DeviceFeature.synchronousReadback)
? _MaskedReadbackDevice._(inner, disabled)
: MaskedDevice._(inner, disabled);
}