[gcompris] New upstream release 11.09

Hans de Goede jwrdegoede at fedoraproject.org
Fri Dec 9 08:52:00 UTC 2011


commit 4e9aa93afebb21f5e42d9e6c2769f195219a4651
Author: Hans de Goede <hdegoede at redhat.com>
Date:   Fri Dec 9 09:52:29 2011 +0100

    New upstream release 11.09

 .gitignore                       |    1 +
 gcompris-11.09-deprecated1.patch | 1028 ++++++++++++++++++++++++++++++++++++++
 gcompris-11.09-deprecated2.patch |  139 +++++
 gcompris-11.09-fixlocks.patch    |  287 +++++++++++
 gcompris-9.5-gcc46.patch         |  695 --------------------------
 gcompris.spec                    |   86 ++--
 sources                          |    2 +-
 7 files changed, 1500 insertions(+), 738 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index d0643d5..a461d75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 gcompris-9.3.tar.gz
 /gcompris-9.4.tar.gz
 /gcompris-9.5.tar.gz
+/gcompris-11.09.tar.gz
diff --git a/gcompris-11.09-deprecated1.patch b/gcompris-11.09-deprecated1.patch
new file mode 100644
index 0000000..a92c5a6
--- /dev/null
+++ b/gcompris-11.09-deprecated1.patch
@@ -0,0 +1,1028 @@
+diff -up gcompris-11.09/src/algebra_by-activity/algebra.c~orig gcompris-11.09/src/algebra_by-activity/algebra.c
+--- gcompris-11.09/src/algebra_by-activity/algebra.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/algebra_by-activity/algebra.c	2011-12-07 12:40:24.625441814 +0100
+@@ -207,22 +207,22 @@ static void start_board (GcomprisBoard *
+ 	  currentOperation[0]=PLUSSIGNFILE;
+ 	  currentOperationText = op_add;
+ 	}
+-      else if(g_strncasecmp(gcomprisBoard->mode, "+", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "+", 1)==0)
+ 	{
+ 	  currentOperation[0]=PLUSSIGNFILE;
+ 	  currentOperationText = op_add;
+ 	}
+-      else if(g_strncasecmp(gcomprisBoard->mode, "-", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "-", 1)==0)
+ 	{
+ 	  currentOperation[0]=MINUSSIGNFILE;
+ 	  currentOperationText = op_minus;
+ 	}
+-      else if(g_strncasecmp(gcomprisBoard->mode, "*", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "*", 1)==0)
+ 	{
+ 	  currentOperation[0]=BYSIGNFILE;
+ 	  currentOperationText = op_mult;
+ 	}
+-      else if(g_strncasecmp(gcomprisBoard->mode, "/", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "/", 1)==0)
+ 	{
+ 	  currentOperation[0]=DIVIDESIGNFILE;
+ 	  currentOperationText = op_div;
+@@ -368,7 +368,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "algebra")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "algebra")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/algebra_guesscount-activity/algebra_guesscount.c~orig gcompris-11.09/src/algebra_guesscount-activity/algebra_guesscount.c
+--- gcompris-11.09/src/algebra_guesscount-activity/algebra_guesscount.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/algebra_guesscount-activity/algebra_guesscount.c	2011-12-07 12:41:32.929444074 +0100
+@@ -252,7 +252,7 @@ static void set_level (guint level) {
+ /* ==================================== */
+ static gboolean is_our_board (GcomprisBoard *gcomprisBoard) {
+   if (gcomprisBoard) {
+-    if(g_strcasecmp(gcomprisBoard->type, "algebra_guesscount")==0) {
++    if(g_ascii_strcasecmp(gcomprisBoard->type, "algebra_guesscount")==0) {
+       /* Set the plugin entry */
+       gcomprisBoard->plugin=&menu_bp;
+       return TRUE;
+diff -up gcompris-11.09/src/awele-activity/awele.c~orig gcompris-11.09/src/awele-activity/awele.c
+--- gcompris-11.09/src/awele-activity/awele.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/awele-activity/awele.c	2011-12-07 12:43:56.354448614 +0100
+@@ -190,7 +190,7 @@ is_our_board (GcomprisBoard * gcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if (g_strcasecmp (gcomprisBoard->type, "awele") == 0)
++      if (g_ascii_strcasecmp (gcomprisBoard->type, "awele") == 0)
+ 	{
+ 	  /*
+ 	   * Set the plugin entry
+diff -up gcompris-11.09/src/babymatch-activity/shapegame.c~orig gcompris-11.09/src/babymatch-activity/shapegame.c
+--- gcompris-11.09/src/babymatch-activity/shapegame.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/babymatch-activity/shapegame.c	2011-12-07 12:50:31.117461225 +0100
+@@ -278,7 +278,7 @@ static void start_board (GcomprisBoard *
+ 
+ 
+       if(gcomprisBoard->mode!=NULL)
+-	if(g_strncasecmp(gcomprisBoard->mode, "background=", 11)==0)
++	if(g_ascii_strncasecmp(gcomprisBoard->mode, "background=", 11)==0)
+ 	  {
+ 	    gchar *tmp = NULL;
+ 
+@@ -355,7 +355,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "shapegame")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "shapegame")==0)
+ 	{
+ 	  gcomprisBoard->plugin = &menu_bp;
+ 
+@@ -1628,13 +1628,13 @@ add_xml_shape_to_data(xmlDocPtr doc, xml
+   if(/* if the node has no name */
+      !xmlnode->name ||
+      /* or if the name is not "Shape" */
+-     ((g_strcasecmp((const char *)xmlnode->name,"Shape")!=0) &&
++     ((g_ascii_strcasecmp((const char *)xmlnode->name,"Shape")!=0) &&
+       /* or if the name is not "Title" */
+-      (g_strcasecmp((const char *)xmlnode->name,"Title")!=0) &&
++      (g_ascii_strcasecmp((const char *)xmlnode->name,"Title")!=0) &&
+       /* or if the name is not "Title" */
+-      (g_strcasecmp((const char *)xmlnode->name,"Info")!=0) &&
++      (g_ascii_strcasecmp((const char *)xmlnode->name,"Info")!=0) &&
+       /* or if the name is not "Option" */
+-      (g_strcasecmp((const char *)xmlnode->name,"Option")!=0) )
++      (g_ascii_strcasecmp((const char *)xmlnode->name,"Option")!=0) )
+      )
+     return;
+ 
+@@ -1673,11 +1673,11 @@ add_xml_shape_to_data(xmlDocPtr doc, xml
+   /* get the TYPE of the shape */
+   ctype = (char *)xmlGetProp(xmlnode, BAD_CAST "type");
+   if(ctype) {
+-    if(g_strcasecmp(ctype,"SHAPE_TARGET")==0)
++    if(g_ascii_strcasecmp(ctype,"SHAPE_TARGET")==0)
+       type = SHAPE_TARGET;
+-    else if(g_strcasecmp(ctype,"SHAPE_DUMMY_TARGET")==0)
++    else if(g_ascii_strcasecmp(ctype,"SHAPE_DUMMY_TARGET")==0)
+       type = SHAPE_DUMMY_TARGET;
+-    else if (g_strcasecmp(ctype,"SHAPE_BACKGROUND")==0)
++    else if (g_ascii_strcasecmp(ctype,"SHAPE_BACKGROUND")==0)
+       type = SHAPE_BACKGROUND;
+     xmlFree(ctype);
+   }
+@@ -1748,7 +1748,7 @@ add_xml_shape_to_data(xmlDocPtr doc, xml
+   if(!name)
+     name = (char *)xmlGetProp(xmlnode, BAD_CAST "name");
+ 
+-  if(g_strcasecmp((char *)xmlnode->name, "Shape")==0)
++  if(g_ascii_strcasecmp((char *)xmlnode->name, "Shape")==0)
+     {
+       /* add the shape to the database */
+       /* WARNING : I do not initialize the width and height since I don't need them */
+@@ -1761,7 +1761,7 @@ add_xml_shape_to_data(xmlDocPtr doc, xml
+       /* add the shape to the list */
+       *list = g_list_append(*list, shape);
+     }
+-  else if (g_strcasecmp((char *)xmlnode->name, "Title")==0)
++  else if (g_ascii_strcasecmp((char *)xmlnode->name, "Title")==0)
+     {
+       /* Read \n is needed */
+       gchar *newname;
+@@ -1775,7 +1775,7 @@ add_xml_shape_to_data(xmlDocPtr doc, xml
+ 	g_free(newname);
+       }
+     }
+-  else if (g_strcasecmp((char *)xmlnode->name, "Info")==0)
++  else if (g_ascii_strcasecmp((char *)xmlnode->name, "Info")==0)
+     {
+       /* Read \n is needed */
+       gchar *newname;
+@@ -1876,7 +1876,7 @@ read_xml_file(char *fname)
+      /* if it doesn't have a name */
+      !doc->children->name ||
+      /* if it isn't a ShapeGame node */
+-     g_strcasecmp((char *)doc->children->name, "ShapeGame")!=0) {
++     g_ascii_strcasecmp((char *)doc->children->name, "ShapeGame")!=0) {
+     xmlFreeDoc(doc);
+     return FALSE;
+   }
+diff -up gcompris-11.09/src/billard-activity/billard.c~orig gcompris-11.09/src/billard-activity/billard.c
+--- gcompris-11.09/src/billard-activity/billard.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/billard-activity/billard.c	2011-12-07 12:45:35.807451741 +0100
+@@ -181,7 +181,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "billard")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "billard")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/boards/menu2.c~orig gcompris-11.09/src/boards/menu2.c
+--- gcompris-11.09/src/boards/menu2.c~orig	2011-10-23 22:51:55.000000000 +0200
++++ gcompris-11.09/src/boards/menu2.c	2011-12-07 12:46:41.326453784 +0100
+@@ -405,7 +405,7 @@ menu_is_our_board (GcomprisBoard *gcompr
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "menu")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "menu")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+@@ -525,7 +525,7 @@ static void menu_create_item(GooCanvasIt
+     }
+ 
+   // display menu icon ========================== BEGIN
+-  if(g_strcasecmp(board->type, "menu") == 0)
++  if(g_ascii_strcasecmp(board->type, "menu") == 0)
+     {
+       GooCanvasItem *item = goo_canvas_svg_new (parent,
+ 						gc_skin_rsvg_get(),
+diff -up gcompris-11.09/src/canal_lock-activity/canal_lock.c~orig gcompris-11.09/src/canal_lock-activity/canal_lock.c
+--- gcompris-11.09/src/canal_lock-activity/canal_lock.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/canal_lock-activity/canal_lock.c	2011-12-07 12:44:32.704449716 +0100
+@@ -219,7 +219,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "canal_lock")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "canal_lock")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/chess_computer-activity/chess.c~orig gcompris-11.09/src/chess_computer-activity/chess.c
+--- gcompris-11.09/src/chess_computer-activity/chess.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/chess_computer-activity/chess.c	2011-12-07 12:54:28.780468823 +0100
+@@ -278,11 +278,11 @@ static void start_board (GcomprisBoard *
+       /* Default mode */
+       if(!gcomprisBoard->mode)
+ 	gameType=COMPUTER;
+-      else if(g_strncasecmp(gcomprisBoard->mode, "computer", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "computer", 1)==0)
+ 	gameType=COMPUTER;
+-      else if(g_strncasecmp(gcomprisBoard->mode, "partyend", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "partyend", 1)==0)
+ 	gameType=PARTYEND;
+-      else if(g_strncasecmp(gcomprisBoard->mode, "movelearn", 1)==0)
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "movelearn", 1)==0)
+ 	gameType=MOVELEARN;
+ 
+       gcomprisBoard->level=1;
+@@ -371,7 +371,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "chess")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "chess")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+@@ -1067,10 +1067,10 @@ engine_local_destroy (GPid gnuchess_pid)
+   g_source_remove(read_cb);
+   g_source_remove(err_cb);
+ 
+-  g_io_channel_close (read_chan);
++  g_io_channel_shutdown (read_chan, TRUE, NULL);
+   g_io_channel_unref (read_chan);
+ 
+-  g_io_channel_close (write_chan);
++  g_io_channel_shutdown (write_chan, TRUE, NULL);
+   g_io_channel_unref (write_chan);
+ 
+   g_spawn_close_pid(gnuchess_pid);
+diff -up gcompris-11.09/src/click_on_letter-activity/click_on_letter.c~orig gcompris-11.09/src/click_on_letter-activity/click_on_letter.c
+--- gcompris-11.09/src/click_on_letter-activity/click_on_letter.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/click_on_letter-activity/click_on_letter.c	2011-12-07 12:46:21.279453208 +0100
+@@ -182,7 +182,7 @@ static void start_board (GcomprisBoard *
+     {
+       gcomprisBoard=agcomprisBoard;
+ 
+-      if ( gcomprisBoard->mode && g_strcasecmp(gcomprisBoard->mode, "uppercase")==0 )
++      if ( gcomprisBoard->mode && g_ascii_strcasecmp(gcomprisBoard->mode, "uppercase")==0 )
+ 	uppercase_only = TRUE;
+       else
+ 	uppercase_only = FALSE;
+@@ -303,7 +303,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "click_on_letter")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "click_on_letter")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/clickgame-activity/clickgame.c~orig gcompris-11.09/src/clickgame-activity/clickgame.c
+--- gcompris-11.09/src/clickgame-activity/clickgame.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/clickgame-activity/clickgame.c	2011-12-07 12:46:34.735453672 +0100
+@@ -404,7 +404,7 @@ clickgame_is_our_board (GcomprisBoard *b
+ {
+   if (board)
+     {
+-      if(g_strcasecmp(board->type, "clickgame")==0)
++      if(g_ascii_strcasecmp(board->type, "clickgame")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  board->plugin=&menu_bp;
+diff -up gcompris-11.09/src/clockgame-activity/clockgame.c~orig gcompris-11.09/src/clockgame-activity/clockgame.c
+--- gcompris-11.09/src/clockgame-activity/clockgame.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/clockgame-activity/clockgame.c	2011-12-07 12:46:07.263452800 +0100
+@@ -203,7 +203,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "clockgame")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "clockgame")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/crane-activity/crane.c~orig gcompris-11.09/src/crane-activity/crane.c
+--- gcompris-11.09/src/crane-activity/crane.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/crane-activity/crane.c	2011-12-07 12:45:27.743451490 +0100
+@@ -251,7 +251,7 @@ static gboolean is_our_board (GcomprisBo
+ 
+   if (gcomprisBoard) {
+ 
+-      if (g_strcasecmp(gcomprisBoard->type, "crane") == 0) {
++      if (g_ascii_strcasecmp(gcomprisBoard->type, "crane") == 0) {
+ 
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin = &menu_bp;
+diff -up gcompris-11.09/src/enumerate-activity/enumerate.c~orig gcompris-11.09/src/enumerate-activity/enumerate.c
+--- gcompris-11.09/src/enumerate-activity/enumerate.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/enumerate-activity/enumerate.c	2011-12-07 12:44:42.047450061 +0100
+@@ -303,7 +303,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "enumerate")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "enumerate")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/erase-activity/erase.c~orig gcompris-11.09/src/erase-activity/erase.c
+--- gcompris-11.09/src/erase-activity/erase.c~orig	2011-10-03 21:49:56.000000000 +0200
++++ gcompris-11.09/src/erase-activity/erase.c	2011-12-07 12:45:16.431451132 +0100
+@@ -233,7 +233,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "erase")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "erase")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/fifteen-activity/fifteen.c~orig gcompris-11.09/src/fifteen-activity/fifteen.c
+--- gcompris-11.09/src/fifteen-activity/fifteen.c~orig	2011-02-14 22:54:42.000000000 +0100
++++ gcompris-11.09/src/fifteen-activity/fifteen.c	2011-12-07 12:45:19.311451233 +0100
+@@ -144,7 +144,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "fifteen")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "fifteen")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/gcompris/images_selector.c~orig gcompris-11.09/src/gcompris/images_selector.c
+--- gcompris-11.09/src/gcompris/images_selector.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/gcompris/images_selector.c	2011-12-07 12:47:37.742455686 +0100
+@@ -777,7 +777,7 @@ read_xml_file(gchar *fname)
+      /* if it doesn't have a name */
+      !doc->children->name ||
+      /* if it isn't the good node */
+-     g_strcasecmp((gchar *)doc->children->name, "ImageSetRoot")!=0) {
++     g_ascii_strcasecmp((gchar *)doc->children->name, "ImageSetRoot")!=0) {
+     xmlFreeDoc(doc);
+     return FALSE;
+   }
+@@ -842,7 +842,7 @@ read_dataset_directory(gchar *dataset_di
+        /* if it doesn't have a name */
+        !doc->children->name ||
+        /* if it isn't the good node */
+-       g_strcasecmp((gchar *)doc->children->name, "ImageSetRoot")!=0) {
++       g_ascii_strcasecmp((gchar *)doc->children->name, "ImageSetRoot")!=0) {
+       xmlFreeDoc(doc);
+       g_free(absolute_fname);
+       continue;
+diff -up gcompris-11.09/src/gcompris/menu.c~orig gcompris-11.09/src/gcompris/menu.c
+--- gcompris-11.09/src/gcompris/menu.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/gcompris/menu.c	2011-12-07 12:59:43.385478910 +0100
+@@ -60,7 +60,7 @@ _add_xml_to_data(xmlDocPtr doc, xmlNodeP
+   if(/* if the node has no name */
+      !xmlnode->name ||
+      /* or if the name is not "Board" */
+-     (g_strcasecmp((char *)xmlnode->name,"Board")!=0)
++     (g_ascii_strcasecmp((char *)xmlnode->name,"Board")!=0)
+      )
+     return;
+ 
+@@ -302,7 +302,7 @@ _read_xml_file(GcomprisBoard *gcomprisBo
+      /* if it doesn't have a name */
+      !doc->children->name ||
+      /* if it isn't a GCompris node */
+-     g_strcasecmp((char *)doc->children->name,"GCompris")!=0) {
++     g_ascii_strcasecmp((char *)doc->children->name,"GCompris")!=0) {
+     xmlFreeDoc(doc);
+     g_free(gcomprisBoard);
+     g_warning("Oops, the file %s is not for gcompris", filename);
+@@ -649,7 +649,7 @@ void gc_menu_load()
+       /* use GTimeVal for portability */
+       GDate *today = g_date_new();
+ 
+-#if  (GLIB_MAJOR_VERSION > 2) && (GLIB_MINOR_VERSION > 10)
++#if GLIB_CHECK_VERSION(2, 10, 0)
+       GTimeVal now;
+ 
+       g_get_current_time (&now);
+diff -up gcompris-11.09/src/gcompris/skin.c~orig gcompris-11.09/src/gcompris/skin.c
+--- gcompris-11.09/src/gcompris/skin.c~orig	2011-02-14 22:54:42.000000000 +0100
++++ gcompris-11.09/src/gcompris/skin.c	2011-12-07 12:47:22.878455170 +0100
+@@ -343,7 +343,7 @@ skin_xml_load (gchar* skin)
+      /* if it doesn't have a name */
+      !xmldoc->children->name ||
+      /* if it isn't a GCompris node */
+-     g_strcasecmp((gchar *)xmldoc->children->name, "GCompris")!=0) {
++     g_ascii_strcasecmp((gchar *)xmldoc->children->name, "GCompris")!=0) {
+     xmlFreeDoc(xmldoc);
+     g_warning("Skin file is not properly formatted (no GCompris node) '%s' !",
+ 	      skin);
+@@ -355,7 +355,7 @@ skin_xml_load (gchar* skin)
+     skinNode = skinNode->next;
+ 
+   if((skinNode==NULL)||
+-     g_strcasecmp((gchar *)skinNode->name, "Skin")!=0) {
++     g_ascii_strcasecmp((gchar *)skinNode->name, "Skin")!=0) {
+     g_warning("In skin file '%s' there are no Skin node %s", skin,
+ 	      xmldoc->children->children->name);
+     xmlFreeDoc(xmldoc);
+@@ -365,7 +365,7 @@ skin_xml_load (gchar* skin)
+   node = skinNode->children;
+   while(node !=NULL)
+     {
+-      if(g_strcasecmp((gchar *)node->name, "color")==0){
++      if(g_ascii_strcasecmp((gchar *)node->name, "color")==0){
+ 	key = (gchar *)xmlGetProp(node,  BAD_CAST "id");
+ 	data =(gchar *) xmlGetProp(node,  BAD_CAST "rgba");
+ 	if((key!=NULL)&&(data!=NULL)){
+@@ -377,7 +377,7 @@ skin_xml_load (gchar* skin)
+ 	}
+ 	if(data!=NULL) g_free(data);
+       }
+-      else if(g_strcasecmp((gchar *)node->name, "font")==0){
++      else if(g_ascii_strcasecmp((gchar *)node->name, "font")==0){
+ 	key = (gchar *)xmlGetProp(node,  BAD_CAST "id");
+ 	data = (gchar *)xmlGetProp(node,  BAD_CAST "name");
+ 	if((key!=NULL)&&(data!=NULL)){
+@@ -387,7 +387,7 @@ skin_xml_load (gchar* skin)
+ 	  if(data!=NULL) g_free(data);
+ 	}
+       }
+-      else if(g_strcasecmp((gchar *)node->name, "number")==0){
++      else if(g_ascii_strcasecmp((gchar *)node->name, "number")==0){
+ 	key = (gchar *)xmlGetProp(node, BAD_CAST "id");
+ 	data = (gchar *)xmlGetProp(node, BAD_CAST "value");
+ 	if((key!=NULL)&&(data!=NULL)){
+diff -up gcompris-11.09/src/gcompris/wordlist.c~orig gcompris-11.09/src/gcompris/wordlist.c
+--- gcompris-11.09/src/gcompris/wordlist.c~orig	2011-02-14 22:54:42.000000000 +0100
++++ gcompris-11.09/src/gcompris/wordlist.c	2011-12-07 12:47:33.902455538 +0100
+@@ -103,7 +103,7 @@ GcomprisWordlist
+      /* if it doesn't have a name */
+      !xmldoc->children->name ||
+      /* if it isn't a GCompris node */
+-     g_strcasecmp((gchar *)xmldoc->children->name,(gchar *)"GCompris")!=0) {
++     g_ascii_strcasecmp((gchar *)xmldoc->children->name,(gchar *)"GCompris")!=0) {
+     g_warning("No Gcompris node");
+     xmlFreeDoc(xmldoc);
+     g_free(filename);
+@@ -116,7 +116,7 @@ GcomprisWordlist
+     wlNode = wlNode->next;
+ 
+   if((wlNode==NULL)||
+-     g_strcasecmp((gchar *)wlNode->name,"Wordlist")!=0) {
++     g_ascii_strcasecmp((gchar *)wlNode->name,"Wordlist")!=0) {
+     g_warning("No wordlist node %s", (wlNode == NULL) ? (gchar *)wlNode->name : "NULL node");
+     xmlFreeDoc(xmldoc);
+     g_free(filename);
+diff -up gcompris-11.09/src/gletters-activity/gletters.c~orig gcompris-11.09/src/gletters-activity/gletters.c
+--- gcompris-11.09/src/gletters-activity/gletters.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/gletters-activity/gletters.c	2011-12-07 12:44:45.039450133 +0100
+@@ -458,7 +458,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "gletters")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "gletters")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/hanoi-activity/hanoi.c~orig gcompris-11.09/src/hanoi-activity/hanoi.c
+--- gcompris-11.09/src/hanoi-activity/hanoi.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/hanoi-activity/hanoi.c	2011-12-07 12:47:40.542455758 +0100
+@@ -211,7 +211,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "hanoi")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "hanoi")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/hanoi_real-activity/hanoi_real.c~orig gcompris-11.09/src/hanoi_real-activity/hanoi_real.c
+--- gcompris-11.09/src/hanoi_real-activity/hanoi_real.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/hanoi_real-activity/hanoi_real.c	2011-12-07 12:45:38.671451865 +0100
+@@ -171,7 +171,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "hanoi_real")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "hanoi_real")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/imageid-activity/imageid.c~orig gcompris-11.09/src/imageid-activity/imageid.c
+--- gcompris-11.09/src/imageid-activity/imageid.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/imageid-activity/imageid.c	2011-12-07 12:46:27.167453344 +0100
+@@ -214,7 +214,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "imageid")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "imageid")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+@@ -573,7 +573,7 @@ parse_doc(xmlDocPtr doc)
+   xmlNodePtr node;
+ 
+   for(node = doc->children->children; node != NULL; node = node->next) {
+-    if ( g_strcasecmp((gchar *)node->name, "Board") == 0 )
++    if ( g_ascii_strcasecmp((gchar *)node->name, "Board") == 0 )
+       add_xml_data(doc, node, NULL);
+   }
+ 
+@@ -601,7 +601,7 @@ read_xml_file(char *fname)
+      /* if it doesn't have a name */
+      !doc->children->name ||
+      /* if it isn't a ImageId node */
+-     g_strcasecmp((char *)doc->children->name,"ImageId")!=0) {
++     g_ascii_strcasecmp((char *)doc->children->name,"ImageId")!=0) {
+     xmlFreeDoc(doc);
+     return FALSE;
+   }
+diff -up gcompris-11.09/src/leftright-activity/leftright.c~orig gcompris-11.09/src/leftright-activity/leftright.c
+--- gcompris-11.09/src/leftright-activity/leftright.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/leftright-activity/leftright.c	2011-12-07 12:46:09.966452865 +0100
+@@ -180,7 +180,7 @@ static void set_level (guint level) {
+  * =====================================================================*/
+ static gboolean is_our_board (GcomprisBoard *gcomprisBoard) {
+   if (gcomprisBoard) {
+-    if(g_strcasecmp(gcomprisBoard->type, "leftright")==0) {
++    if(g_ascii_strcasecmp(gcomprisBoard->type, "leftright")==0) {
+       /* Set the plugin entry */
+       gcomprisBoard->plugin=&menu_bp;
+       return TRUE;
+diff -up gcompris-11.09/src/magic_hat_minus-activity/magic_hat.c~orig gcompris-11.09/src/magic_hat_minus-activity/magic_hat.c
+--- gcompris-11.09/src/magic_hat_minus-activity/magic_hat.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/magic_hat_minus-activity/magic_hat.c	2011-12-07 12:45:41.215451955 +0100
+@@ -250,7 +250,7 @@ static gboolean is_our_board (GcomprisBo
+ 
+   if (gcomprisBoard) {
+ 
+-      if (g_strcasecmp(gcomprisBoard->type, "magic_hat") == 0) {
++      if (g_ascii_strcasecmp(gcomprisBoard->type, "magic_hat") == 0) {
+ 
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin = &menu_bp;
+diff -up gcompris-11.09/src/maze-activity/maze.c~orig gcompris-11.09/src/maze-activity/maze.c
+--- gcompris-11.09/src/maze-activity/maze.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/maze-activity/maze.c	2011-12-07 12:50:05.869460385 +0100
+@@ -198,16 +198,16 @@ static void start_board (GcomprisBoard *
+     modeIsInvisible=FALSE;
+     if(!gcomprisBoard->mode)
+       modeIs2D=TRUE;
+-    else if(g_strncasecmp(gcomprisBoard->mode, "2DR", 3)==0) {
++    else if(g_ascii_strncasecmp(gcomprisBoard->mode, "2DR", 3)==0) {
+       /* 2D Relative */
+       modeIs2D=TRUE;
+       modeRelative=TRUE;
+-    } else if(g_strncasecmp(gcomprisBoard->mode, "2DI", 3)==0) {
++    } else if(g_ascii_strncasecmp(gcomprisBoard->mode, "2DI", 3)==0) {
+       modeIs2D=TRUE;
+       modeIsInvisible=TRUE;
+-    } else if(g_strncasecmp(gcomprisBoard->mode, "2D", 2)==0) {
++    } else if(g_ascii_strncasecmp(gcomprisBoard->mode, "2D", 2)==0) {
+       modeIs2D=TRUE;
+-    } else if(g_strncasecmp(gcomprisBoard->mode, "3D", 2)==0) {
++    } else if(g_ascii_strncasecmp(gcomprisBoard->mode, "3D", 2)==0) {
+       modeIs2D=FALSE;
+     }
+ 
+@@ -251,7 +251,7 @@ static void end_board () {
+  * =====================================================================*/
+ static gboolean is_our_board (GcomprisBoard *gcomprisBoard) {
+   if (gcomprisBoard) {
+-    if(g_strcasecmp(gcomprisBoard->type, "maze")==0) {
++    if(g_ascii_strcasecmp(gcomprisBoard->type, "maze")==0) {
+       /* Set the plugin entry */
+       gcomprisBoard->plugin=&menu_bp;
+       return TRUE;
+diff -up gcompris-11.09/src/memory-activity/memory.c~orig gcompris-11.09/src/memory-activity/memory.c
+--- gcompris-11.09/src/memory-activity/memory.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/memory-activity/memory.c	2011-12-07 12:47:00.991454480 +0100
+@@ -749,107 +749,107 @@ static void start_board (GcomprisBoard *
+ 	currentUiMode=UIMODE_NORMAL;
+ 	currentBoardMode=BOARDMODE_NORMAL;
+       } else {
+-	if(g_strcasecmp(gcomprisBoard->mode, "tux")==0){
++	if(g_ascii_strcasecmp(gcomprisBoard->mode, "tux")==0){
+ 	  currentMode=MODE_TUX;
+ 	  currentUiMode=UIMODE_NORMAL;
+ 	  currentBoardMode=BOARDMODE_NORMAL;
+ 	} else {
+-	  if(g_strcasecmp(gcomprisBoard->mode, "sound")==0){
++	  if(g_ascii_strcasecmp(gcomprisBoard->mode, "sound")==0){
+ 	    currentMode=MODE_NORMAL;
+ 	    currentUiMode=UIMODE_SOUND;
+ 	    currentBoardMode=BOARDMODE_SOUND;
+ 	  } else {
+-	    if(g_strcasecmp(gcomprisBoard->mode, "sound_tux")==0){
++	    if(g_ascii_strcasecmp(gcomprisBoard->mode, "sound_tux")==0){
+ 	      currentMode=MODE_TUX;
+ 	      currentUiMode=UIMODE_SOUND;
+ 	      currentBoardMode=BOARDMODE_SOUND;
+ 	    } else {
+-	      if(g_strcasecmp(gcomprisBoard->mode, "add")==0){
++	      if(g_ascii_strcasecmp(gcomprisBoard->mode, "add")==0){
+ 		currentMode=MODE_NORMAL;
+ 		currentUiMode=UIMODE_NORMAL;
+ 		currentBoardMode=BOARDMODE_ADD;
+ 	      } else {
+-		if(g_strcasecmp(gcomprisBoard->mode, "add_tux")==0){
++		if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_tux")==0){
+ 		  currentMode=MODE_TUX;
+ 		  currentUiMode=UIMODE_NORMAL;
+ 		  currentBoardMode=BOARDMODE_ADD;
+ 		} else {
+-		  if(g_strcasecmp(gcomprisBoard->mode, "minus")==0){
++		  if(g_ascii_strcasecmp(gcomprisBoard->mode, "minus")==0){
+ 		    currentMode=MODE_NORMAL;
+ 		    currentUiMode=UIMODE_NORMAL;
+ 		    currentBoardMode=BOARDMODE_MINUS;
+ 		  } else {
+-		    if(g_strcasecmp(gcomprisBoard->mode, "minus_tux")==0){
++		    if(g_ascii_strcasecmp(gcomprisBoard->mode, "minus_tux")==0){
+ 		      currentMode=MODE_TUX;
+ 		      currentUiMode=UIMODE_NORMAL;
+ 		      currentBoardMode=BOARDMODE_MINUS;
+ 		    } else {
+-		      if(g_strcasecmp(gcomprisBoard->mode, "mult")==0){
++		      if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult")==0){
+ 			currentMode=MODE_NORMAL;
+ 			currentUiMode=UIMODE_NORMAL;
+ 			currentBoardMode=BOARDMODE_MULT;
+ 		      } else {
+-			if(g_strcasecmp(gcomprisBoard->mode, "mult_tux")==0){
++			if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_tux")==0){
+ 			  currentMode=MODE_TUX;
+ 			  currentUiMode=UIMODE_NORMAL;
+ 			  currentBoardMode=BOARDMODE_MULT;
+ 			} else {
+-			  if(g_strcasecmp(gcomprisBoard->mode, "div")==0){
++			  if(g_ascii_strcasecmp(gcomprisBoard->mode, "div")==0){
+ 			    currentMode=MODE_NORMAL;
+ 			    currentUiMode=UIMODE_NORMAL;
+ 			    currentBoardMode=BOARDMODE_DIV;
+ 			  } else {
+-			    if(g_strcasecmp(gcomprisBoard->mode, "div_tux")==0){
++			    if(g_ascii_strcasecmp(gcomprisBoard->mode, "div_tux")==0){
+ 			      currentMode=MODE_TUX;
+ 			      currentUiMode=UIMODE_NORMAL;
+ 			      currentBoardMode=BOARDMODE_DIV;
+ 			    } else {
+-			      if(g_strcasecmp(gcomprisBoard->mode, "add_minus")==0){
++			      if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus")==0){
+ 				currentMode=MODE_NORMAL;
+ 				currentUiMode=UIMODE_NORMAL;
+ 				currentBoardMode=BOARDMODE_ADD_MINUS;
+ 			      } else {
+-				if(g_strcasecmp(gcomprisBoard->mode, "add_minus_tux")==0){
++				if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_tux")==0){
+ 				  currentMode=MODE_TUX;
+ 				  currentUiMode=UIMODE_NORMAL;
+ 				  currentBoardMode=BOARDMODE_ADD_MINUS;
+ 				} else {
+-				  if(g_strcasecmp(gcomprisBoard->mode, "mult_div")==0){
++				  if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_div")==0){
+ 				    currentMode=MODE_NORMAL;
+ 				    currentUiMode=UIMODE_NORMAL;
+ 				    currentBoardMode=BOARDMODE_MULT_DIV;
+ 				  } else {
+-				    if(g_strcasecmp(gcomprisBoard->mode, "mult_div_tux")==0){
++				    if(g_ascii_strcasecmp(gcomprisBoard->mode, "mult_div_tux")==0){
+ 				      currentMode=MODE_TUX;
+ 				      currentUiMode=UIMODE_NORMAL;
+ 				      currentBoardMode=BOARDMODE_MULT_DIV;
+ 				    } else {
+-				      if(g_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div")==0){
++				      if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div")==0){
+ 					currentMode=MODE_NORMAL;
+ 					currentUiMode=UIMODE_NORMAL;
+ 					currentBoardMode=BOARDMODE_ADD_MINUS_MULT_DIV;
+ 				      } else {
+-					if(g_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div_tux")==0){
++					if(g_ascii_strcasecmp(gcomprisBoard->mode, "add_minus_mult_div_tux")==0){
+ 					  currentMode=MODE_TUX;
+ 					  currentUiMode=UIMODE_NORMAL;
+ 					  currentBoardMode=BOARDMODE_ADD_MINUS_MULT_DIV;
+ 					} else {
+-					  if(g_strcasecmp(gcomprisBoard->mode, "enumerate")==0){
++					  if(g_ascii_strcasecmp(gcomprisBoard->mode, "enumerate")==0){
+ 					    currentMode=MODE_NORMAL;
+ 					    currentUiMode=UIMODE_NORMAL;
+ 					    currentBoardMode=BOARDMODE_ENUMERATE;
+ 					  } else {
+-					    if(g_strcasecmp(gcomprisBoard->mode, "enumerate_tux")==0){
++					    if(g_ascii_strcasecmp(gcomprisBoard->mode, "enumerate_tux")==0){
+ 					      currentMode=MODE_TUX;
+ 					      currentUiMode=UIMODE_NORMAL;
+ 					      currentBoardMode=BOARDMODE_ENUMERATE;
+ 					    } else {
+-				              if(g_strcasecmp(gcomprisBoard->mode, "wordnumber")==0){
++				              if(g_ascii_strcasecmp(gcomprisBoard->mode, "wordnumber")==0){
+ 						currentMode=MODE_NORMAL;
+ 						currentUiMode=UIMODE_NORMAL;
+ 						currentBoardMode=BOARDMODE_WORDNUMBER;
+ 					      } else {
+-						if(g_strcasecmp(gcomprisBoard->mode, "wordnumber_tux")==0){
++						if(g_ascii_strcasecmp(gcomprisBoard->mode, "wordnumber_tux")==0){
+ 					          currentMode=MODE_TUX;
+ 						  currentUiMode=UIMODE_NORMAL;
+ 						  currentBoardMode=BOARDMODE_WORDNUMBER;
+@@ -1021,7 +1021,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "memory")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "memory")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/missing_letter-activity/missingletter.c~orig gcompris-11.09/src/missing_letter-activity/missingletter.c
+--- gcompris-11.09/src/missing_letter-activity/missingletter.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/missing_letter-activity/missingletter.c	2011-12-07 12:46:32.271453526 +0100
+@@ -215,7 +215,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "missingletter")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "missingletter")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+@@ -649,13 +649,13 @@ gboolean missing_read_xml_file(char *fna
+      /* if it doesn't have a name */
+      !doc->children->name ||
+      /* if it isn't a missing letter node */
+-     g_strcasecmp((char *)doc->children->name,"missing_letter")!=0) {
++     g_ascii_strcasecmp((char *)doc->children->name,"missing_letter")!=0) {
+     xmlFreeDoc(doc);
+     return FALSE;
+   }
+ 
+   for(node = doc->children->children; node != NULL; node = node->next) {
+-    if ( g_strcasecmp((gchar *)node->name, "Board") == 0 )
++    if ( g_ascii_strcasecmp((gchar *)node->name, "Board") == 0 )
+       add_xml_data(doc, node, list);
+   }
+   xmlFreeDoc(doc);
+diff -up gcompris-11.09/src/money-activity/money.c~orig gcompris-11.09/src/money-activity/money.c
+--- gcompris-11.09/src/money-activity/money.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/money-activity/money.c	2011-12-07 12:47:03.967454565 +0100
+@@ -214,7 +214,7 @@ gboolean is_our_board (GcomprisBoard *gc
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "money")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "money")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/paratrooper-activity/paratrooper.c~orig gcompris-11.09/src/paratrooper-activity/paratrooper.c
+--- gcompris-11.09/src/paratrooper-activity/paratrooper.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/paratrooper-activity/paratrooper.c	2011-12-07 12:45:12.207450852 +0100
+@@ -262,7 +262,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "paratrooper")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "paratrooper")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/photohunter-activity/photohunter.c~orig gcompris-11.09/src/photohunter-activity/photohunter.c
+--- gcompris-11.09/src/photohunter-activity/photohunter.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/photohunter-activity/photohunter.c	2011-12-07 12:46:00.559452598 +0100
+@@ -203,7 +203,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "photohunter")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "photohunter")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/planegame-activity/planegame.c~orig gcompris-11.09/src/planegame-activity/planegame.c
+--- gcompris-11.09/src/planegame-activity/planegame.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/planegame-activity/planegame.c	2011-12-07 12:45:24.351451331 +0100
+@@ -231,7 +231,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "planegame")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "planegame")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/railroad-activity/railroad.c~orig gcompris-11.09/src/railroad-activity/railroad.c
+--- gcompris-11.09/src/railroad-activity/railroad.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/railroad-activity/railroad.c	2011-12-07 12:46:04.766452671 +0100
+@@ -234,7 +234,7 @@ gboolean is_our_board (GcomprisBoard *gc
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "railroad")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "railroad")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/readingh-activity/reading.c~orig gcompris-11.09/src/readingh-activity/reading.c
+--- gcompris-11.09/src/readingh-activity/reading.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/readingh-activity/reading.c	2011-12-07 12:44:49.391450292 +0100
+@@ -233,7 +233,7 @@ static void start_board (GcomprisBoard *
+ 
+ 
+       currentMode=MODE_VERTICAL; // Default mode
+-      if(gcomprisBoard->mode && g_strcasecmp(gcomprisBoard->mode, "horizontal")==0)
++      if(gcomprisBoard->mode && g_ascii_strcasecmp(gcomprisBoard->mode, "horizontal")==0)
+         {
+           if (pango_unichar_direction(g_utf8_get_char(gc_wordlist_random_word_get(gc_wordlist, gcomprisBoard->level))) == PANGO_DIRECTION_RTL)
+               currentMode=MODE_HORIZONTAL_RTL;
+@@ -281,7 +281,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "reading")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "reading")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/reversecount-activity/reversecount.c~orig gcompris-11.09/src/reversecount-activity/reversecount.c
+--- gcompris-11.09/src/reversecount-activity/reversecount.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/reversecount-activity/reversecount.c	2011-12-07 12:44:52.703450333 +0100
+@@ -238,7 +238,7 @@ gboolean is_our_board (GcomprisBoard *gc
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "reversecount")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "reversecount")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/scalesboard-activity/scale.c~orig gcompris-11.09/src/scalesboard-activity/scale.c
+--- gcompris-11.09/src/scalesboard-activity/scale.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/scalesboard-activity/scale.c	2011-12-07 12:47:13.070454847 +0100
+@@ -231,7 +231,7 @@ set_level (guint level)
+ gboolean is_our_board (GcomprisBoard *gcomprisBoard)
+ {
+   if (gcomprisBoard)
+-    if(g_strcasecmp(gcomprisBoard->type, "scale")==0)
++    if(g_ascii_strcasecmp(gcomprisBoard->type, "scale")==0)
+       {
+ 	/* Set the plugin entry */
+ 	gcomprisBoard->plugin=&menu_bp;
+@@ -1128,7 +1128,7 @@ conf_ok(GHashTable *table)
+ 
+     gchar *drag_mode_str = g_hash_table_lookup( config, "drag_mode");
+ 
+-    if (drag_mode_str && (g_strcasecmp (drag_mode_str, "NULL") != 0))
++    if (drag_mode_str && (g_ascii_strcasecmp (drag_mode_str, "NULL") != 0))
+       drag_mode = (gint ) g_ascii_strtod(drag_mode_str, NULL);
+     else
+       drag_mode = 0;
+diff -up gcompris-11.09/src/smallnumbers-activity/smallnumbers.c~orig gcompris-11.09/src/smallnumbers-activity/smallnumbers.c
+--- gcompris-11.09/src/smallnumbers-activity/smallnumbers.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/smallnumbers-activity/smallnumbers.c	2011-12-07 12:49:08.094458581 +0100
+@@ -172,7 +172,7 @@ static void start_board (GcomprisBoard *
+       number_of_dices=1;
+       if(!gcomprisBoard->mode)
+ 	number_of_dices=1;
+-      else if(g_strncasecmp(gcomprisBoard->mode, "2_DICES", 7)==0) {
++      else if(g_ascii_strncasecmp(gcomprisBoard->mode, "2_DICES", 7)==0) {
+ 	/* 2 Dices mode */
+ 	number_of_dices=2;
+       }
+@@ -260,7 +260,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "smallnumbers")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "smallnumbers")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/submarine-activity/submarine.c~orig gcompris-11.09/src/submarine-activity/submarine.c
+--- gcompris-11.09/src/submarine-activity/submarine.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/submarine-activity/submarine.c	2011-12-07 12:44:35.856449856 +0100
+@@ -317,7 +317,7 @@ static void set_level (guint level) {
+  * =====================================================================*/
+ static gboolean is_our_board (GcomprisBoard *gcomprisBoard) {
+   if (gcomprisBoard) {
+-    if(g_strcasecmp(gcomprisBoard->type, "submarine")==0) {
++    if(g_ascii_strcasecmp(gcomprisBoard->type, "submarine")==0) {
+       /* Set the plugin entry */
+       gcomprisBoard->plugin=&menu_bp;
+       return TRUE;
+diff -up gcompris-11.09/src/superbrain-activity/superbrain.c~orig gcompris-11.09/src/superbrain-activity/superbrain.c
+--- gcompris-11.09/src/superbrain-activity/superbrain.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/superbrain-activity/superbrain.c	2011-12-07 12:46:02.703452514 +0100
+@@ -203,7 +203,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "superbrain")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "superbrain")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/tangram-activity/gtans.c~orig gcompris-11.09/src/tangram-activity/gtans.c
+--- gcompris-11.09/src/tangram-activity/gtans.c~orig	2011-02-14 22:54:43.000000000 +0100
++++ gcompris-11.09/src/tangram-activity/gtans.c	2011-12-07 12:45:21.967451386 +0100
+@@ -121,7 +121,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "tangram")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "tangram")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/target-activity/target.c~orig gcompris-11.09/src/target-activity/target.c
+--- gcompris-11.09/src/target-activity/target.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/target-activity/target.c	2011-12-07 12:46:45.039453981 +0100
+@@ -310,7 +310,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "target")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "target")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/traffic-activity/traffic.c~orig gcompris-11.09/src/traffic-activity/traffic.c
+--- gcompris-11.09/src/traffic-activity/traffic.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/traffic-activity/traffic.c	2011-12-07 12:45:33.775451689 +0100
+@@ -205,7 +205,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "traffic")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "traffic")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+diff -up gcompris-11.09/src/wordprocessor-activity/wordprocessor.c~orig gcompris-11.09/src/wordprocessor-activity/wordprocessor.c
+--- gcompris-11.09/src/wordprocessor-activity/wordprocessor.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/wordprocessor-activity/wordprocessor.c	2011-12-07 12:45:55.199452420 +0100
+@@ -283,7 +283,7 @@ static gboolean is_our_board (GcomprisBo
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "wordprocessor")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "wordprocessor")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
+@@ -1024,7 +1024,7 @@ load_buffer(gchar *file, gchar *file_typ
+   node = xmlDocGetRootElement(doc);
+ 
+   for(node = node; node != NULL; node = node->next)
+-    if ( g_strcasecmp((char *)node->name, "html") == 0 &&
++    if ( g_ascii_strcasecmp((char *)node->name, "html") == 0 &&
+ 	 node->children )
+       break;
+ 
+@@ -1033,20 +1033,20 @@ load_buffer(gchar *file, gchar *file_typ
+ 
+   for(node = node->children; node != NULL; node = node->next)
+     {
+-      if ( g_strcasecmp((char *)node->name, "head") == 0 &&
++      if ( g_ascii_strcasecmp((char *)node->name, "head") == 0 &&
+ 	   node->children )
+ 	{
+ 	  /* Search and apply the saved style in the META */
+ 	  xmlNodePtr snode;
+ 	  for(snode = node->children; snode != NULL; snode = snode->next)
+ 	    {
+-	      if ( ( g_strcasecmp((char *)snode->name, "meta") == 0 ) &&
++	      if ( ( g_ascii_strcasecmp((char *)snode->name, "meta") == 0 ) &&
+ 		   xmlHasProp(snode, BAD_CAST "http-equiv") )
+ 		{
+ 		  xmlChar *key = xmlGetProp(snode, BAD_CAST "http-equiv");
+ 		  xmlChar *content = xmlGetProp(snode, BAD_CAST "content");
+ 
+-		  if(g_strcasecmp((char *)key, "GCompris-doctype") == 0)
++		  if(g_ascii_strcasecmp((char *)key, "GCompris-doctype") == 0)
+ 		    {
+ 		      int style_index = get_style_index(gettext((char *)content));
+ 		      apply_style(style_index);
+@@ -1054,7 +1054,7 @@ load_buffer(gchar *file, gchar *file_typ
+ 					       style_index);
+ 		    }
+ 
+-		  if(g_strcasecmp((char *)key, "GCompris-color-style") == 0)
++		  if(g_ascii_strcasecmp((char *)key, "GCompris-color-style") == 0)
+ 		    {
+ 		      int cstyle_index = get_color_style_index(gettext((char *)content));
+ 		      apply_color_style(cstyle_index);
+@@ -1068,7 +1068,7 @@ load_buffer(gchar *file, gchar *file_typ
+ 	    }
+ 	}
+ 
+-      if ( g_strcasecmp((char *)node->name, "body") == 0 &&
++      if ( g_ascii_strcasecmp((char *)node->name, "body") == 0 &&
+ 	   node->children )
+ 	break;
+     }
+@@ -1090,10 +1090,10 @@ load_buffer(gchar *file, gchar *file_typ
+   for(node = node->children; node != NULL; node = node->next)
+     {
+ 
+-      if ( g_strcasecmp((char *)node->name, "h1") == 0 ||
+-	   g_strcasecmp((char *)node->name, "h2") == 0 ||
+-	   g_strcasecmp((char *)node->name, "h3") == 0 ||
+-	   g_strcasecmp((char *)node->name, "p") == 0 )
++      if ( g_ascii_strcasecmp((char *)node->name, "h1") == 0 ||
++	   g_ascii_strcasecmp((char *)node->name, "h2") == 0 ||
++	   g_ascii_strcasecmp((char *)node->name, "h3") == 0 ||
++	   g_ascii_strcasecmp((char *)node->name, "p") == 0 )
+ 	{
+ 	  xmlChar *content;
+ 	  content = xmlNodeGetContent(node);
+diff -up gcompris-11.09/src/wordsgame-activity/wordsgame.c~orig gcompris-11.09/src/wordsgame-activity/wordsgame.c
+--- gcompris-11.09/src/wordsgame-activity/wordsgame.c~orig	2011-10-03 21:49:57.000000000 +0200
++++ gcompris-11.09/src/wordsgame-activity/wordsgame.c	2011-12-08 11:52:42.176914806 +0100
+@@ -435,7 +448,7 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ {
+   if (gcomprisBoard)
+     {
+-      if(g_strcasecmp(gcomprisBoard->type, "wordsgame")==0)
++      if(g_ascii_strcasecmp(gcomprisBoard->type, "wordsgame")==0)
+ 	{
+ 	  /* Set the plugin entry */
+ 	  gcomprisBoard->plugin=&menu_bp;
diff --git a/gcompris-11.09-deprecated2.patch b/gcompris-11.09-deprecated2.patch
new file mode 100644
index 0000000..359e3c5
--- /dev/null
+++ b/gcompris-11.09-deprecated2.patch
@@ -0,0 +1,139 @@
+diff -up gcompris-11.09/src/wordsgame-activity/wordsgame.c.deprecated gcompris-11.09/src/wordsgame-activity/wordsgame.c
+--- gcompris-11.09/src/wordsgame-activity/wordsgame.c.deprecated	2011-12-08 19:26:21.389063336 +0100
++++ gcompris-11.09/src/wordsgame-activity/wordsgame.c	2011-12-08 19:33:00.955057997 +0100
+@@ -26,7 +26,11 @@
+ #define MAXWORDSLENGTH 50
+ static GcomprisWordlist *gc_wordlist = NULL;
+ 
++#if GLIB_CHECK_VERSION(2, 31, 0)
++static GMutex items_lock; /* No init needed for static GMutexes */
++#else
+ GStaticMutex items_lock = G_STATIC_MUTEX_INIT;
++#endif
+ 
+ /*
+   word - word to type
+@@ -232,9 +236,17 @@ end_board ()
+     {
+       pause_board(TRUE);
+       gc_score_end();
++#if GLIB_CHECK_VERSION(2, 31, 0)
++      g_mutex_lock (&items_lock);
++#else
+       g_static_mutex_lock (&items_lock);
++#endif
+       wordsgame_destroy_all_items();
++#if GLIB_CHECK_VERSION(2, 31, 0)
++      g_mutex_unlock (&items_lock);
++#else
+       g_static_mutex_unlock (&items_lock);
++#endif
+       if (preedit_text){
+ 	goo_canvas_item_remove(preedit_text);
+ 	preedit_text=NULL;
+@@ -320,7 +332,11 @@ static gint key_press(guint keyval, gcha
+ 
+   str = commit_str;
+ 
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_lock (&items_lock);
++#else
+   g_static_mutex_lock (&items_lock);
++#endif
+   for (i=0; i < g_utf8_strlen(commit_str,-1); i++){
+     unichar_letter = g_utf8_get_char(str);
+     str = g_utf8_next_char(str);
+@@ -425,7 +441,11 @@ static gint key_press(guint keyval, gcha
+ 
+     g_free(letter);
+   }
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_unlock (&items_lock);
++#else
+   g_static_mutex_unlock (&items_lock);
++#endif
+ 
+   return retval;
+ }
+@@ -490,9 +510,17 @@ static void wordsgame_next_level_unlocke
+ /* set initial values for the next level */
+ static void wordsgame_next_level()
+ {
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_lock (&items_lock);
++#else
+   g_static_mutex_lock (&items_lock);
++#endif
+   wordsgame_next_level_unlocked();
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_unlock (&items_lock);
++#else
+   g_static_mutex_unlock (&items_lock);
++#endif
+ }
+ 
+ /* Called with items_lock locked */
+@@ -529,13 +557,21 @@ static gint wordsgame_move_items (GtkWid
+   gint i;
+   LettersItem *item;
+ 
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_lock (&items_lock);
++#else
+   g_static_mutex_lock (&items_lock);
++#endif
+   for (i=items->len-1;i>=0;i--)
+     {
+       item=g_ptr_array_index(items,i);
+       wordsgame_move_item(item);
+     }
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_unlock (&items_lock);
++#else
+   g_static_mutex_unlock (&items_lock);
++#endif
+   dummy_id = g_timeout_add (gc_timing (speed, items->len),
+           (GSourceFunc) wordsgame_move_items, NULL);
+   return (FALSE);
+@@ -559,7 +595,11 @@ static gboolean wordsgame_delete_items(g
+ {
+   LettersItem *item;
+ 
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_lock (&items_lock);
++#else
+   g_static_mutex_lock (&items_lock);
++#endif
+   /* items2del may be NULL, as we can get called after
+      wordsgame_destroy_all_items() has been called (since we get called
+      as a timeout handler). */
+@@ -571,7 +611,11 @@ static gboolean wordsgame_delete_items(g
+         wordsgame_destroy_item(item);
+       }
+   }
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_unlock (&items_lock);
++#else
+   g_static_mutex_unlock (&items_lock);
++#endif
+ 
+   return (FALSE);
+ }
+@@ -683,9 +727,17 @@ static GooCanvasItem *wordsgame_create_i
+    }
+ 
+ 
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_lock (&items_lock);
++#else
+   g_static_mutex_lock (&items_lock);
++#endif
+   g_ptr_array_add(items, item);
++#if GLIB_CHECK_VERSION(2, 31, 0)
++  g_mutex_unlock (&items_lock);
++#else
+   g_static_mutex_unlock (&items_lock);
++#endif
+ 
+   return (item->rootitem);
+ }
diff --git a/gcompris-11.09-fixlocks.patch b/gcompris-11.09-fixlocks.patch
new file mode 100644
index 0000000..f1f0409
--- /dev/null
+++ b/gcompris-11.09-fixlocks.patch
@@ -0,0 +1,287 @@
+diff -up gcompris-11.09/src/wordsgame-activity/wordsgame.c.locks gcompris-11.09/src/wordsgame-activity/wordsgame.c
+--- gcompris-11.09/src/wordsgame-activity/wordsgame.c.locks	2011-12-08 17:45:48.189592748 +0100
++++ gcompris-11.09/src/wordsgame-activity/wordsgame.c	2011-12-08 17:55:04.335610458 +0100
+@@ -26,8 +26,7 @@
+ #define MAXWORDSLENGTH 50
+ static GcomprisWordlist *gc_wordlist = NULL;
+ 
+-GStaticRWLock items_lock = G_STATIC_RW_LOCK_INIT;
+-GStaticRWLock items2del_lock = G_STATIC_RW_LOCK_INIT;
++GStaticMutex items_lock = G_STATIC_MUTEX_INIT;
+ 
+ /*
+   word - word to type
+@@ -75,7 +74,7 @@ static GooCanvasItem	 *wordsgame_create_
+ static gint		 wordsgame_drop_items (GtkWidget *widget, gpointer data);
+ static gint		 wordsgame_move_items (GtkWidget *widget, gpointer data);
+ static void		 wordsgame_destroy_item(LettersItem *item);
+-static gboolean		 wordsgame_destroy_items(GPtrArray *items);
++static gboolean		 wordsgame_delete_items(gpointer user_data);
+ static void		 wordsgame_destroy_all_items(void);
+ static void		 wordsgame_next_level(void);
+ static void		 wordsgame_add_new_item(void);
+@@ -233,7 +232,9 @@ end_board ()
+     {
+       pause_board(TRUE);
+       gc_score_end();
++      g_static_mutex_lock (&items_lock);
+       wordsgame_destroy_all_items();
++      g_static_mutex_unlock (&items_lock);
+       if (preedit_text){
+ 	goo_canvas_item_remove(preedit_text);
+ 	preedit_text=NULL;
+@@ -269,6 +270,7 @@ static gint key_press(guint keyval, gcha
+   LettersItem *item;
+   gchar *str;
+   gunichar unichar_letter;
++  gint retval = TRUE;
+ 
+   if(!gcomprisBoard)
+     return FALSE;
+@@ -318,12 +320,14 @@ static gint key_press(guint keyval, gcha
+ 
+   str = commit_str;
+ 
++  g_static_mutex_lock (&items_lock);
+   for (i=0; i < g_utf8_strlen(commit_str,-1); i++){
+     unichar_letter = g_utf8_get_char(str);
+     str = g_utf8_next_char(str);
+     if(!g_unichar_isalnum (unichar_letter)){
+       player_loose();
+-      return FALSE;
++      retval = FALSE;
++      break;
+     }
+ 
+     letter = g_new0(gchar,6);
+@@ -346,15 +350,9 @@ static gint key_press(guint keyval, gcha
+ 
+     if(item_on_focus==NULL)
+       {
+-	g_static_rw_lock_reader_lock (&items_lock);
+-	gint count=items->len;
+-	g_static_rw_lock_reader_unlock (&items_lock);
+-
+-	for (i=0;i<count;i++)
++	for (i=0;i<items->len;i++)
+ 	  {
+-	    g_static_rw_lock_reader_lock (&items_lock);
+ 	    item=g_ptr_array_index(items,i);
+-	    g_static_rw_lock_reader_unlock (&items_lock);
+ 	    g_assert (item!=NULL);
+ 	    if (strcmp(item->letter,letter)==0)
+ 	      {
+@@ -427,7 +425,9 @@ static gint key_press(guint keyval, gcha
+ 
+     g_free(letter);
+   }
+-  return TRUE;
++  g_static_mutex_unlock (&items_lock);
++
++  return retval;
+ }
+ 
+ static gboolean
+@@ -452,8 +452,8 @@ is_our_board (GcomprisBoard *gcomprisBoa
+ /*-------------------------------------------------------------------------------*/
+ /*-------------------------------------------------------------------------------*/
+ 
+-/* set initial values for the next level */
+-static void wordsgame_next_level()
++/* Called with items_lock locked */
++static void wordsgame_next_level_unlocked()
+ {
+   gcomprisBoard->number_of_sublevel = 10 +
+     ((gcomprisBoard->level-1) * 5);
+@@ -487,7 +487,15 @@ static void wordsgame_next_level()
+   pause_board(FALSE);
+ }
+ 
++/* set initial values for the next level */
++static void wordsgame_next_level()
++{
++  g_static_mutex_lock (&items_lock);
++  wordsgame_next_level_unlocked();
++  g_static_mutex_unlock (&items_lock);
++}
+ 
++/* Called with items_lock locked */
+ static void wordsgame_move_item(LettersItem *item)
+ {
+   GooCanvasBounds bounds;
+@@ -503,15 +511,9 @@ static void wordsgame_move_item(LettersI
+     if (item == item_on_focus)
+       item_on_focus = NULL;
+ 
+-    g_static_rw_lock_writer_lock (&items_lock);
+     g_ptr_array_remove (items, item);
+-    g_static_rw_lock_writer_unlock (&items_lock);
+-
+-    g_static_rw_lock_writer_lock (&items2del_lock);
+     g_ptr_array_add (items2del, item);
+-    g_static_rw_lock_writer_unlock (&items2del_lock);
+-
+-    g_timeout_add (100,(GSourceFunc) wordsgame_destroy_items, items2del);
++    g_timeout_add (100,(GSourceFunc) wordsgame_delete_items, NULL);
+ 
+     player_loose();
+   }
+@@ -527,14 +529,13 @@ static gint wordsgame_move_items (GtkWid
+   gint i;
+   LettersItem *item;
+ 
++  g_static_mutex_lock (&items_lock);
+   for (i=items->len-1;i>=0;i--)
+     {
+-
+-      g_static_rw_lock_reader_lock (&items_lock);
+       item=g_ptr_array_index(items,i);
+-      g_static_rw_lock_reader_unlock (&items_lock);
+       wordsgame_move_item(item);
+     }
++  g_static_mutex_unlock (&items_lock);
+   dummy_id = g_timeout_add (gc_timing (speed, items->len),
+           (GSourceFunc) wordsgame_move_items, NULL);
+   return (FALSE);
+@@ -554,55 +555,50 @@ static void wordsgame_destroy_item(Lette
+ }
+ 
+ /* Destroy items that falls out of the canvas */
+-static gboolean wordsgame_destroy_items(GPtrArray *item_list)
++static gboolean wordsgame_delete_items(gpointer user_data)
+ {
+   LettersItem *item;
+ 
+-  g_assert(item_list!=NULL);
+-
+-
+-
+-  if  (item_list==items) {
+-    g_static_rw_lock_writer_lock (&items_lock);
+-    while (item_list->len>0)
+-      {
+-	item = g_ptr_array_index(item_list,0);
+-	g_ptr_array_remove_index_fast(item_list,0);
+-	wordsgame_destroy_item(item);
+-      }
+-    g_static_rw_lock_writer_unlock (&items_lock);
+-  }
+-
+-  if  (item_list==items2del) {
+-    g_static_rw_lock_writer_lock (&items2del_lock);
+-    while (item_list->len>0)
++  g_static_mutex_lock (&items_lock);
++  /* items2del may be NULL, as we can get called after
++     wordsgame_destroy_all_items() has been called (since we get called
++     as a timeout handler). */
++  if (items2del!=NULL){
++    while (items2del->len>0)
+       {
+-	item = g_ptr_array_index(item_list,0);
+-	g_ptr_array_remove_index_fast(item_list,0);
+-	wordsgame_destroy_item(item);
++        item = g_ptr_array_index(items2del,0);
++        g_ptr_array_remove_index_fast(items2del,0);
++        wordsgame_destroy_item(item);
+       }
+-    g_static_rw_lock_writer_unlock (&items2del_lock);
+   }
++  g_static_mutex_unlock (&items_lock);
+ 
+   return (FALSE);
+ }
+ 
+-/* Destroy all the items */
++/* Destroy all the items, called with items_lock locked */
+ static void wordsgame_destroy_all_items()
+ {
++  LettersItem *item;
+ 
+   if (items!=NULL){
+-    if(items->len > 0) {
+-      wordsgame_destroy_items(items);
+-    }
++    while (items->len>0)
++      {
++        item = g_ptr_array_index(items,0);
++        g_ptr_array_remove_index_fast(items,0);
++        wordsgame_destroy_item(item);
++      }
+     g_ptr_array_free (items, TRUE);
+     items=NULL;
+   }
+ 
+   if (items2del!=NULL){
+-    if(items2del->len > 0) {
+-      wordsgame_destroy_items(items2del);
+-    }
++    while (items2del->len>0)
++      {
++        item = g_ptr_array_index(items2del,0);
++        g_ptr_array_remove_index_fast(items2del,0);
++        wordsgame_destroy_item(item);
++      }
+     g_ptr_array_free (items2del, TRUE);
+     items2del=NULL;
+   }
+@@ -687,9 +683,9 @@ static GooCanvasItem *wordsgame_create_i
+    }
+ 
+ 
+-  g_static_rw_lock_writer_lock (&items_lock);
++  g_static_mutex_lock (&items_lock);
+   g_ptr_array_add(items, item);
+-  g_static_rw_lock_writer_unlock (&items_lock);
++  g_static_mutex_unlock (&items_lock);
+ 
+   return (item->rootitem);
+ }
+@@ -716,6 +712,7 @@ static gint wordsgame_drop_items (GtkWid
+   return (FALSE);
+ }
+ 
++/* Called with items_lock locked */
+ static void player_win(LettersItem *item)
+ {
+ 
+@@ -726,18 +723,11 @@ static void player_win(LettersItem *item
+   gcomprisBoard->sublevel++;
+   gc_score_set(gcomprisBoard->sublevel);
+ 
+-
+-  g_static_rw_lock_writer_lock (&items_lock);
+   g_ptr_array_remove(items,item);
+-  g_static_rw_lock_writer_unlock (&items_lock);
+-
+-  g_static_rw_lock_writer_lock (&items2del_lock);
+   g_ptr_array_add(items2del,item);
+-  g_static_rw_lock_writer_unlock (&items2del_lock);
+ 
+   g_object_set (item->rootitem, "visibility", GOO_CANVAS_ITEM_INVISIBLE, NULL);
+-  g_timeout_add (500,(GSourceFunc) wordsgame_destroy_items, items2del);
+-
++  g_timeout_add (500,(GSourceFunc) wordsgame_delete_items, NULL);
+ 
+   if(gcomprisBoard->sublevel > gcomprisBoard->number_of_sublevel)
+     {
+@@ -748,18 +738,14 @@ static void player_win(LettersItem *item
+       if(gcomprisBoard->level>gcomprisBoard->maxlevel)
+ 	gcomprisBoard->level = gcomprisBoard->maxlevel;
+ 
+-      wordsgame_next_level();
++      wordsgame_next_level_unlocked();
+       gc_sound_play_ogg ("sounds/bonus.wav", NULL);
+     }
+   else
+     {
+ 
+       /* Drop a new item now to speed up the game */
+-      g_static_rw_lock_reader_lock (&items_lock);
+-      gint count=items->len;
+-      g_static_rw_lock_reader_unlock (&items_lock);
+-
+-      if(count==0)
++      if(items->len==0)
+         {
+ 
+ 	  if ((fallSpeed-=INCREMENT_FALLSPEED) < MIN_FALLSPEED) fallSpeed+=INCREMENT_FALLSPEED;
diff --git a/gcompris.spec b/gcompris.spec
index d6afecd..f475b8d 100644
--- a/gcompris.spec
+++ b/gcompris.spec
@@ -1,14 +1,15 @@
 Name:           gcompris
-Version:        9.5
-Release:        5%{?dist}
+Version:        11.09
+Release:        1%{?dist}
 Summary:        Educational suite for kids 2-10 years old
 Group:          Amusements/Games
 License:        GPLv3+
 URL:            http://gcompris.net
 Source0:        http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
 Patch0:         gcompris-9.0-icon.patch
-Patch1:         gcompris-9.5-gcc46.patch
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch1:         gcompris-11.09-deprecated1.patch
+Patch2:         gcompris-11.09-fixlocks.patch
+Patch3:         gcompris-11.09-deprecated2.patch
 Buildrequires:  libgnomeui-devel sqlite-devel python-devel gnet2-devel
 Buildrequires:  pygtk2-devel SDL_mixer-devel libXt-devel libXxf86vm-devel
 Buildrequires:  gnome-python2 xorg-x11-proto-devel gstreamer-devel
@@ -66,6 +67,7 @@ Plus de 100 activités sont proposées :
 Summary:        GCompris voices in Arabic (Tunisia)
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-ar
 Voice samples for the GCompris games in Arabic (Tunisia).
@@ -75,6 +77,7 @@ Voice samples for the GCompris games in Arabic (Tunisia).
 Summary:        GCompris voices in Tsjech
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-cs
 Voice samples for the GCompris games in Tsjech.
@@ -84,6 +87,7 @@ Voice samples for the GCompris games in Tsjech.
 Summary:        GCompris voices in Danish
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-da
 Voice samples for the GCompris games in Danish.
@@ -93,6 +97,7 @@ Voice samples for the GCompris games in Danish.
 Summary:        GCompris voices in German
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-de
 Voice samples for the GCompris games in German.
@@ -102,6 +107,7 @@ Voice samples for the GCompris games in German.
 Summary:        GCompris voices in Greek
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-el
 Voice samples for the GCompris games in Greek.
@@ -111,6 +117,7 @@ Voice samples for the GCompris games in Greek.
 Summary:        GCompris voices in English
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-en
 Voice samples for the GCompris games in English.
@@ -120,6 +127,7 @@ Voice samples for the GCompris games in English.
 Summary:        GCompris voices in Spanish
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-es
 Voice samples for the GCompris games in Spanish.
@@ -129,6 +137,7 @@ Voice samples for the GCompris games in Spanish.
 Summary:        GCompris voices in Basque
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-eu
 Voice samples for the GCompris games in Basque.
@@ -138,6 +147,7 @@ Voice samples for the GCompris games in Basque.
 Summary:        GCompris voices in Finish
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-fi
 Voice samples for the GCompris games in Finish.
@@ -147,6 +157,7 @@ Voice samples for the GCompris games in Finish.
 Summary:        GCompris voices in French
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-fr
 Voice samples for the GCompris games in French.
@@ -156,6 +167,7 @@ Voice samples for the GCompris games in French.
 Summary:        GCompris voices in Hindi
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-hi
 Voice samples for the GCompris games in Hindi.
@@ -165,6 +177,7 @@ Voice samples for the GCompris games in Hindi.
 Summary:        GCompris voices in Hungarian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-hu
 Voice samples for the GCompris games in Hungarian.
@@ -174,6 +187,7 @@ Voice samples for the GCompris games in Hungarian.
 Summary:        GCompris voices in Indonesian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-id
 Voice samples for the GCompris games in Indonesian.
@@ -183,6 +197,7 @@ Voice samples for the GCompris games in Indonesian.
 Summary:        GCompris voices in Italian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-it
 Voice samples for the GCompris games in Italian.
@@ -192,6 +207,7 @@ Voice samples for the GCompris games in Italian.
 Summary:        GCompris voices in Indian Marathi
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-mr
 Voice samples for the GCompris games in Indian Marathi.
@@ -201,6 +217,7 @@ Voice samples for the GCompris games in Indian Marathi.
 Summary:        GCompris voices in Norwegian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-nb
 Voice samples for the GCompris games in Norwegian.
@@ -210,6 +227,7 @@ Voice samples for the GCompris games in Norwegian.
 Summary:        GCompris voices in Dutch
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-nl
 Voice samples for the GCompris games in Dutch.
@@ -219,6 +237,7 @@ Voice samples for the GCompris games in Dutch.
 Summary:        GCompris voices in Portuguese
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-pt
 Voice samples for the GCompris games in Portuguese.
@@ -228,6 +247,7 @@ Voice samples for the GCompris games in Portuguese.
 Summary:        GCompris voices in Russian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-ru
 Voice samples for the GCompris games in Russian.
@@ -237,6 +257,7 @@ Voice samples for the GCompris games in Russian.
 Summary:        GCompris voices in Somali
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-so
 Voice samples for the GCompris games in Somali.
@@ -246,6 +267,7 @@ Voice samples for the GCompris games in Somali.
 Summary:        GCompris voices in Serbian
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-sr
 Voice samples for the GCompris games in Serbian.
@@ -255,6 +277,7 @@ Voice samples for the GCompris games in Serbian.
 Summary:        GCompris voices in Swedish
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-sv
 Voice samples for the GCompris games in Swedish.
@@ -264,6 +287,7 @@ Voice samples for the GCompris games in Swedish.
 Summary:        GCompris voices in Turk
 Group:          Amusements/Games
 BuildArch:      noarch
+Requires:       %{name} = %{version}-%{release}
 
 %description sound-tr
 Voice samples for the GCompris games in Turk.
@@ -273,6 +297,8 @@ Voice samples for the GCompris games in Turk.
 %setup -q
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
 for file in docs/C/%{name}.info AUTHORS ChangeLog; do
     iconv -f ISO-8859-1 -t UTF-8 -o $file.new $file && \
     touch -r $file $file.new && \
@@ -300,7 +326,6 @@ sed -i \
 
 
 %install
-rm -rf $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
 rm $RPM_BUILD_ROOT%{_libdir}/%{name}/lib*.la
 rm -f $RPM_BUILD_ROOT%{_infodir}/dir
@@ -328,29 +353,26 @@ mv $RPM_BUILD_ROOT/usr/share/pixmaps/%{name}.png \
 rmdir $RPM_BUILD_ROOT/usr/share/pixmaps
 
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
 %post
-touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
-   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
 /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
 
-%postun
-touch --no-create %{_datadir}/icons/hicolor || :
-if [ -x %{_bindir}/gtk-update-icon-cache ]; then
-   %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
-fi
+%preun
 if [ $1 = 0 ]; then
     /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
 fi
 
+%postun
+if [ $1 -eq 0 ] ; then
+    touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
 
 %files -f %{name}.lang
-%defattr(-,root,root,-)
 %doc AUTHORS COPYING ChangeLog NEWS README
 %{_bindir}/%{name}
 %{_libdir}/%{name}
@@ -363,126 +385,108 @@ fi
 %{_mandir}/man6/%{name}.6.gz
 
 %files sound-ar
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/ar
 
 %files sound-cs
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/cs
 
 %files sound-da
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/da
 
 %files sound-de
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/de
 
 %files sound-el
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/el
 
 %files sound-en
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/en
 
 %files sound-es
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/es
 
 %files sound-eu
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/eu
 
 %files sound-fi
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/fi
 
 %files sound-fr
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/fr
 
 %files sound-hi
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/hi
 
 %files sound-hu
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/hu
 
 %files sound-id
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/id
 
 %files sound-it
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/it
 
 %files sound-mr
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/mr
 
 %files sound-nb
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/nb
 
 %files sound-nl
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/nl
 
 %files sound-pt
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
@@ -490,35 +494,30 @@ fi
 %{_datadir}/%{name}/boards/voices/pt_BR
 
 %files sound-ru
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/ru
 
 %files sound-so
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/so
 
 %files sound-sr
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/sr
 
 %files sound-sv
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
 %{_datadir}/%{name}/boards/voices/sv
 
 %files sound-tr
-%defattr(-,root,root,-)
 %dir %{_datadir}/%{name}
 %dir %{_datadir}/%{name}/boards
 %dir %{_datadir}/%{name}/boards/voices
@@ -526,6 +525,9 @@ fi
 
 
 %changelog
+* Wed Dec 07 2011 Hans de Goede <hdegoede at redhat.com> - 11.09-1
+- New upstream release 11.09
+
 * Tue Dec 06 2011 Adam Jackson <ajax at redhat.com> - 9.5-5
 - Rebuild for new libpng
 
diff --git a/sources b/sources
index 32179b8..efd5fda 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-1653285f04a8bac4b73fc4243f7810f9  gcompris-9.5.tar.gz
+b0066d5e0bb4e2fbb7380f723b51c598  gcompris-11.09.tar.gz


More information about the scm-commits mailing list