Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 216621
Collapse All | Expand All

(-)src/event.c.orig (-22 / +32 lines)
Lines 2209-2249 handleEvent (CompDisplay *d, Link Here
2209
2209
2210
	    if (w)
2210
	    if (w)
2211
	    {
2211
	    {
2212
	    	XserverRegion parts = XFixesCreateRegion(de->display, NULL, 0);
2213
		XRectangle *rects;
2214
		int nRects;
2215
2212
		w->texture->oldMipmaps = TRUE;
2216
		w->texture->oldMipmaps = TRUE;
2213
2217
2218
		// Get the damage region
2219
		XDamageSubtract(de->display, de->damage, None, parts);
2220
		rects = XFixesFetchRegion(de->display, parts, &nRects);
2221
		XFixesDestroyRegion(de->display, parts);
2222
2214
		if (w->syncWait)
2223
		if (w->syncWait)
2215
		{
2224
		{
2216
		    if (w->nDamage == w->sizeDamage)
2225
		    int i;
2226
2227
		    if (w->nDamage + nRects - 1 >= w->sizeDamage)
2217
		    {
2228
		    {
2218
			if (w->damageRects)
2229
			w->damageRects = realloc (w->damageRects,
2219
			{
2230
						      (w->sizeDamage + nRects) *
2220
			    w->damageRects = realloc (w->damageRects,
2221
						      (w->sizeDamage + 1) *
2222
						      sizeof (XRectangle));
2231
						      sizeof (XRectangle));
2223
			    w->sizeDamage += 1;
2232
			w->sizeDamage += nRects;
2224
			}
2225
			else
2226
			{
2227
			    w->damageRects = malloc (sizeof (XRectangle));
2228
			    w->sizeDamage  = 1;
2229
			}
2230
		    }
2233
		    }
2231
2234
2232
		    w->damageRects[w->nDamage].x      = de->area.x;
2235
		    for (i = 0; i < nRects; i++)
2233
		    w->damageRects[w->nDamage].y      = de->area.y;
2236
		    {
2234
		    w->damageRects[w->nDamage].width  = de->area.width;
2237
		    	w->damageRects[w->nDamage] = rects[i];
2235
		    w->damageRects[w->nDamage].height = de->area.height;
2238
		    	w->nDamage++;
2236
		    w->nDamage++;
2239
		    }
2237
		}
2240
		}
2238
		else
2241
		else
2239
		{
2242
		{
2240
		    handleWindowDamageRect (w,
2243
			int i;
2241
					    de->area.x,
2244
			
2242
					    de->area.y,
2245
			for (i = 0; i < nRects; i++)
2243
					    de->area.width,
2246
			{
2244
					    de->area.height);
2247
				handleWindowDamageRect (w,
2248
				                        rects[i].x,
2249
							rects[i].y,
2250
							rects[i].width,
2251
							rects[i].height);
2252
			}
2245
		}
2253
		}
2254
	    	free(rects);
2246
	    }
2255
	    }
2256
2247
	}
2257
	}
2248
	else if (d->shapeExtension &&
2258
	else if (d->shapeExtension &&
2249
		 event->type == d->shapeEvent + ShapeNotify)
2259
		 event->type == d->shapeEvent + ShapeNotify)
(-)src/window.c.orig (-1 / +1 lines)
Lines 2112-2118 addWindow (CompScreen *screen, Link Here
2112
	XUnionRegion (&rect, w->region, w->region);
2112
	XUnionRegion (&rect, w->region, w->region);
2113
2113
2114
	w->damage = XDamageCreate (screen->display->display, id,
2114
	w->damage = XDamageCreate (screen->display->display, id,
2115
				   XDamageReportRawRectangles);
2115
				   XDamageReportNonEmpty);
2116
2116
2117
	/* need to check for DisplayModal state on all windows */
2117
	/* need to check for DisplayModal state on all windows */
2118
	w->state = getWindowState (screen->display, w->id);
2118
	w->state = getWindowState (screen->display, w->id);

Return to bug 216621