slint-ui/slint · error

the event loop runs inside the context that owns this backen

Error message

the event loop runs inside the context that owns this backend

What it means

Error "the event loop runs inside the context that owns this backend" thrown in slint-ui/slint.

Source

Thrown at internal/backends/linuxkms/calloop_backend.rs:271

                    // Remember the callbacks and invoke them after updating the animation tick
                    callbacks_to_invoke_per_iteration.borrow_mut().push(callback);
                }
            })
            .map_err(
                |e: calloop::InsertError<calloop::channel::Channel<Box<dyn FnOnce() + Send>>>| {
                    format!("Error registering user event channel source: {e}")
                },
            )?;

        let mut loop_data = LoopData::default();

        quit_loop.store(false, std::sync::atomic::Ordering::Release);

        let ctx = self
            .context
            .get()
            .and_then(|ctx| ctx.upgrade())
            .expect("the event loop runs inside the context that owns this backend");

        while !quit_loop.load(std::sync::atomic::Ordering::Acquire) {
            ctx.update_timers_and_animations();

            // Only after updating the animation tick, invoke callbacks from invoke_from_event_loop(). They
            // might set animated properties, which requires an up-to-date start time.
            for callback in callbacks_to_invoke_per_iteration.take().into_iter() {
                callback();
            }

            if let Some(adapter) = self.window.borrow().as_ref() {
                adapter.clone().render_if_needed(mouse_position_property.as_ref())?;
            };

            let next_timeout = ctx.duration_until_next_timer_update();
            event_loop
                .dispatch(next_timeout, &mut loop_data)
                .map_err(|e| format!("Error dispatch events: {e}"))?;

View on GitHub (pinned to 3fd8f2ec03)

Solutions

  1. Run the event loop through the backend's own context.
  2. Avoid calling run_event_loop from an external loop on linuxkms.

When it happens

Trigger: Thrown at internal/backends/linuxkms/calloop_backend.rs:271 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/081ce88d3bd0f192. Report an issue: GitHub.