* Synchronous commands are on the stack, so incrementing the done flag should be
the last thing we do to interact with them. That includes checking for self-
deletion afterwards
* We changed all uses of getenv to our Process::GetEnvironmentVariable in
a1422df, but on android this causes an infinite recursion because its
implementation of GetEnvironmentVariable uses LaunchProcess to query for the
variable, which then tries to look up the PATH variable (which does not exist
on android).
* Bash overrides getenv/setenv to look up its own variable set, but breaks since
we need to modify the environment before main() when it initialises its
variable set. Instead what happens is the first setenv initialises that
variable in a blank set and so all subsequent environment variables are NULL.
Then in main() the variable set gets initialised from environ, removing any
changes that were made.
* Pointer types implicitly referenced by objects but not directly (like global
variable or alloc/gep pointers) are not guaranteed to be present, so we need
to add them ourselves to parse correctly and identically to LLVM.
* This interface does some undocumented things and then creates unwrapped
resources, which can't be wrapped and hooked. Since the interface is not
public it can't be wrapped safely, and must be blocked.
Before, only MenuButtonPopup had an arrow. This makes it more obvious
as to whether the button will immediately do something when clicked or
if it will open a menu to choose a specific action.
This means the full rect won't be returned for SC_ToolButtonMenu if it
is used in a context where the default style doesn't expect the menu.
This is a separate commit to isolate future changes to this function.
MakeExecuteAction already sets tooltips for each QAction it creates,
but these are not used in a QMenu unless the toolTipsVisible property
is set to true.
There is no action associated with clicking the button itself, only for
the menu associated with it. Using QToolButton::MenuButtonPopup means
that the majority of the button is for the button's own action, and
there is a small arrow next to the button that shows the menu. Since
there's no action, this means that the small menu arrow needs to be
clicked each time instead of the big button, which is annoying.
QToolButton::InstantPopup instead always shows the menu (though it
doesn't have the arrow indicating a menu exists, although this is not
particularly important).
InstantPopup is also already used for the "Insert" button used when
editing a custom shader for the texture viewer. MenuButtonPopup is used
in many other places throughout RenderDoc, but they are all save or
export buttons where there is a meaningful default action.