summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drmmode_display.c2
-rw-r--r--src/radeon_dri2.c4
-rw-r--r--src/radeon_drm_queue.c7
-rw-r--r--src/radeon_drm_queue.h2
-rw-r--r--src/radeon_kms.c4
-rw-r--r--src/radeon_present.c2
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;
}