This code was inadvertently changing the working environment
of applications that called it. Hasn't been a problem until
we started calling scripts which need PATH to remain good.
* Every time clang-format applied to this file, it would add a new \
on the end of the first line of the comment. Splitting it into two
single-line C comments works around this behaviour.
* When statically linking libstdc++ by default the symbols are all
default visibility. This causes a problem if you statically link an
old libstdc++ then inject librenderdoc.so, and the application starts
using the old libstdc++ instead of the system's.
* Really we only want to use the static one for calls from
librenderdoc.so. In theory -Wl,--exclude-libs,libstdc++ should do this
for us, but it starts to cause bizarre crashes.
* Instead, we have to resort to a manual linker script which whitelists
which symbols should be visible. Normally we can do this just for our
own symbols with -fvisibility=hidden and __attribute__((visibility))
but that doesn't work for linked symbols apparently.
* The basic idea here is to have a reasonable middleground between
ResizeToContents and Stretch. We want to show at *least* enough for
the contents, but the remaining space should be shared between the
columns according to some proportions.
* That way you don't end up with one huge column and several tiny ones
that are just big enough but no more, but all data is still visible.
* Add scroll areas for the larger tabs and allow pipe flowchart to
resize to its minimum size if needed.
* The idea here isn't that anyone will seriously try to use the pipe
view at 500x200 but more that the minimum size doesn't become a
problem while moving around windows or panels, or resizing temporarily
* This prevents a feedback loop where the label resizes wider to make
room for the margins, then the margins get bigger to keep the image
centred/scaled properly, etc.
* This way it can be used from Qt or any other UI as well.
* The pipes are created internally and just passed as stdin to the
renderdoccmd processes instead of being named pipes.
* These structs were no longer used since the memory wholeMemBuf was
added, and they had some confusing enum usage that triggered static
analysis warnings.