fix: win, clipboard image (#8561)
The window must belong to the current thread for clipboard-master. https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmessage#:~:text=The%20window%20must%20belong%20to%20the%20current%20thread. Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
a0dc38f749
commit
51db8e706d
@ -213,7 +213,6 @@ impl ClipboardData {
|
|||||||
ClipboardData::Empty => true,
|
ClipboardData::Empty => true,
|
||||||
ClipboardData::Text(s) => s.is_empty(),
|
ClipboardData::Text(s) => s.is_empty(),
|
||||||
ClipboardData::Image(a, _) => a.bytes.is_empty(),
|
ClipboardData::Image(a, _) => a.bytes.is_empty(),
|
||||||
_ => false,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,22 +346,25 @@ impl ClipboardContext {
|
|||||||
CallbackResult::Next
|
CallbackResult::Next
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
match Master::new(Handler(change_count.clone())) {
|
let change_count_cloned = change_count.clone();
|
||||||
Ok(master) => {
|
let (tx, rx) = std::sync::mpsc::channel();
|
||||||
let mut master = master;
|
// https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getmessage#:~:text=The%20window%20must%20belong%20to%20the%20current%20thread.
|
||||||
shutdown = Some(master.shutdown_channel());
|
std::thread::spawn(move || match Master::new(Handler(change_count_cloned)) {
|
||||||
std::thread::spawn(move || {
|
Ok(mut master) => {
|
||||||
log::debug!("Clipboard listener started");
|
tx.send(master.shutdown_channel()).ok();
|
||||||
if let Err(err) = master.run() {
|
log::debug!("Clipboard listener started");
|
||||||
log::error!("Failed to run clipboard listener: {}", err);
|
if let Err(err) = master.run() {
|
||||||
} else {
|
log::error!("Failed to run clipboard listener: {}", err);
|
||||||
log::debug!("Clipboard listener stopped");
|
} else {
|
||||||
}
|
log::debug!("Clipboard listener stopped");
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
log::error!("Failed to create clipboard listener: {}", err);
|
log::error!("Failed to create clipboard listener: {}", err);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
if let Ok(st) = rx.recv() {
|
||||||
|
shutdown = Some(st);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(ClipboardContext(board, (change_count, 0), shutdown))
|
Ok(ClipboardContext(board, (change_count, 0), shutdown))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user