cache: Remove keyboard cache

This commit is contained in:
Dorota Czaplejewicz
2019-11-06 14:45:33 +00:00
parent 7d18f81a30
commit b6dfb20fec
2 changed files with 8 additions and 15 deletions

View File

@ -54,7 +54,7 @@ enum {
typedef struct _EekGtkKeyboardPrivate typedef struct _EekGtkKeyboardPrivate
{ {
EekRenderer *renderer; EekRenderer *renderer;
LevelKeyboard *keyboard; LevelKeyboard *keyboard; // unowned reference; it's kept in server-context (FIXME)
GdkEventSequence *sequence; // unowned reference GdkEventSequence *sequence; // unowned reference
} EekGtkKeyboardPrivate; } EekGtkKeyboardPrivate;

View File

@ -130,7 +130,6 @@ eekboard_context_service_real_create_keyboard (EekboardContextService *self,
} }
strncpy(ptr, keymap_str, keyboard->keymap_len); strncpy(ptr, keymap_str, keyboard->keymap_len);
munmap(ptr, keyboard->keymap_len); munmap(ptr, keyboard->keymap_len);
return keyboard; return keyboard;
} }
@ -252,23 +251,17 @@ eekboard_context_service_update_layout(EekboardContextService *context, enum squ
} }
// generic part follows // generic part follows
static guint keyboard_id = 0; LevelKeyboard *keyboard = eekboard_context_service_real_create_keyboard(context, keyboard_layout, t);
LevelKeyboard *keyboard = g_hash_table_lookup(context->priv->keyboard_hash,
GUINT_TO_POINTER(keyboard_id));
// create a keyboard
if (!keyboard) {
keyboard = eekboard_context_service_real_create_keyboard(context, keyboard_layout, t);
g_hash_table_insert (context->priv->keyboard_hash,
GUINT_TO_POINTER(keyboard_id),
keyboard);
keyboard->id = keyboard_id;
keyboard_id++;
}
// set as current // set as current
LevelKeyboard *previous_keyboard = context->priv->keyboard;
context->priv->keyboard = keyboard; context->priv->keyboard = keyboard;
g_object_notify (G_OBJECT(context), "keyboard"); g_object_notify (G_OBJECT(context), "keyboard");
// replacing the keyboard above will cause the previous keyboard to get destroyed from the UI side (eek_gtk_keyboard_dispose)
if (previous_keyboard) {
level_keyboard_free(previous_keyboard);
}
} }
static void update_layout_and_type(EekboardContextService *context) { static void update_layout_and_type(EekboardContextService *context) {