mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-01-19 22:13:41 +01:00
Compare commits
1 Commits
feature/de
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a335be9b84 |
@@ -548,7 +548,12 @@ impl Border {
|
||||
LRESULT(0)
|
||||
}
|
||||
WM_DESTROY => {
|
||||
SetWindowLongPtrW(window, GWLP_USERDATA, 0);
|
||||
let border_pointer: *mut Border = GetWindowLongPtrW(window, GWLP_USERDATA) as _;
|
||||
if !border_pointer.is_null() {
|
||||
(*border_pointer).render_target = None;
|
||||
(*border_pointer).brushes.clear();
|
||||
SetWindowLongPtrW(window, GWLP_USERDATA, 0);
|
||||
}
|
||||
PostQuitMessage(0);
|
||||
LRESULT(0)
|
||||
}
|
||||
|
||||
@@ -767,12 +767,6 @@ fn remove_border(
|
||||
fn destroy_border(border: Box<Border>) -> color_eyre::Result<()> {
|
||||
let raw_pointer = Box::into_raw(border);
|
||||
unsafe {
|
||||
// release d2d resources **BEFORE** destroying window
|
||||
// this drops render_target and brushes while HWND is still valid
|
||||
// prevents EndDraw() from accessing freed HWND resources
|
||||
(*raw_pointer).render_target = None;
|
||||
(*raw_pointer).brushes.clear();
|
||||
|
||||
// Now safe to destroy window
|
||||
(*raw_pointer).destroy()?;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user