extern jmp_buf sigjmp[4];
extern volatile sig_atomic_t sigtrap;
-#define sigtrap_assert() assert(sigtrap == 0)
+#define sigtrap_assert_inactive() assert(sigtrap == 0)
+#define sigtrap_assert_active() assert(sigtrap > 0 && sigtrap <= ARRAY_SIZE(sigjmp))
#define sigtrap_get() sigsetjmp(sigjmp[sigtrap++], 1)
static inline void sigtrap_put(void)
{
- assert(sigtrap > 0);
+ sigtrap_assert_active();
--sigtrap;
}
void sna_accel_block_handler(struct sna *sna, struct timeval **tv)
{
- sigtrap_assert();
+ sigtrap_assert_inactive();
if (sna->kgem.need_retire)
kgem_retire(&sna->kgem);
_kgem_submit(&sna->kgem);
}
- sigtrap_assert();
+ sigtrap_assert_inactive();
}
void sna_accel_free(struct sna *sna)
{
DBG(("%s\n", __FUNCTION__));
- sigtrap_assert();
+ sigtrap_assert_inactive();
}
assert(box->x2 > box->x1 && box->y2 > box->y1);
+ sigtrap_assert_active();
memcpy_blt(src_pixmap->devPrivate.ptr,
dst_pixmap->devPrivate.ptr,
dst_pixmap->drawable.bitsPerPixel,
if (src_image && dest_image && !(mask && !mask_image)) {
if (sigtrap_get() == 0) {
+ sigtrap_assert_active();
sna_image_composite(op, src_image, mask_image, dest_image,
src_x + src_xoff, src_y + src_yoff,
msk_x + msk_xoff, msk_y + msk_yoff,
dst->format))
goto fallback_composite;
+ sigtrap_assert_active();
if (pixel == 0 &&
box->x2 - box->x1 == pixmap->drawable.width &&
box->y2 - box->y1 == pixmap->drawable.height) {