mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-02 17:45:58 +01:00
inputmgr: dont double free on hotplug (#5855)
* inputmgr: dont double free on hotplug
since we are also unrefing the state on hotplugging the keyboard set the
state to nullptr so the destructor if case actually catches its been
already freed.
* keybindgmgr: dont double free on layout switching
d5bf153
added keymap unref at the end of updateXKBTranslationState to
not leak it when exiting, only it causes updateXKBTranslationState to
double free when changing layouts. since its already freed. remove the
unneeded extra xkb_keymap_unref.
This commit is contained in:
parent
8a2269272b
commit
1c73beaf9b
2 changed files with 1 additions and 1 deletions
|
@ -181,7 +181,6 @@ uint32_t CKeybindManager::keycodeToModifier(xkb_keycode_t keycode) {
|
||||||
|
|
||||||
void CKeybindManager::updateXKBTranslationState() {
|
void CKeybindManager::updateXKBTranslationState() {
|
||||||
if (m_pXKBTranslationState) {
|
if (m_pXKBTranslationState) {
|
||||||
xkb_keymap_unref(xkb_state_get_keymap(m_pXKBTranslationState));
|
|
||||||
xkb_state_unref(m_pXKBTranslationState);
|
xkb_state_unref(m_pXKBTranslationState);
|
||||||
|
|
||||||
m_pXKBTranslationState = nullptr;
|
m_pXKBTranslationState = nullptr;
|
||||||
|
|
|
@ -1195,6 +1195,7 @@ void CInputManager::destroyKeyboard(SKeyboard* pKeyboard) {
|
||||||
pKeyboard->hyprListener_keyboardKey.removeCallback();
|
pKeyboard->hyprListener_keyboardKey.removeCallback();
|
||||||
|
|
||||||
xkb_state_unref(pKeyboard->xkbTranslationState);
|
xkb_state_unref(pKeyboard->xkbTranslationState);
|
||||||
|
pKeyboard->xkbTranslationState = nullptr;
|
||||||
|
|
||||||
m_lKeyboards.remove(*pKeyboard);
|
m_lKeyboards.remove(*pKeyboard);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue