This has been here since it was added in a2ba761ae. I think it's never caused
problems because the two lists are the same in all cases where the method's
result is used (the single caller, ArtManager.Close, immediately checks the
result of this method and throws if multiple atlases are used).
Y'know, where the thing they're being passed to is created... I don't think them
only being attached once was a problem, as one is also called from elsewhere and
the other is kinda useless
* Pass IDialogParent to IVideoWriter impls via ctor instead of param
* Refactor IDialogController/Parent, moving some of it to Client.Common
tl;dr: MessageBoxButtons.OK => ShowMessageBox/ModalMessageBox,
MessageBoxButtons.YesNo or .OKCancel => ShowMessageBox2/ModalMessageBox2,
MessageBoxButtons.YesNoCancel => ShowMessageBox3/ModalMessageBox3.
Possible breaking change: Cheats had `Owner ?? this` as its "self", which I
think parented any modals it opened to MainForm instead of the Cheats window.
The Cheats window will be their parent now regardless. Other than that, all the
icons and stuff for all the other dialogs should be exactly the same.
* Remove WinForms dep from AV classes where possible
* Cleanup CoreFileProvider init, passing MainForm as IDialogParent
* Pass MainForm as IDialogParent to MovieSession
* Pass IDialogController through to one MovieZone ctor
* Use MessageBox helpers in RecordMovie
* Implement IDialogParent on misc. Forms to use MessageBox helpers
* Use MessageBox helper in misc. config Forms
* Pass IDialogController through to misc. Forms for MessageBox helpers
MainForm intentionally frame advances right after rewinding; this is so it can capture a new framebuffer. The old rewinder sort-of understood this, the new one does not.
Tweak the logic so the new rewinder behaves like the old one, but only when the interval is 1. When the interval is greater than 1, don't go farther back than we have to.
No particular behavior is guaranteed when nonlinear time exists (ie, rewinding through manual loadstates).
Fixes#2667.