rpms/gcompris/devel gcompris-7.4-xf86vidmode.patch, 1.1, 1.2 gcompris.spec, 1.6, 1.7

Hans de Goede (jwrdegoede) fedora-extras-commits at redhat.com
Tue May 9 19:16:54 UTC 2006


Author: jwrdegoede

Update of /cvs/extras/rpms/gcompris/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv29565

Modified Files:
	gcompris-7.4-xf86vidmode.patch gcompris.spec 
Log Message:
* Tue May  9 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 7.4-9
- Fix 2 bugs introduced by the fix for bug 190918, see the bug for details.


gcompris-7.4-xf86vidmode.patch:

Index: gcompris-7.4-xf86vidmode.patch
===================================================================
RCS file: /cvs/extras/rpms/gcompris/devel/gcompris-7.4-xf86vidmode.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- gcompris-7.4-xf86vidmode.patch	6 May 2006 22:42:38 -0000	1.1
+++ gcompris-7.4-xf86vidmode.patch	9 May 2006 19:16:54 -0000	1.2
@@ -1,5 +1,5 @@
 --- gcompris-7.4/configure.xf86vm	2006-04-12 01:13:49.000000000 +0200
-+++ gcompris-7.4/configure	2006-05-07 00:25:10.000000000 +0200
++++ gcompris-7.4/configure	2006-05-09 19:51:54.000000000 +0200
 @@ -1094,7 +1094,7 @@
    --disable-sdltest       Do not try to compile and run a test SDL program
    --disable-glibtest      do not try to compile and run a test GLIB program
@@ -201,7 +201,7 @@
  echo "SQLITE database (--enable-sqlite)        = $with_sqlite (profiles depend on this)"
  
 --- gcompris-7.4/config.h.in.xf86vm	2006-04-12 01:16:12.000000000 +0200
-+++ gcompris-7.4/config.h.in	2006-05-07 00:25:10.000000000 +0200
++++ gcompris-7.4/config.h.in	2006-05-09 19:51:54.000000000 +0200
 @@ -141,5 +141,5 @@
  /* Version number of package */
  #undef VERSION
@@ -210,8 +210,8 @@
 -#undef XRANDR
 +/* XF86VidMode Available */
 +#undef XF86_VIDMODE
---- gcompris-7.4/src/boards/py-gcompris-properties.c.xf86vm	2006-05-07 00:25:10.000000000 +0200
-+++ gcompris-7.4/src/boards/py-gcompris-properties.c	2006-05-07 00:25:10.000000000 +0200
+--- gcompris-7.4/src/boards/py-gcompris-properties.c.xf86vm	2006-05-09 19:51:54.000000000 +0200
++++ gcompris-7.4/src/boards/py-gcompris-properties.c	2006-05-09 19:51:54.000000000 +0200
 @@ -72,8 +72,8 @@
  	return Py_False;
        }
@@ -223,8 +223,301 @@
  	Py_INCREF(Py_True);
  	return Py_True;
        } else {
+--- gcompris-7.4/src/boards/draw.c.xf86vm	2006-04-04 00:00:43.000000000 +0200
++++ gcompris-7.4/src/boards/draw.c	2006-05-09 12:35:04.000000000 +0200
+@@ -2008,7 +2008,7 @@
+ 	case 1:
+ 	  fleur = gdk_cursor_new(get_resize_cursor(anchor));
+ 	  
+-	  gnome_canvas_item_grab(item,
++	  gcompris_canvas_item_grab(item,
+ 				 GDK_POINTER_MOTION_MASK |
+ 				 GDK_BUTTON_RELEASE_MASK,
+ 				 fleur,
+@@ -2031,7 +2031,7 @@
+     case GDK_BUTTON_RELEASE:
+       if(dragging)
+ 	{
+-	  gnome_canvas_item_ungrab(item, event->button.time);
++	  gcompris_canvas_item_ungrab(item, event->button.time);
+ 	  dragging = FALSE;
+ 	  draggingItem = NULL;
+ 	}
+@@ -2179,7 +2179,7 @@
+ 
+ 	    fleur = gdk_cursor_new(GDK_FLEUR);
+ 
+-	    gnome_canvas_item_grab(item,
++	    gcompris_canvas_item_grab(item,
+ 				   GDK_POINTER_MOTION_MASK |
+ 				   GDK_BUTTON_RELEASE_MASK,
+ 				   fleur,
+@@ -2296,7 +2296,7 @@
+     case GDK_BUTTON_RELEASE:
+       if(dragging)
+ 	{
+-	  gnome_canvas_item_ungrab(item, event->button.time);
++	  gcompris_canvas_item_ungrab(item, event->button.time);
+ 	  dragging = FALSE;
+ 	  draggingItem = NULL;
+ 
+--- gcompris-7.4/src/boards/hanoi_real.c.xf86vm	2006-01-22 22:49:31.000000000 +0100
++++ gcompris-7.4/src/boards/hanoi_real.c	2006-05-09 12:35:04.000000000 +0200
+@@ -472,7 +472,7 @@
+ 	  gnome_canvas_item_raise_to_top(data->item);
+ 	  
+ 	  fleur = gdk_cursor_new(GDK_FLEUR);
+-	  gnome_canvas_item_grab(data->item,
++	  gcompris_canvas_item_grab(data->item,
+ 				 GDK_POINTER_MOTION_MASK | 
+ 				 GDK_BUTTON_RELEASE_MASK,
+ 				 fleur,
+@@ -513,7 +513,7 @@
+ 	  disc_h = gdk_pixbuf_get_height(pixmap)/2;
+ 	  gdk_pixbuf_unref(pixmap);
+       
+-	  gnome_canvas_item_ungrab(data->item, event->button.time);
++	  gcompris_canvas_item_ungrab(data->item, event->button.time);
+ 	  dragging = FALSE;
+ 	  
+ 	  /* Search the column (x) where this item is ungrabbed */
+--- gcompris-7.4/src/boards/clockgame.c.xf86vm	2006-04-05 01:16:11.000000000 +0200
++++ gcompris-7.4/src/boards/clockgame.c	2006-05-09 12:35:04.000000000 +0200
+@@ -663,7 +663,7 @@
+       y = item_y;
+ 
+       fleur = gdk_cursor_new(GDK_FLEUR);
+-      gnome_canvas_item_grab(item,
++      gcompris_canvas_item_grab(item,
+ 			     GDK_POINTER_MOTION_MASK |
+ 			     GDK_BUTTON_RELEASE_MASK,
+ 			     fleur,
+@@ -710,7 +710,7 @@
+     case GDK_BUTTON_RELEASE:
+       if(dragging)
+ 	{
+-	  gnome_canvas_item_ungrab(item, event->button.time);
++	  gcompris_canvas_item_ungrab(item, event->button.time);
+ 	  dragging = FALSE;
+ 	}
+       break;
+--- gcompris-7.4/src/boards/hanoi.c.xf86vm	2005-11-18 23:48:28.000000000 +0100
++++ gcompris-7.4/src/boards/hanoi.c	2006-05-09 12:35:04.000000000 +0200
+@@ -645,7 +645,7 @@
+ 	  gnome_canvas_item_raise_to_top(data->item_text);
+ 	  
+ 	  fleur = gdk_cursor_new(GDK_FLEUR);
+-	  gnome_canvas_item_grab(data->item,
++	  gcompris_canvas_item_grab(data->item,
+ 				 GDK_POINTER_MOTION_MASK | 
+ 				 GDK_BUTTON_RELEASE_MASK,
+ 				 fleur,
+@@ -679,7 +679,7 @@
+ 	  PieceItem *piece_dst;
+ 	  gint col, line;
+ 	  
+-	  gnome_canvas_item_ungrab(data->item, event->button.time);
++	  gcompris_canvas_item_ungrab(data->item, event->button.time);
+ 	  dragging = FALSE;
+ 	  
+ 	  /* Search the column (x) where this item is ungrabbed */
+--- gcompris-7.4/src/boards/chess.c.xf86vm	2006-04-03 23:59:47.000000000 +0200
++++ gcompris-7.4/src/boards/chess.c	2006-05-09 12:35:04.000000000 +0200
+@@ -839,7 +839,7 @@
+ 	
+ 	fleur = gdk_cursor_new(GDK_FLEUR);
+ 	gnome_canvas_item_raise_to_top(item);
+-	gnome_canvas_item_grab(item,
++	gcompris_canvas_item_grab(item,
+ 			       GDK_POINTER_MOTION_MASK | 
+ 			       GDK_BUTTON_RELEASE_MASK,
+ 			       fleur,
+@@ -909,7 +909,7 @@
+ 	       gnome_canvas_item_move(item, ofset_x, ofset_y);
+ 	     }
+ 
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   dragging = FALSE;
+ 
+ 	   position_display(position);
+--- gcompris-7.4/src/boards/shapegame.c.xf86vm	2006-04-04 00:05:12.000000000 +0200
++++ gcompris-7.4/src/boards/shapegame.c	2006-05-09 12:35:04.000000000 +0200
+@@ -1103,7 +1103,7 @@
+ 	       gnome_canvas_item_raise_to_top(shape_list_root_item);
+ 	       gnome_canvas_item_raise_to_top(item);
+ 
+-	       gnome_canvas_item_grab(item,
++	       gcompris_canvas_item_grab(item,
+ 				      GDK_POINTER_MOTION_MASK | 
+ 				      GDK_BUTTON_RELEASE_MASK,
+ 				      fleur,
+@@ -1143,7 +1143,7 @@
+ 	 {
+ 	   Shape *targetshape = NULL;
+ 
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   dragging = FALSE;
+ 
+ 	   targetshape = find_closest_shape(item_x - offset_x,
+@@ -1304,7 +1304,7 @@
+ 
+ 	       fleur = gdk_cursor_new(GDK_FLEUR);
+ 
+-	       gnome_canvas_item_grab(item,
++	       gcompris_canvas_item_grab(item,
+ 				      GDK_POINTER_MOTION_MASK | 
+ 				      GDK_BUTTON_RELEASE_MASK,
+ 				      fleur,
+@@ -1341,7 +1341,7 @@
+        if(dragging) 
+ 	 {
+ 
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   gnome_canvas_item_raise_to_top(item);
+ 	   dragging = FALSE;
+ 
+--- gcompris-7.4/src/boards/planegame.c.xf86vm	2005-10-15 16:54:30.000000000 +0200
++++ gcompris-7.4/src/boards/planegame.c	2006-05-09 12:35:04.000000000 +0200
+@@ -578,7 +578,7 @@
+                y = item_y;
+                
+                fleur = gdk_cursor_new(GDK_FLEUR);
+-               gnome_canvas_item_grab(item,
++               gcompris_canvas_item_grab(item,
+                                       GDK_POINTER_MOTION_MASK | 
+                                       GDK_BUTTON_RELEASE_MASK,
+                                       fleur,
+@@ -608,7 +608,7 @@
+      case GDK_BUTTON_RELEASE:
+        if(dragging) 
+ 	 {
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   dragging = FALSE;
+ 	 }
+        break;
+--- gcompris-7.4/src/boards/enumerate.c.xf86vm	2005-11-18 23:48:12.000000000 +0100
++++ gcompris-7.4/src/boards/enumerate.c	2006-05-09 12:35:04.000000000 +0200
+@@ -522,7 +522,7 @@
+ 	   gnome_canvas_item_raise_to_top(item);
+ 
+ 	   fleur = gdk_cursor_new(GDK_FLEUR);
+-	   gnome_canvas_item_grab(item,
++	   gcompris_canvas_item_grab(item,
+ 				  GDK_POINTER_MOTION_MASK | 
+ 				  GDK_BUTTON_RELEASE_MASK,
+ 				  fleur,
+@@ -577,7 +577,7 @@
+      case GDK_BUTTON_RELEASE:
+        if(dragging) 
+ 	 {
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   dragging = FALSE;
+ 	 }
+        break;
+--- gcompris-7.4/src/boards/clickgame.c.xf86vm	2005-10-10 00:21:56.000000000 +0200
++++ gcompris-7.4/src/boards/clickgame.c	2006-05-09 12:35:04.000000000 +0200
+@@ -598,7 +598,7 @@
+                y = item_y;
+                
+                fleur = gdk_cursor_new(GDK_FLEUR);
+-               gnome_canvas_item_grab(item,
++               gcompris_canvas_item_grab(item,
+                                       GDK_POINTER_MOTION_MASK | 
+                                       GDK_BUTTON_RELEASE_MASK,
+                                       fleur,
+@@ -683,7 +683,7 @@
+      case GDK_BUTTON_RELEASE:
+        if(dragging) 
+ 	 {
+-	   gnome_canvas_item_ungrab(item, event->button.time);
++	   gcompris_canvas_item_ungrab(item, event->button.time);
+ 	   dragging = FALSE;
+ 	 }
+        break;
+--- gcompris-7.4/src/boards/traffic.c.xf86vm	2006-04-04 00:06:09.000000000 +0200
++++ gcompris-7.4/src/boards/traffic.c	2006-05-09 12:35:04.000000000 +0200
+@@ -417,7 +417,7 @@
+       cursor=gdk_cursor_new(GDK_SB_V_DOUBLE_ARROW);
+     else 
+       cursor=gdk_cursor_new(GDK_SB_H_DOUBLE_ARROW);
+-    gnome_canvas_item_grab(item,
++    gcompris_canvas_item_grab(item,
+ 			   GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
+ 			   cursor,
+ 			   event->button.time);
+@@ -495,7 +495,7 @@
+ 	dx=CLAMP(item_x-start_x,-39,39);
+ 
+ 	if (thiscar->goal && big_x==250+OFSET_X) { 
+-	  gnome_canvas_item_ungrab(item,event->button.time);
++	  gcompris_canvas_item_ungrab(item,event->button.time);
+ 	  gnome_canvas_item_hide(item);
+ 	  moving=FALSE;
+ 
+@@ -573,7 +573,7 @@
+ 	  dy=*ptr-y;
+ 
+ 	gnome_canvas_item_move(item,dx,dy);
+-	gnome_canvas_item_ungrab(item,event->button.time);
++	gcompris_canvas_item_ungrab(item,event->button.time);
+ 	hit=0;
+ 	moving=FALSE;
+       }
+--- gcompris-7.4/src/boards/python/tuxpaint.py.xf86vm	2006-01-22 23:20:06.000000000 +0100
++++ gcompris-7.4/src/boards/python/tuxpaint.py	2006-05-09 19:51:55.000000000 +0200
+@@ -103,6 +103,11 @@
+       options.append('--nostampcontrols')
+   
+     gcompris.sound.close()
++    
++    # release pointergrab if running fullscreen, tuxpaint wants to grab the
++    # pointer itself
++    if (Prop.fullscreen):
++      gtk.gdk.pointer_ungrab()
+ 
+     #self.window.set_property("accept-focus", 0)
+     #self.window.set_keep_below(False)
+@@ -115,7 +120,7 @@
+       gcompris.utils.dialog(_("Cannot find Tuxpaint.\nInstall it to use this activity !"),stop_board)
+       return 
+     
+-    gcompris.child_watch_add(pid, child_callback, None)
++    gcompris.child_watch_add(pid, child_callback, self)
+ 
+     gcompris.bar_set(0)
+     gcompris.bar_hide(1)
+@@ -221,6 +226,9 @@
+     return default_config_dict
+ 
+ def child_callback(fd,  cond, data):
++  # restore pointergrab if running fullscreen
++  if (gcompris.get_properties().fullscreen):
++    gtk.gdk.pointer_grab(data.window.window, True, 0, data.window.window)
+   #global board
+   #board.window.set_property("accept-focus", 1)
+   #board.window.set_keep_above(False)
+--- gcompris-7.4/src/gcompris/gcompris.h.xf86vm	2006-03-02 00:02:09.000000000 +0100
++++ gcompris-7.4/src/gcompris/gcompris.h	2006-05-09 19:51:54.000000000 +0200
+@@ -159,6 +159,12 @@
+ 
+ void gcompris_confirm_stop (void);
+ 
++/* Use these instead of the gnome_canvas ones for proper fullscreen mousegrab
++   handling. */
++int gcompris_canvas_item_grab (GnomeCanvasItem *item, unsigned int event_mask,
++			    GdkCursor *cursor, guint32 etime);
++void gcompris_canvas_item_ungrab (GnomeCanvasItem *item, guint32 etime);
++
+ /* Trace Log */
+ #define GCOMPRIS_LOG_STATUS_PASSED    "PASSED"
+ #define GCOMPRIS_LOG_STATUS_FAILED    "FAILED"
 --- gcompris-7.4/src/gcompris/gcompris.c.xf86vm	2006-03-02 00:47:10.000000000 +0100
-+++ gcompris-7.4/src/gcompris/gcompris.c	2006-05-07 00:29:58.000000000 +0200
++++ gcompris-7.4/src/gcompris/gcompris.c	2006-05-09 20:51:10.000000000 +0200
 @@ -33,12 +33,13 @@
  
  #include "cursor.h"
@@ -330,13 +623,16 @@
    }
  #endif
  
-@@ -811,39 +802,18 @@
+@@ -811,39 +802,11 @@
   */
  void gcompris_set_fullscreen(gboolean state)
  {
 -
--  if(state)
--    {
++#ifdef XF86_VIDMODE
++  xf86_vidmode_set_fullscreen(state);
++#endif
+   if(state)
+     {
 -#ifdef XRANDR
 -      gint i;
 -      /* Search the 800x600 Resolution */
@@ -366,22 +662,11 @@
 -	      xrandr_set_config( xrandr );
 -	  }
 -      }
-+  properties->fullscreen = state;
-+  /* We need to grab the pointer before doing the vidmode switch otherwise the
-+     setviewport may be "canceled" by the pointer being outside the viewport */
-+  if(properties->fullscreen)
-+    gdk_pointer_grab(window->window, TRUE, 0, window->window, NULL,
-+      GDK_CURRENT_TIME);
-+     
-+#ifdef XF86_VIDMODE
-+  xf86_vidmode_set_fullscreen(properties->fullscreen);
- #endif
-+  if(properties->fullscreen)
-+    {
+-#endif
        gdk_window_set_decorations (window->window, 0);
        gdk_window_set_functions (window->window, 0);
        gtk_widget_set_uposition (window, 0, 0);
-@@ -851,20 +821,7 @@
+@@ -851,20 +814,6 @@
      }
    else
      { 
@@ -399,11 +684,53 @@
 -	}
 -      xr_previous_size_set = FALSE;
 -#endif
-+      gdk_pointer_ungrab(GDK_CURRENT_TIME);
        /* The hide must be done at least for KDE */
        gtk_widget_hide (window);
        gdk_window_set_decorations (window->window, GDK_DECOR_ALL);
-@@ -1044,68 +1001,136 @@
+@@ -876,6 +825,42 @@
+ 
+ }
+ 
++/* Use these instead of the gnome_canvas ones for proper fullscreen mousegrab
++   handling. */
++int gcompris_canvas_item_grab (GnomeCanvasItem *item, unsigned int event_mask,
++			    GdkCursor *cursor, guint32 etime)
++{
++  int retval;
++  
++  retval = gnome_canvas_item_grab(item, event_mask, cursor, etime);
++  if (retval != GDK_GRAB_SUCCESS)
++    return retval;
++  
++#ifdef XF86_VIDMODE
++  /* When fullscreen override mouse grab with our own which
++     confines the cursor to our fullscreen window */
++  if (properties->fullscreen && !properties->noxf86vm)
++    if (gdk_pointer_grab(item->canvas->layout.bin_window, FALSE, event_mask,
++          window->window, cursor, etime+1) != GDK_GRAB_SUCCESS) 
++      g_warning("Pointer grab failed");
++#endif
++  
++  return retval;
++}
++
++void gcompris_canvas_item_ungrab (GnomeCanvasItem *item, guint32 etime)
++{
++  gnome_canvas_item_ungrab(item, etime);
++#ifdef XF86_VIDMODE
++  /* When fullscreen restore the normal mouse grab which avoids
++     scrolling the virtual desktop */
++  if (properties->fullscreen && !properties->noxf86vm)
++    if (gdk_pointer_grab(window->window, TRUE, 0, window->window, NULL,
++          etime+1) != GDK_GRAB_SUCCESS)
++      g_warning("Pointer grab failed");
++#endif
++}
++
+ void gcompris_exit()
+ {
+   /* Do not loopback in exit */
+@@ -1044,68 +1029,129 @@
      g_printerr ("%s: %s\n\n", "gcompris", message);
  }
  
@@ -510,57 +837,49 @@
 +      if (!XF86VidModeGetModeLine(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
 +            gdk_screen_get_default()), &i, &mode))
 +        {
-+          g_warning("XF86VidMode couldnot get current mode, not switching resolution");
-+          properties->fullscreen = FALSE;
-+          return;
++          /* If we can't get the currentmode force setting of a new mode. */
++          mode.hdisplay = 0;
 +        }
 +        
 +      /* Do we need to switch? */
-+      if ((mode.hdisplay == BOARDWIDTH) &&
-+          (mode.vdisplay == BOARDHEIGHT+BARHEIGHT))
++      if ((mode.hdisplay != BOARDWIDTH) ||
++          (mode.vdisplay != BOARDHEIGHT+BARHEIGHT))
 +        {
-+          if (!XF86VidModeSetViewPort(GDK_DISPLAY(),
-+                GDK_SCREEN_XNUMBER(gdk_screen_get_default()), 0, 0))
-+            g_warning("XF86VidMode couldnot change viewport");
-+          return;
-+        }
++          if (!XF86VidModeGetAllModeLines(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
++                gdk_screen_get_default()), &mode_count, &modes))
++            mode_count = 0;
 +
-+      if (!XF86VidModeGetAllModeLines(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
-+            gdk_screen_get_default()), &mode_count, &modes))
-+        {
-+          g_warning("XF86VidMode couldnot get modes not switching resolution");
-+          properties->fullscreen = FALSE;
-+          return;
-+        }
-+
-+      for (i = 0; i < mode_count; i++)
-+        {
-+          if ((modes[i]->hdisplay == BOARDWIDTH) &&
-+              (modes[i]->vdisplay == BOARDHEIGHT+BARHEIGHT))
++          for (i = 0; i < mode_count; i++)
 +            {
-+              if (XF86VidModeSwitchToMode(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
-+                    gdk_screen_get_default()), modes[i]))
-+                {
-+                  XF86VidModeData.width  = modes[i]->hdisplay;
-+                  XF86VidModeData.height = modes[i]->vdisplay;
-+                  if (!XF86VidModeSetViewPort(GDK_DISPLAY(),
-+                        GDK_SCREEN_XNUMBER(gdk_screen_get_default()), 0, 0))
-+                    g_warning("XF86VidMode couldnot change viewport");
-+                }
-+              else
++              if ((modes[i]->hdisplay == BOARDWIDTH) &&
++                  (modes[i]->vdisplay == BOARDHEIGHT+BARHEIGHT))
 +                {
-+                  g_warning("XF86VidMode couldnot switch resolution");
-+                  properties->fullscreen = FALSE;
++                  if (XF86VidModeSwitchToMode(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
++                        gdk_screen_get_default()), modes[i]))
++                    {
++                      XF86VidModeData.width  = modes[i]->hdisplay;
++                      XF86VidModeData.height = modes[i]->vdisplay;
++                    }
++                  else
++                      g_warning("XF86VidMode couldnot switch resolution");
++                  break;
 +                }
-+              break;
 +            }
++          if (i == mode_count)
++            g_warning("XF86VidMode couldnot find a suitable resolution");
++          if (mode_count)
++            XFree(modes);
 +        }
-+      if (i == mode_count)
-+        {
-+          g_warning("XF86VidMode couldnot find a suitable resolution");
-+          properties->fullscreen = FALSE;
-+        }
-+      XFree(modes);
++        /* We need to grab the pointer before setting the viewport otherwise
++           setviewport may get "canceled" by the pointer being outside the
++           current viewport. */
++        if (gdk_pointer_grab(window->window, TRUE, 0, window->window, NULL,
++              GDK_CURRENT_TIME) != GDK_GRAB_SUCCESS)
++          g_warning("Pointer grab failed");
++           
++        if (!XF86VidModeSetViewPort(GDK_DISPLAY(),
++              GDK_SCREEN_XNUMBER(gdk_screen_get_default()), 0, 0))
++          g_warning("XF86VidMode couldnot change viewport");
 +    }
 +  else
 +    {
@@ -579,6 +898,7 @@
 +              g_warning("XF86VidMode couldnot restore original resolution");
 +            
 +        }
++      gdk_pointer_ungrab(GDK_CURRENT_TIME);
 +      if (XF86VidModeData.orig_viewport_x || XF86VidModeData.orig_viewport_y)
 +        if (!XF86VidModeSetViewPort(GDK_DISPLAY(), GDK_SCREEN_XNUMBER(
 +              gdk_screen_get_default()), XF86VidModeData.orig_viewport_x,
@@ -588,7 +908,7 @@
  }
  #endif
  
-@@ -1185,9 +1210,9 @@
+@@ -1185,9 +1231,9 @@
        properties->fullscreen = TRUE;
      }
  
@@ -600,8 +920,8 @@
      }
  
    if (popt_window)
---- gcompris-7.4/src/gcompris/properties.c.xf86vm	2006-05-07 00:25:10.000000000 +0200
-+++ gcompris-7.4/src/gcompris/properties.c	2006-05-07 00:25:10.000000000 +0200
+--- gcompris-7.4/src/gcompris/properties.c.xf86vm	2006-05-09 19:51:54.000000000 +0200
++++ gcompris-7.4/src/gcompris/properties.c	2006-05-09 19:51:54.000000000 +0200
 @@ -160,7 +160,7 @@
    tmp->fx		 = 1;
    tmp->screensize	 = 1;
@@ -622,8 +942,8 @@
  	    g_warning("Config file parsing error on token %s", token);
  	} else if(!strcmp(value.v_identifier, "timer")) {
  	  if(!scan_get_int(scanner, &tmp->timer))
---- gcompris-7.4/src/gcompris/properties.h.xf86vm	2006-05-07 00:25:10.000000000 +0200
-+++ gcompris-7.4/src/gcompris/properties.h	2006-05-07 00:25:10.000000000 +0200
+--- gcompris-7.4/src/gcompris/properties.h.xf86vm	2006-05-09 19:51:54.000000000 +0200
++++ gcompris-7.4/src/gcompris/properties.h	2006-05-09 19:51:54.000000000 +0200
 @@ -28,7 +28,7 @@
    gint		music;
    gint		fx;
@@ -634,7 +954,7 @@
    gint		defaultcursor;
    gint		timer;
 --- gcompris-7.4/configure.in.xf86vm	2006-04-12 01:06:34.000000000 +0200
-+++ gcompris-7.4/configure.in	2006-05-07 00:25:10.000000000 +0200
++++ gcompris-7.4/configure.in	2006-05-09 19:51:54.000000000 +0200
 @@ -81,30 +81,30 @@
  
  AM_ICONV


Index: gcompris.spec
===================================================================
RCS file: /cvs/extras/rpms/gcompris/devel/gcompris.spec,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- gcompris.spec	7 May 2006 06:37:37 -0000	1.6
+++ gcompris.spec	9 May 2006 19:16:54 -0000	1.7
@@ -1,6 +1,6 @@
 Name:           gcompris
 Version:        7.4
-Release:        8%{?dist}
+Release:        9%{?dist}
 Summary:        Educational suite for kids 2-10 years old
 Group:          Amusements/Games
 License:        GPL
@@ -479,6 +479,9 @@
 
 
 %changelog
+* Tue May  9 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 7.4-9
+- Fix 2 bugs introduced by the fix for bug 190918, see the bug for details.
+
 * Sun May  7 2006 Hans de Goede <j.w.r.degoede at hhs.nl> 7.4-8
 - Change Xrandr BR to Xxf86vm BR.
 




More information about the fedora-extras-commits mailing list