If unity-mir was the sole consumer of the Compositor::start and Compositor::stop, then it could save the compositor running state itself. However I don't believe that is the case, is it?
If you supplied a "running" method to check for the compositor thread state, then unity-mir would have sufficient information to make the right decision.
However I do also believe a library should try to recover gracefully from mis-use whenever possible. Calling start() twice shouldn't crash.
If unity-mir was the sole consumer of the Compositor::start and Compositor::stop, then it could save the compositor running state itself. However I don't believe that is the case, is it?
If you supplied a "running" method to check for the compositor thread state, then unity-mir would have sufficient information to make the right decision.
However I do also believe a library should try to recover gracefully from mis-use whenever possible. Calling start() twice shouldn't crash.