cardinalpointstudio and Claude Opus 4.5
8fcdbf41cd
gpui(linux): Fix RefCell borrow panic when callbacks register new callbacks ( #49533 )
...
## Summary
Fixes RefCell borrow panic on Linux (Wayland and X11) when callbacks try
to register new callbacks.
**Root cause:** Linux GPUI backends invoked callbacks while still
holding a `RefCell` borrow on the `Callbacks` struct. If a callback
tried to register a new
callback (e.g., `on_window_should_close`), it would panic with "already
borrowed: BorrowMutError".
**Bug pattern:**
```rust
// Callback runs while borrow is held - panics if callback borrows
callbacks
if let Some(ref mut fun) = self.callbacks.borrow_mut().input {
fun(input);
}
Fix: Apply the take-call-restore pattern (already used in macOS
backend):
// Take callback out, release borrow, call, restore
let callback = self.callbacks.borrow_mut().input.take();
if let Some(mut fun) = callback {
let result = fun(input);
self.callbacks.borrow_mut().input = Some(fun);
}
Changes
- Wayland (window.rs): Fixed 6 callback invocations
- X11 (window.rs): Fixed 4 callback invocations
Test plan
- cargo check -p gpui compiles successfully
- Tested on Linux (Wayland) - no more RefCell panic
Release Notes:
- Fixed a crash on Linux when window callbacks attempted to register new
callbacks
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com >
2026-02-25 16:18:52 +00:00
..
2026-02-24 09:24:38 +00:00
2026-01-21 13:40:42 -03:00
2026-02-18 15:49:36 -03:00
2026-02-10 16:03:46 -03:00
2026-02-25 15:40:10 +00:00
2026-02-25 15:40:10 +00:00
2026-02-12 15:46:10 -05:00
2026-02-25 16:18:52 +00:00
2026-02-17 10:41:10 +00:00
2026-02-20 09:47:00 +00:00
2026-02-18 12:00:02 +01:00
2026-01-26 23:56:55 +00:00
2026-02-06 20:14:35 +01:00
2026-02-20 10:17:22 +00:00
2026-02-23 13:28:39 +01:00
2026-02-24 22:20:57 +00:00
2026-02-19 10:41:16 -03:00
2026-02-19 07:23:27 +01:00
2026-02-06 20:21:19 +00:00
2026-02-20 17:11:30 -05:00
2026-02-24 11:19:34 +00:00
2026-02-25 05:48:59 +00:00
2026-02-20 08:32:45 +00:00
2026-02-23 18:42:51 +00:00
2026-02-25 08:12:04 +01:00
2026-02-19 22:13:38 -05:00
2026-02-21 01:20:05 +00:00
2026-02-24 18:04:57 -05:00
2026-02-05 17:34:34 -05:00
2026-02-25 05:48:59 +00:00
2026-02-23 10:20:31 -05:00
2026-02-12 01:06:23 +00:00
2026-02-19 18:57:49 +01:00
2026-01-30 21:26:13 +00:00
2026-02-25 05:49:14 +00:00
2026-02-16 15:24:59 -03:00
2026-02-12 01:06:23 +00:00
2026-02-23 21:44:20 -07:00
2026-01-07 12:48:24 -08:00
2026-01-28 16:00:52 +00:00
2026-02-13 20:16:11 +01:00
2026-02-12 16:26:13 +00:00
2026-01-14 07:19:13 +00:00
2026-02-18 12:00:02 +01:00
2026-02-25 16:18:42 +01:00
2025-12-18 12:47:34 +00:00
2026-02-13 20:16:11 +01:00
2026-02-20 23:46:34 -05:00
2026-02-20 08:32:45 +00:00
2026-02-24 16:43:52 -08:00
2026-02-24 05:13:33 +00:00
2026-02-24 20:27:57 -08:00
2026-02-04 17:54:11 -05:00
2026-02-24 20:27:57 -08:00
2026-02-25 09:10:29 +01:00
2026-02-12 00:28:17 +00:00
2026-02-21 06:11:45 +00:00
2026-02-23 15:08:33 +00:00
2026-02-19 18:57:49 +01:00
2026-02-20 07:25:53 +00:00
2026-02-05 12:13:02 +00:00
2026-02-19 18:57:49 +01:00
2026-02-24 10:37:16 +00:00
2026-02-18 12:00:02 +01:00
2026-02-25 10:45:14 -03:00
2026-02-13 16:05:40 +00:00
2026-02-18 22:20:31 +00:00
2026-02-19 18:57:49 +01:00
2026-02-24 15:16:24 -05:00
2026-02-25 10:45:14 -03:00
2026-01-31 21:56:34 +00:00
2026-02-25 10:45:14 -03:00
2026-02-12 01:06:23 +00:00
2026-02-19 13:19:14 -05:00
2026-02-23 13:15:10 +01:00
2026-02-25 16:18:52 +00:00
2026-02-21 16:53:12 +01:00
2026-01-27 15:37:22 -03:00
2026-02-19 22:48:33 +01:00
2026-01-07 12:48:24 -08:00
2026-02-24 22:01:21 +00:00
2026-02-19 19:15:59 -05:00
2026-02-23 13:18:03 -07:00
2026-02-25 10:45:14 -03:00
2026-02-24 12:56:59 +01:00
2026-02-20 08:32:45 +00:00
2026-02-12 00:28:17 +00:00
2026-02-12 01:06:23 +00:00
2026-02-19 20:46:21 -05:00
2026-02-12 01:06:23 +00:00
2026-02-25 08:12:04 +01:00
2026-02-04 23:03:15 +01:00
2026-02-19 22:13:38 -05:00
2026-02-18 19:42:06 +01:00
2026-01-23 18:29:20 +01:00
2026-02-19 15:04:28 +00:00
2026-02-25 16:46:27 +01:00
2026-02-03 15:51:40 -05:00
2026-02-23 15:24:46 +01:00
2026-02-13 20:16:11 +01:00
2026-02-19 18:57:49 +01:00
2026-02-20 16:33:06 +00:00
2025-12-30 07:49:01 -03:00
2026-02-18 12:00:02 +01:00
2026-02-19 10:52:53 +00:00
2026-02-13 12:03:05 +00:00
2026-02-25 09:10:29 +01:00
2026-02-17 10:41:10 +00:00
2026-02-20 13:36:04 +00:00
2026-02-13 20:16:11 +01:00
2026-01-07 12:48:24 -08:00
2026-02-16 14:33:29 +00:00
2026-02-18 12:00:02 +01:00
2026-02-13 04:54:22 +00:00
2026-02-12 01:06:23 +00:00
2026-02-12 14:02:16 +00:00
2026-02-18 09:32:36 +00:00
2026-02-18 22:20:31 +00:00
2026-02-02 13:30:07 +01:00
2026-02-06 15:34:36 +00:00
2026-01-23 18:29:20 +01:00
2026-02-12 01:06:23 +00:00
2026-02-07 00:36:37 +00:00
2026-02-25 15:40:10 +00:00
2026-02-19 18:57:49 +01:00
2026-02-25 20:39:30 +05:30
2026-02-12 01:06:23 +00:00
2026-01-30 21:26:13 +00:00
2026-02-20 09:36:21 +00:00
2026-02-23 12:39:56 +01:00
2026-02-23 12:39:56 +01:00
2026-02-02 13:30:07 +01:00
2026-02-25 15:40:10 +00:00
2026-02-20 16:33:06 +00:00
2026-02-04 01:33:12 +00:00
2026-02-18 08:53:26 +01:00
2026-02-11 21:30:03 +02:00
2026-02-12 01:06:23 +00:00
2026-02-19 10:52:53 +00:00
2025-12-16 10:48:14 -05:00
2026-02-23 19:28:13 -05:00
2026-02-12 01:06:23 +00:00
2026-02-25 20:39:30 +05:30
2026-02-25 20:39:30 +05:30
2026-02-12 01:06:23 +00:00
2026-02-25 20:39:30 +05:30
2026-02-18 13:01:01 -05:00
2026-02-23 22:58:50 +00:00
2026-01-26 13:49:26 +00:00
2026-02-12 00:28:17 +00:00
2026-02-20 08:32:45 +00:00
2026-02-19 18:57:49 +01:00
2026-02-18 09:52:52 +00:00
2026-02-13 20:16:11 +01:00
2026-01-04 23:28:18 +00:00
2026-02-18 12:00:02 +01:00
2026-02-12 12:33:51 +00:00
2026-02-12 16:30:47 +00:00
2026-02-12 01:06:23 +00:00
2026-01-28 16:36:44 -08:00
2026-02-24 10:27:22 +00:00
2026-02-24 23:33:34 -07:00
2026-02-25 08:12:04 +01:00
2026-02-21 14:41:23 +00:00
2026-01-15 18:10:21 +00:00
2026-01-28 17:05:34 +01:00
2026-02-24 13:56:43 +00:00
2026-02-18 17:07:10 -05:00
2026-02-23 22:46:49 -03:00
2026-02-02 13:30:07 +01:00
2026-02-25 16:18:42 +01:00
2026-01-25 21:35:32 +01:00
2026-02-20 16:49:35 +01:00
2026-01-23 20:50:50 +00:00
2025-12-17 11:53:48 -07:00
2026-02-25 15:14:20 +00:00
2026-02-16 20:11:37 +00:00
2026-02-19 18:57:49 +01:00
2026-02-25 11:12:12 -05:00
2026-02-25 12:41:39 +00:00
2026-02-24 20:27:57 -08:00
2026-02-19 14:59:50 +00:00
2026-02-11 11:24:04 +00:00