slint-ui/slint · error

Unable to quit event loop multiple times

Error message

Unable to quit event loop multiple times

What it means

Error "Unable to quit event loop multiple times" thrown in slint-ui/slint.

Source

Thrown at internal/backends/linuxkms/calloop_backend/input.rs:358

                    );

                    let control = xkb_key_state
                        .mod_name_is_active(xkb::MOD_NAME_CTRL, xkb::STATE_MODS_EFFECTIVE);
                    let alt = xkb_key_state
                        .mod_name_is_active(xkb::MOD_NAME_ALT, xkb::STATE_MODS_EFFECTIVE);

                    if state == KeyState::Pressed {
                        //eprintln!(
                        //"key {} state {:#?} sym {:x} control {control} alt {alt}",
                        //key_code, state, sym
                        //);

                        if (sym == xkb::Keysym::Delete || sym == xkb::Keysym::BackSpace)
                            && alt
                            && control
                        {
                            i_slint_core::api::quit_event_loop()
                                .expect("Unable to quit event loop multiple times");
                        } else if (xkb::Keysym::XF86_Switch_VT_1..=xkb::Keysym::XF86_Switch_VT_12)
                            .contains(&sym)
                        {
                            // let target_vt = (sym - xkb::KEY_XF86Switch_VT_1 + 1) as i32;
                            // TODO: eprintln!("switch vt {target_vt}");
                        }
                    }

                    if let Some(text) = map_key_sym(sym) {
                        let event = match state {
                            KeyState::Pressed => WindowEvent::KeyPressed { text },
                            KeyState::Released => WindowEvent::KeyReleased { text },
                        };
                        window.dispatch_event_with_result(event).map_err(Self::Error::other)?;
                    }
                }
                _ => {}
            }

View on GitHub (pinned to 3fd8f2ec03)

Solutions

  1. Call the quit function only once per event loop run.
  2. Restructure the code so quit is triggered from a single place.

When it happens

Trigger: Thrown at internal/backends/linuxkms/calloop_backend/input.rs:358 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of slint-ui/slint@3fd8f2ec03 (2026-08-19). Data as JSON: /api/errors/8f388252bc71a05d. Report an issue: GitHub.