r19523 - in /desktop/unstable/libgnomekbd/debian: changelog patches/02_xkbcrap_crash.patch patches/series
joss at users.alioth.debian.org
joss at users.alioth.debian.org
Fri Apr 10 21:32:28 UTC 2009
Author: joss
Date: Fri Apr 10 21:32:28 2009
New Revision: 19523
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=19523
Log:
02_xkbcrap_crash.patch: new patch. Fix crashes of gkb applet and
gnome-screensaver (makes it unusable) when the XKB configuration is
botched.
Added:
desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch
Modified:
desktop/unstable/libgnomekbd/debian/changelog
desktop/unstable/libgnomekbd/debian/patches/series
Modified: desktop/unstable/libgnomekbd/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/changelog?rev=19523&op=diff
==============================================================================
--- desktop/unstable/libgnomekbd/debian/changelog (original)
+++ desktop/unstable/libgnomekbd/debian/changelog Fri Apr 10 21:32:28 2009
@@ -1,3 +1,11 @@
+libgnomekbd (2.24.0-3) unstable; urgency=low
+
+ * 02_xkbcrap_crash.patch: new patch. Fix crashes of gkb applet and
+ gnome-screensaver (makes it unusable) when the XKB configuration is
+ botched.
+
+ -- Josselin Mouette <joss at debian.org> Fri, 10 Apr 2009 23:30:58 +0200
+
libgnomekbd (2.24.0-2) unstable; urgency=low
* Upload to unstable.
Added: desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch?rev=19523&op=file
==============================================================================
--- desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch (added)
+++ desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch Fri Apr 10 21:32:28 2009
@@ -1,0 +1,193 @@
+GNOME #553915
+LP #273299
+Upstream commit r354
+
+Index: libgnomekbd-2.24.0/libgnomekbd/gkbd-indicator.c
+===================================================================
+--- libgnomekbd-2.24.0.orig/libgnomekbd/gkbd-indicator.c 2009-04-10 23:29:56.203964547 +0200
++++ libgnomekbd-2.24.0/libgnomekbd/gkbd-indicator.c 2009-04-10 23:30:00.743962368 +0200
+@@ -135,7 +135,12 @@ gkbd_indicator_fill (GkbdIndicator * gki
+ GtkNotebook *notebook = GTK_NOTEBOOK (gki);
+
+ for (grp = 0; grp < total_groups; grp++) {
+- GtkWidget *page, *decorated_page;
++ GtkWidget *page, *decorated_page = NULL;
++ gchar *full_group_name =
++ (grp <
++ g_strv_length (globals.
++ full_group_names)) ?
++ globals.full_group_names[grp] : "?";
+ page = gkbd_indicator_prepare_drawing (gki, grp);
+
+ if (page == NULL)
+@@ -144,7 +149,7 @@ gkbd_indicator_fill (GkbdIndicator * gki
+ decorated_page =
+ gkbd_indicator_plugin_manager_decorate_widget
+ (&globals.plugin_manager, page, grp,
+- globals.full_group_names[grp], &globals.kbd_cfg);
++ full_group_name, &globals.kbd_cfg);
+
+ page = decorated_page == NULL ? page : decorated_page;
+
+@@ -257,39 +262,46 @@ gkbd_indicator_prepare_drawing (GkbdIndi
+ g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, NULL);
+
+- if (xkl_engine_get_features (globals.engine) &
+- XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
+- char *full_layout_name =
+- (char *) g_slist_nth_data (globals.kbd_cfg.
+- layouts_variants,
+- group);
+- char *variant_name;
+- if (!gkbd_keyboard_config_split_items
+- (full_layout_name, &layout_name,
+- &variant_name))
+- /* just in case */
+- layout_name = full_layout_name;
+-
+- /* make it freeable */
+- layout_name = g_strdup (layout_name);
+-
+- if (globals.short_group_names != NULL) {
+- char *short_group_name =
+- globals.short_group_names[group];
+- if (short_group_name != NULL
+- && *short_group_name != '\0') {
+- /* drop the long name */
+- g_free (layout_name);
+- layout_name =
+- g_strdup (short_group_name);
++
++ if (group < g_strv_length (globals.short_group_names)) {
++ if (xkl_engine_get_features (globals.engine) &
++ XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
++ char *full_layout_name = (char *)
++ g_slist_nth_data (globals.kbd_cfg.
++ layouts_variants,
++ group);
++ char *variant_name;
++ if (!gkbd_keyboard_config_split_items
++ (full_layout_name, &layout_name,
++ &variant_name))
++ /* just in case */
++ layout_name = full_layout_name;
++
++ /* make it freeable */
++ layout_name = g_strdup (layout_name);
++
++ if (globals.short_group_names != NULL) {
++ char *short_group_name =
++ globals.short_group_names
++ [group];
++ if (short_group_name != NULL
++ && *short_group_name != '\0') {
++ /* drop the long name */
++ g_free (layout_name);
++ layout_name =
++ g_strdup
++ (short_group_name);
++ }
+ }
++ } else {
++ layout_name =
++ g_strdup (globals.full_group_names
++ [group]);
+ }
+- } else
+- layout_name =
+- g_strdup (globals.full_group_names[group]);
++ }
+
+ if (layout_name == NULL)
+- layout_name = g_strdup ("?");
++ layout_name = g_strdup ("??");
+
+ /* Process layouts with repeating description */
+ ppln = &prev_layout_name;
+@@ -347,7 +359,8 @@ gkbd_indicator_update_tooltips (GkbdIndi
+ {
+ XklState *state = xkl_engine_get_current_state (globals.engine);
+ gchar *buf;
+- if (state == NULL || state->group < 0)
++ if (state == NULL || state->group < 0
++ || state->group >= g_strv_length (globals.full_group_names))
+ return;
+
+ buf = g_strdup_printf (globals.tooltips_format,
+@@ -401,12 +414,9 @@ gkbd_indicator_ind_cfg_changed (GConfCli
+ &globals.kbd_cfg);
+ gkbd_indicator_config_activate (&globals.ind_cfg);
+
+- gkbd_indicator_plugin_manager_toggle_plugins (&globals.
+- plugin_manager,
+- &globals.
+- plugin_container,
+- globals.ind_cfg.
+- enabled_plugins);
++ gkbd_indicator_plugin_manager_toggle_plugins
++ (&globals.plugin_manager, &globals.plugin_container,
++ globals.ind_cfg.enabled_plugins);
+
+ ForAllIndicators () {
+ gkbd_indicator_reinit_ui (gki);
+@@ -465,8 +475,8 @@ gkbd_indicator_kbd_cfg_callback (GkbdInd
+ }
+
+ gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+- (const gchar **) xklrec->
+- variants);
++ (const gchar **)
++ xklrec->variants);
+
+ ForAllIndicators () {
+ gkbd_indicator_reinit_ui (gki);
+@@ -664,8 +674,8 @@ gkbd_indicator_global_term (void)
+ gkbd_desktop_config_stop_listen (&globals.cfg);
+ gkbd_indicator_config_stop_listen (&globals.ind_cfg);
+
+- gkbd_indicator_plugin_manager_term_initialized_plugins (&globals.
+- plugin_manager);
++ gkbd_indicator_plugin_manager_term_initialized_plugins
++ (&globals.plugin_manager);
+ gkbd_indicator_plugin_manager_term (&globals.plugin_manager);
+
+ gkbd_indicator_config_term (&globals.ind_cfg);
+@@ -756,18 +766,14 @@ gkbd_indicator_global_init (void)
+ gkbd_indicator_config_activate (&globals.ind_cfg);
+
+ gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+- (const gchar **) xklrec->
+- variants);
++ (const gchar **)
++ xklrec->variants);
+ g_object_unref (G_OBJECT (xklrec));
+
+ gkbd_indicator_plugin_manager_init (&globals.plugin_manager);
+- gkbd_indicator_plugin_manager_init_enabled_plugins (&globals.
+- plugin_manager,
+- &globals.
+- plugin_container,
+- globals.
+- ind_cfg.
+- enabled_plugins);
++ gkbd_indicator_plugin_manager_init_enabled_plugins
++ (&globals.plugin_manager, &globals.plugin_container,
++ globals.ind_cfg.enabled_plugins);
+ gkbd_desktop_config_start_listen (&globals.cfg,
+ (GConfClientNotifyFunc)
+ gkbd_indicator_cfg_changed,
+@@ -821,10 +827,9 @@ gkbd_indicator_get_image_filename (guint
+ {
+ if (!globals.ind_cfg.show_flags)
+ return NULL;
+- return gkbd_indicator_config_get_images_file (&globals.
+- ind_cfg,
+- &globals.
+- kbd_cfg, group);
++ return gkbd_indicator_config_get_images_file (&globals.ind_cfg,
++ &globals.kbd_cfg,
++ group);
+ }
+
+ gdouble
Modified: desktop/unstable/libgnomekbd/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/patches/series?rev=19523&op=diff
==============================================================================
--- desktop/unstable/libgnomekbd/debian/patches/series (original)
+++ desktop/unstable/libgnomekbd/debian/patches/series Fri Apr 10 21:32:28 2009
@@ -1,2 +1,3 @@
01_requires_private.patch
+02_xkbcrap_crash.patch
99_ltmain_as-needed.patch
More information about the pkg-gnome-commits
mailing list