From 3ae90eb77ed6d2bdc09e5f73c049f3361e1559c4 Mon Sep 17 00:00:00 2001 From: bhatman1441 Date: Wed, 3 Jan 2024 18:44:45 +0530 Subject: [freerdp] Fix segfault from opening Preferences menu --- plugins/rdp/rdp_settings.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'plugins') diff --git a/plugins/rdp/rdp_settings.c b/plugins/rdp/rdp_settings.c index b0110c66e..7a3d4aa41 100644 --- a/plugins/rdp/rdp_settings.c +++ b/plugins/rdp/rdp_settings.c @@ -221,9 +221,24 @@ static void remmina_rdp_settings_grid_load_layout(RemminaPluginRdpsetGrid *grid) #if FREERDP_VERSION_MAJOR >= 3 size_t layout_count = 0; layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD | RDP_KEYBOARD_LAYOUT_TYPE_VARIANT, &layout_count); + + for (DWORD i = 0; i < layout_count; i++) { + s = g_strdup_printf("%08X - %s", layouts[i].code, layouts[i].name); + gtk_list_store_append(grid->keyboard_layout_store, &iter); + gtk_list_store_set(grid->keyboard_layout_store, &iter, 0, layouts[i].code, 1, s, -1); + + if (rdp_keyboard_layout == layouts[i].code) + gtk_combo_box_set_active(GTK_COMBO_BOX(grid->keyboard_layout_combo), i + 1); + + if (keyboard_layout == layouts[i].code) + gtk_label_set_text(GTK_LABEL(grid->keyboard_layout_label), s); + + g_free(s); + } + + freerdp_keyboard_layouts_free(layouts, layout_count); #else layouts = freerdp_keyboard_get_layouts(RDP_KEYBOARD_LAYOUT_TYPE_STANDARD | RDP_KEYBOARD_LAYOUT_TYPE_VARIANT); -#endif for (DWORD i = 0; layouts[i].code; i++) { s = g_strdup_printf("%08X - %s", layouts[i].code, layouts[i].name); @@ -239,9 +254,6 @@ static void remmina_rdp_settings_grid_load_layout(RemminaPluginRdpsetGrid *grid) g_free(s); } -#if FREERDP_VERSION_MAJOR >= 3 - freerdp_keyboard_layouts_free(layouts, layout_count); -#else freerdp_keyboard_layouts_free(layouts); #endif } -- cgit v1.2.3