Lines Matching refs:damage

32 struct sna_damage *__sna_damage_all(struct sna_damage *damage,
35 _sna_damage_all(struct sna_damage *damage,
38 damage = __sna_damage_all(damage, width, height);
39 return DAMAGE_MARK_ALL(damage);
42 static inline void sna_damage_all(struct sna_damage **damage,
45 if (!DAMAGE_IS_ALL(*damage))
46 *damage = _sna_damage_all(*damage,
62 fastcall struct sna_damage *_sna_damage_add(struct sna_damage *damage,
64 static inline void sna_damage_add(struct sna_damage **damage,
67 assert(!DAMAGE_IS_ALL(*damage));
68 *damage = _sna_damage_add(*damage, region);
71 static inline bool sna_damage_add_to_pixmap(struct sna_damage **damage,
75 assert(!DAMAGE_IS_ALL(*damage));
79 *damage = _sna_damage_all(*damage,
84 *damage = _sna_damage_add(*damage, region);
89 fastcall struct sna_damage *_sna_damage_add_box(struct sna_damage *damage,
91 static inline void sna_damage_add_box(struct sna_damage **damage,
94 assert(!DAMAGE_IS_ALL(*damage));
95 *damage = _sna_damage_add_box(*damage, box);
98 struct sna_damage *_sna_damage_add_boxes(struct sna_damage *damage,
101 static inline void sna_damage_add_boxes(struct sna_damage **damage,
105 assert(!DAMAGE_IS_ALL(*damage));
106 *damage = _sna_damage_add_boxes(*damage, box, n, dx, dy);
109 struct sna_damage *_sna_damage_add_rectangles(struct sna_damage *damage,
112 static inline void sna_damage_add_rectangles(struct sna_damage **damage,
116 if (damage) {
117 assert(!DAMAGE_IS_ALL(*damage));
118 *damage = _sna_damage_add_rectangles(*damage, r, n, dx, dy);
122 struct sna_damage *_sna_damage_add_points(struct sna_damage *damage,
125 static inline void sna_damage_add_points(struct sna_damage **damage,
129 if (damage) {
130 assert(!DAMAGE_IS_ALL(*damage));
131 *damage = _sna_damage_add_points(*damage, p, n, dx, dy);
135 struct sna_damage *_sna_damage_is_all(struct sna_damage *damage,
140 struct sna_damage *damage = *_damage;
142 if (damage == NULL)
144 if (DAMAGE_IS_ALL(damage))
147 switch (damage->mode) {
156 if (damage->extents.x2 < width || damage->extents.x1 > 0)
158 if (damage->extents.y2 < height || damage->extents.y1 > 0)
160 damage = _sna_damage_is_all(damage, width, height);
161 if (damage->mode == DAMAGE_ALL) {
162 *_damage = DAMAGE_MARK_ALL(damage);
165 *_damage = damage;
171 fastcall struct sna_damage *_sna_damage_subtract(struct sna_damage *damage,
173 static inline void sna_damage_subtract(struct sna_damage **damage,
176 *damage = _sna_damage_subtract(DAMAGE_PTR(*damage), region);
177 assert(*damage == NULL || (*damage)->mode != DAMAGE_ALL);
180 fastcall struct sna_damage *_sna_damage_subtract_box(struct sna_damage *damage,
182 static inline void sna_damage_subtract_box(struct sna_damage **damage,
185 *damage = _sna_damage_subtract_box(DAMAGE_PTR(*damage), box);
186 assert(*damage == NULL || (*damage)->mode != DAMAGE_ALL);
189 fastcall struct sna_damage *_sna_damage_subtract_boxes(struct sna_damage *damage,
192 static inline void sna_damage_subtract_boxes(struct sna_damage **damage,
196 *damage = _sna_damage_subtract_boxes(DAMAGE_PTR(*damage),
198 assert(*damage == NULL || (*damage)->mode != DAMAGE_ALL);
201 bool _sna_damage_intersect(struct sna_damage *damage,
204 static inline bool sna_damage_intersect(struct sna_damage *damage,
207 assert(damage);
209 assert(!DAMAGE_IS_ALL(damage));
211 return _sna_damage_intersect(damage, region, result);
215 sna_damage_overlaps_box(const struct sna_damage *damage,
218 if (box->x2 <= damage->extents.x1 ||
219 box->x1 >= damage->extents.x2)
222 if (box->y2 <= damage->extents.y1 ||
223 box->y1 >= damage->extents.y2)
229 int _sna_damage_contains_box(struct sna_damage **damage,
231 static inline int sna_damage_contains_box(struct sna_damage **damage,
234 if (DAMAGE_IS_ALL(*damage))
236 if (*damage == NULL)
239 return _sna_damage_contains_box(damage, box);
241 static inline int sna_damage_contains_box__offset(struct sna_damage **damage,
246 if (DAMAGE_IS_ALL(*damage))
248 if (*damage == NULL)
254 return _sna_damage_contains_box(damage, &b);
256 bool _sna_damage_contains_box__no_reduce(const struct sna_damage *damage,
259 sna_damage_contains_box__no_reduce(const struct sna_damage *damage,
262 assert(!DAMAGE_IS_ALL(damage));
263 return _sna_damage_contains_box__no_reduce(damage, box);
266 int _sna_damage_get_boxes(struct sna_damage *damage, const BoxRec **boxes);
268 sna_damage_get_boxes(struct sna_damage *damage, const BoxRec **boxes)
270 assert(damage);
272 if (DAMAGE_IS_ALL(damage)) {
273 *boxes = &DAMAGE_PTR(damage)->extents;
276 return _sna_damage_get_boxes(damage, boxes);
279 struct sna_damage *_sna_damage_reduce(struct sna_damage *damage);
280 static inline void sna_damage_reduce(struct sna_damage **damage)
282 if (*damage == NULL)
285 if (!DAMAGE_IS_ALL(*damage) && (*damage)->dirty)
286 *damage = _sna_damage_reduce(*damage);
292 struct sna_damage *damage = *_damage;
294 if (damage == NULL || DAMAGE_IS_ALL(damage))
299 if (damage->mode == DAMAGE_ADD) {
300 if (damage->extents.x1 <= 0 &&
301 damage->extents.y1 <= 0 &&
302 damage->extents.x2 >= pixmap->drawable.width &&
303 damage->extents.y2 >= pixmap->drawable.height) {
304 if (damage->dirty) {
305 damage = *_damage = _sna_damage_reduce(damage);
306 if (damage == NULL)
310 if (damage->region.data == NULL)
311 *_damage = _sna_damage_all(damage,
316 *_damage = _sna_damage_reduce(damage);
319 void __sna_damage_destroy(struct sna_damage *damage);
320 static inline void sna_damage_destroy(struct sna_damage **damage)
322 if (*damage == NULL)
325 __sna_damage_destroy(DAMAGE_PTR(*damage));
326 *damage = NULL;
329 void _sna_damage_debug_get_region(struct sna_damage *damage, RegionRec *r);