diff options
-rw-r--r-- | src/drmmode_display.c | 2 | ||||
-rw-r--r-- | src/radeon_dri2.c | 4 | ||||
-rw-r--r-- | src/radeon_drm_queue.c | 7 | ||||
-rw-r--r-- | src/radeon_drm_queue.h | 2 | ||||
-rw-r--r-- | src/radeon_kms.c | 4 | ||||
-rw-r--r-- | src/radeon_present.c | 2 |
6 files changed, 12 insertions, 9 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c index b1de9520..7d2ce1fb 100644 --- a/src/drmmode_display.c +++ b/src/drmmode_display.c @@ -2792,7 +2792,7 @@ Bool radeon_do_pageflip(ScrnInfoPtr scrn, ClientPtr client, flipdata, drmmode_flip_handler, drmmode_flip_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Allocating DRM queue event entry failed.\n"); goto error; diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c index 62325bde..c55e6ee8 100644 --- a/src/radeon_dri2.c +++ b/src/radeon_dri2.c @@ -1201,7 +1201,7 @@ static int radeon_dri2_schedule_wait_msc(ClientPtr client, DrawablePtr draw, drm_queue_seq = radeon_drm_queue_alloc(crtc, client, RADEON_DRM_QUEUE_ID_DEFAULT, wait_info, radeon_dri2_frame_event_handler, radeon_dri2_frame_event_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Allocating DRM queue event entry failed.\n"); goto out_complete; @@ -1348,7 +1348,7 @@ static int radeon_dri2_schedule_swap(ClientPtr client, DrawablePtr draw, drm_queue_seq = radeon_drm_queue_alloc(crtc, client, RADEON_DRM_QUEUE_ID_DEFAULT, swap_info, radeon_dri2_frame_event_handler, radeon_dri2_frame_event_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Allocating DRM queue entry failed.\n"); goto blit_fallback; diff --git a/src/radeon_drm_queue.c b/src/radeon_drm_queue.c index 0d999dde..31f24350 100644 --- a/src/radeon_drm_queue.c +++ b/src/radeon_drm_queue.c @@ -92,10 +92,11 @@ radeon_drm_queue_alloc(xf86CrtcPtr crtc, ClientPtr client, e = calloc(1, sizeof(struct radeon_drm_queue_entry)); if (!e) - return NULL; + return RADEON_DRM_QUEUE_ERROR; + + if (_X_UNLIKELY(radeon_drm_queue_seq == RADEON_DRM_QUEUE_ERROR)) + radeon_drm_queue_seq++; - if (!radeon_drm_queue_seq) - radeon_drm_queue_seq = 1; e->seq = radeon_drm_queue_seq++; e->client = client; e->crtc = crtc; diff --git a/src/radeon_drm_queue.h b/src/radeon_drm_queue.h index 0d9d278d..c3e2076d 100644 --- a/src/radeon_drm_queue.h +++ b/src/radeon_drm_queue.h @@ -29,6 +29,8 @@ #ifndef _RADEON_DRM_QUEUE_H_ #define _RADEON_DRM_QUEUE_H_ +#define RADEON_DRM_QUEUE_ERROR 0 + #define RADEON_DRM_QUEUE_CLIENT_DEFAULT serverClient #define RADEON_DRM_QUEUE_ID_DEFAULT ~0ULL diff --git a/src/radeon_kms.c b/src/radeon_kms.c index 41ee597a..63886695 100644 --- a/src/radeon_kms.c +++ b/src/radeon_kms.c @@ -529,7 +529,7 @@ radeon_scanout_update(xf86CrtcPtr xf86_crtc) drmmode_crtc, radeon_scanout_update_handler, radeon_scanout_update_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { xf86DrvMsg(scrn->scrnIndex, X_WARNING, "radeon_drm_queue_alloc failed for scanout update\n"); return; @@ -581,7 +581,7 @@ radeon_scanout_flip(ScreenPtr pScreen, RADEONInfoPtr info, RADEON_DRM_QUEUE_ID_DEFAULT, drmmode_crtc, NULL, radeon_scanout_flip_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { xf86DrvMsg(scrn->scrnIndex, X_WARNING, "Allocating DRM event queue entry failed.\n"); return; diff --git a/src/radeon_present.c b/src/radeon_present.c index 1eced4ad..52943fb9 100644 --- a/src/radeon_present.c +++ b/src/radeon_present.c @@ -169,7 +169,7 @@ radeon_present_queue_vblank(RRCrtcPtr crtc, uint64_t event_id, uint64_t msc) event_id, event, radeon_present_vblank_handler, radeon_present_vblank_abort); - if (!drm_queue_seq) { + if (drm_queue_seq == RADEON_DRM_QUEUE_ERROR) { free(event); return BadAlloc; } |