The server wasn't deleted at the correct location. By fixing this
we ensure all object references are removed and destructor code
called which cleans up (including removing the socket etc).
Linux was much more lenient, though the BSD-specific lock code
brought this to light. Now this works properly.
Introduced process querying API for all the platforms
we currently support. With this we are able to get
realiable data about system processes.
We use this API to track running process instances
launched from Edi.
Also, this allows for a much cleaner implementation
of the edi_debug code when tracking the debug process.
Essentially using the new API to track both running
instances and debugged instances.
Moreover, simplifying this by using a timer in
edi_main to keep track of these occurences.
We can now reliably track use of the 'Run' command
in the toolbar and menu. Adding a 'Terminate' to
compliment. The UI now responds properly to running
or non-running Edi launched process instances.
Make sure we're handling the right process. Also clean-up the
sockets manually. Also make sure we actually do ninja's
clean, otherwise we might be waiting for a long time.
This adds tracking of other build types and their exit status and
allows us to use desktop notification for these also. Also cleaned
up some unnecessary cleanup code.
This adds two methods for handling executing shells async. The notification
has been reworked to use this method so there is less blocking. A callback
can be passed to the handler method for various actions on the exit status
of the script execution.