{"record":{"id":"081ce88d3bd0f192","repo":"slint-ui/slint","slug":"the-event-loop-runs-inside-the-context-that-owns-t-081ce8","errorCode":null,"errorMessage":"the event loop runs inside the context that owns this backend","messagePattern":"the event loop runs inside the context that owns this backend","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/backends/linuxkms/calloop_backend.rs","lineNumber":271,"sourceCode":"                    // Remember the callbacks and invoke them after updating the animation tick\n                    callbacks_to_invoke_per_iteration.borrow_mut().push(callback);\n                }\n            })\n            .map_err(\n                |e: calloop::InsertError<calloop::channel::Channel<Box<dyn FnOnce() + Send>>>| {\n                    format!(\"Error registering user event channel source: {e}\")\n                },\n            )?;\n\n        let mut loop_data = LoopData::default();\n\n        quit_loop.store(false, std::sync::atomic::Ordering::Release);\n\n        let ctx = self\n            .context\n            .get()\n            .and_then(|ctx| ctx.upgrade())\n            .expect(\"the event loop runs inside the context that owns this backend\");\n\n        while !quit_loop.load(std::sync::atomic::Ordering::Acquire) {\n            ctx.update_timers_and_animations();\n\n            // Only after updating the animation tick, invoke callbacks from invoke_from_event_loop(). They\n            // might set animated properties, which requires an up-to-date start time.\n            for callback in callbacks_to_invoke_per_iteration.take().into_iter() {\n                callback();\n            }\n\n            if let Some(adapter) = self.window.borrow().as_ref() {\n                adapter.clone().render_if_needed(mouse_position_property.as_ref())?;\n            };\n\n            let next_timeout = ctx.duration_until_next_timer_update();\n            event_loop\n                .dispatch(next_timeout, &mut loop_data)\n                .map_err(|e| format!(\"Error dispatch events: {e}\"))?;","sourceCodeStart":253,"sourceCodeEnd":289,"githubUrl":"https://github.com/slint-ui/slint/blob/3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016/internal/backends/linuxkms/calloop_backend.rs#L253-L289","documentation":"Error \"the event loop runs inside the context that owns this backend\" thrown in slint-ui/slint.","triggerScenarios":"Thrown at internal/backends/linuxkms/calloop_backend.rs:271 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run the event loop through the backend's own context.","Avoid calling run_event_loop from an external loop on linuxkms."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3fd8f2ec03c2aa8a95d5f4b9daa299c7b8bf4016","analyzedAt":"2026-08-19T23:23:16.610Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}