This caused regressions for two internal customers.
Issue: https://github.com/flutter/flutter/issues/123654
Internal issue: b/275565297.
This reverts commit d7059df4ebe468913480f84d9d88832e89fc87d2.
* Fix mip-map generation in unit-tests where the command buffer was not
submitted.
* Cleanup descriptor counts being always 1 in Vulkan code-gen.
* Reworked capabilities. Platforms can add to the base capability set.
* Vulkan backend picks between more available color and stencil formats.
* Descriptor pools are dynamically sized.
* Layout transitions are more explicit. Both allocated and swapchain images
track their own layouts and redundant transitions are avoided.
* Objects active in a pending command buffer are collected but the waits happen
on a separate fence waiter. Thread is named
"io.flutter.impeller.fence_waiter".
* Added queue and command buffer instant markers for better traces.
* Command pools and their buffers are now thread local. Fixes sync validation
failure.
* Debug reports are now more readable and command buffer and queue breadcrumbs
will be displayed on a validation report.
* Staging buffers are back.
* Pipeline caches have been wired up. After 50 frames, the current Vulkan
pipeline cache will be written out to disk for subsequent launches. Writes
will happen on a background worker.
* Runtime stages have been wired up. But the build rules to provide the right
stages are still remaining.
Fixes https://github.com/flutter/flutter/issues/121536
Fixes https://github.com/flutter/flutter/issues/121627
Fixes https://github.com/flutter/flutter/issues/121632
Fixes https://github.com/flutter/flutter/issues/120499
Currently, the framework allows setting the clipboard to `null`. [Platforms handle this case inconsistently](https://github.com/flutter/flutter/issues/121976#issuecomment-1464721716), and we will update the framework to disallow setting the clipboard's data to `null`.
In the meantime, this change makes the Windows embedder resilient to unexpected clipboard messages. If your clipboard data's text is unexpected, you will now get an error instead of crashing your app.
Part of https://github.com/flutter/flutter/issues/121976
This works around an AppKit bug in which mouseDown/mouseUp events are
not correctly forwarded up the responder chain for views nested inside
an NSPopover if (and only if) the macOS "Reduce Transparency"
accessibility setting is enabled in the System Settings.
When the above conditions are satisfied, the nested NSView receives the
mouseDown:/mouseUp: call but if it delegates to the default
implementation (implemented in NSResponder) mouseDown/mouseUp calls are
triggered on containing views (in our case FlutterViewWrapper) but not
triggered on the view controller and other responders in the responder
chain until we an _NSPopoverWindow class is hit.
A minimal AppKit-only (non-Flutter) repro shows this behaviour repros
with even a minimal NSViewController implementation and an unmodified NSView.
See: https://github.com/cbracken/PopoverRepro
A radar has been filed with Apple and a copy posted to OpenRadar.
See: http://www.openradar.me/FB12050037
In order to work around this bug, we override mouseDown/mouseUp in the
topmost containing view of FlutterView (in our case, FlutterViewWrapper)
to have the behaviour documented as the default behaviour in
NSResponder's mouseDown/mouseUp documentation. In otherwords, to simply
forward the call to self.nextResponder.
See: https://developer.apple.com/documentation/appkit/nsresponder/1524634-mousedown
Because replicating the exact configuration of a FlutterView contained
in an NSPopover and System Settings that have been modified to enable
the "Reduce Transparency" setting is difficult and likely error-prone in
infra, we instead simulate the bug by testing that even if NSResponder's
mouseDown/mouseUp method are swizzled to no-op, these calls are
correctly forwarded to the next responder in the chain.
If, in the future Apple does fix this issue, this workaround can be
removed once Flutter's minimum supported macOS SDK is at least the
version that contains the fix.
Issue: https://github.com/flutter/flutter/issues/115015