I've added a new option in minimize plugin, called "Disable Fading".
To prevent tearing, damageScreen is used minDonePaintScreen (only if the
option is used).

The patch is attached.
--- minimize_orig.c	2007-01-27 08:30:23.000000000 +0100
+++ minimize.c	2007-01-28 17:21:23.000000000 +0100
@@ -45,6 +45,8 @@
 #define MIN_SHADE_RESISTANCE_MIN       0
 #define MIN_SHADE_RESISTANCE_MAX       100
 
+#define MIN_DISABLE_FADING_DEFAULT       FALSE
+
 static char *winType[] = {
     N_("Toolbar"),
     N_("Utility"),
@@ -66,7 +68,8 @@
 #define MIN_SCREEN_OPTION_TIMESTEP	   1
 #define MIN_SCREEN_OPTION_WINDOW_TYPE	   2
 #define MIN_SCREEN_OPTION_SHADE_RESISTANCE 3
-#define MIN_SCREEN_OPTION_NUM		   4
+#define MIN_SCREEN_OPTION_DISABLE_FADING 4
+#define MIN_SCREEN_OPTION_NUM		   5
 
 typedef struct _MinScreen {
     int	windowPrivateIndex;
@@ -185,6 +188,10 @@
 
 	    return TRUE;
 	}
+	break;
+	case MIN_SCREEN_OPTION_DISABLE_FADING:
+	if (compSetBoolOption (o, value))
+	    return TRUE;
     default:
 	break;
     }
@@ -242,6 +249,13 @@
     o->value.i		= MIN_SHADE_RESISTANCE_DEFAULT;
     o->rest.i.min	= MIN_SHADE_RESISTANCE_MIN;
     o->rest.i.max	= MIN_SHADE_RESISTANCE_MAX;
+    
+    o = &ms->opt[MIN_SCREEN_OPTION_DISABLE_FADING];
+    o->name	  = "disable_fading";
+    o->shortDesc  = N_("Disable Fading");
+    o->longDesc	  = N_("Disable fading when minimizing");
+    o->type	  = CompOptionTypeBool;
+    o->value.b    = MIN_DISABLE_FADING_DEFAULT;
 }
 
 static void
@@ -585,6 +599,9 @@
     UNWRAP (ms, s, donePaintScreen);
     (*s->donePaintScreen) (s);
     WRAP (ms, s, donePaintScreen, minDonePaintScreen);
+
+    if (ms->opt[MIN_SCREEN_OPTION_DISABLE_FADING].value.b)
+        damageScreen(s);
 }
 
 static Bool
@@ -644,9 +661,11 @@
 	glPushMatrix ();
 	glLoadMatrixf (wTransform.m);
 
+	if (ms->opt[MIN_SCREEN_OPTION_DISABLE_FADING].value.b)
+		fragment.opacity = OPAQUE;
+
 	(*s->drawWindow) (w, &wTransform, &fragment, region,
 			  mask | PAINT_WINDOW_TRANSFORMED_MASK);
-
 	glPopMatrix ();
     }
     else
_______________________________________________
compiz mailing list
compiz@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/compiz

Reply via email to