virtualkeyboard: check if VirtualKeyboard is valid before accessing client. (#6460)

This fixes crash when restarting fcitx (#6378)
This commit is contained in:
Yang, Ying-chao 2024-06-13 17:33:47 +08:00 committed by GitHub
parent d677ac6f87
commit a54f98c203
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View file

@ -81,7 +81,7 @@ SP<CInputMethodV2> CInputMethodKeyboardGrabV2::getOwner() {
} }
wl_client* CInputMethodKeyboardGrabV2::client() { wl_client* CInputMethodKeyboardGrabV2::client() {
return resource->client(); return resource->resource() ? resource->client() : nullptr;
} }
CInputMethodPopupV2::CInputMethodPopupV2(SP<CZwpInputPopupSurfaceV2> resource_, SP<CInputMethodV2> owner_, SP<CWLSurfaceResource> surface) : resource(resource_), owner(owner_) { CInputMethodPopupV2::CInputMethodPopupV2(SP<CZwpInputPopupSurfaceV2> resource_, SP<CInputMethodV2> owner_, SP<CWLSurfaceResource> surface) : resource(resource_), owner(owner_) {
@ -373,4 +373,4 @@ void CInputMethodV2Protocol::onGetIME(CZwpInputMethodManagerV2* mgr, wl_resource
LOGM(LOG, "New IME with resource id {}", id); LOGM(LOG, "New IME with resource id {}", id);
events.newIME.emit(RESOURCE); events.newIME.emit(RESOURCE);
} }

View file

@ -100,7 +100,7 @@ wlr_keyboard* CVirtualKeyboardV1Resource::wlr() {
} }
wl_client* CVirtualKeyboardV1Resource::client() { wl_client* CVirtualKeyboardV1Resource::client() {
return resource->client(); return resource->resource() ? resource->client() : nullptr;
} }
void CVirtualKeyboardV1Resource::releasePressed() { void CVirtualKeyboardV1Resource::releasePressed() {
@ -151,4 +151,4 @@ void CVirtualKeyboardProtocol::onCreateKeeb(CZwpVirtualKeyboardManagerV1* pMgr,
LOGM(LOG, "New VKeyboard at id {}", id); LOGM(LOG, "New VKeyboard at id {}", id);
events.newKeyboard.emit(RESOURCE); events.newKeyboard.emit(RESOURCE);
} }