Closed georgewsinger closed 5 years ago
Delaying the Simula compositor from starting until after VR is initialized fails to fix the issue:
-- Simula.hs
ready :: GFunc GodotSimula
ready self _ = do
-- addSimulaServerNode -- <- Formerly here
openVR >>= initVR (safeCast self) >>= \case
InitVRSuccess -> do
-- ..
InitVRFailed -> return ()
addSimulaServerNode -- <- Now here
retnil
Commenting out the following in xserver_handle_ready_(..)
causes Simula to run (silently ignoring the waitpid error):
//wlroots/xwayland/xwayland.c
static int xserver_handle_ready(int signal_number, void *data) {
//..
int stat_val = -1;
while (waitpid(wlr_xwayland->pid, &stat_val, 0) < 0) {
if (errno == EINTR) {
continue;
}
wlr_log_errno(WLR_ERROR, "waitpid(%d) for Xwayland fork failed", wlr_xwayland->pid); //← Simula gets caught here
return 1;
}
if (stat_val) {
wlr_log(WLR_ERROR, "Xwayland startup failed, not setting up xwm");
return 1;
}
//..
}
For some reason this was already commented out in my stripped down version of wlroots, and that's why I wasn't duplicating this error. This is far from the most elegant solution but it works and allows us to move on. So:
simula
branch to SimulaVR/wlroots
and made this change.SimulaVR/wlroots
instead of swaym/wlroots
when running make wlroots
.
The error(s) @NerveCoordinator is receiving. After running
make run
, an instance ofXwayland
spins up:and at this point either xwayland will fail to accept new surfaces:
or new surfaces will be interceptable at the cost of the the HMD failing to init:
There was also a single time that @NerveCoordinator was able to get both the VR HMD to initialize and XWayland to intercept apps.
@NerveCoordinator's vrcompositor.txt logs.
Specs. This error isn't affecting everyone.
DISPLAY
sometimes.DISPLAY
never.