actually fix clipboard

This commit is contained in:
Matthew 2025-10-05 17:24:37 +11:00
parent 3089b684a2
commit 5a647e49d9

View File

@ -874,8 +874,6 @@ ClipboardText(PlatformWindow* w, ClipboardMode mode)
Lock(&w.cb_mut);
scope(exit) Unlock(&w.cb_mut);
Selection* sel = &w.selections[mode];
if(sel.owned)
@ -892,14 +890,17 @@ ClipboardText(PlatformWindow* w, ClipboardMode mode)
FreeArray(sel.data);
sel.data = [];
Unlock(&w.cb_mut);
u64 ticket = w.cb_mut.next_ticket;
sel.target = w.atoms[Atoms.Utf8String];
xcb_convert_selection(w.conn, w.window, sel.xmode, sel.target, sel.xmode, XCB_CURRENT_TIME);
xcb_flush(w.conn);
while(!w.cb_msg_mut.locked) {}
while(w.cb_msg_mut.locked) {}
while(ticket == w.cb_mut.next_ticket) {}
GetClipboardSelection(w, sel);
buf = GetClipboardSelection(w, sel);
}
}
@ -1272,9 +1273,7 @@ HandleEvents(void* window_ptr)
} break;
case XCB_SELECTION_NOTIFY:
{
TryLock(&w.cb_msg_mut);
RetrieveSelection(w, cast(xcb_selection_notify_event_t*)e);
Unlock(&w.cb_msg_mut);
} break;
case XCB_SELECTION_REQUEST:
{
@ -1828,3 +1827,4 @@ unittest
}
}
}