Reviewed-by: Alexandre Demers <alexandre.f.demers at gmail.com> On 2016-07-05 23:49, Michel Dänzer wrote: > From: Michel Dänzer <michel.daenzer at amd.com> > > Should make the radeon_drm_queue_alloc error handling clearer, and gets > rid of a compile warning about it returning NULL. > > Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> > --- > src/drmmode_display.c | 2 +- > src/radeon_dri2.c | 4 ++-- > src/radeon_drm_queue.c | 7 ++++--- > src/radeon_drm_queue.h | 2 ++ > src/radeon_kms.c | 4 ++-- > 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 50de0be..d3af20d 100644 > --- a/src/drmmode_display.c > +++ b/src/drmmode_display.c > @@ -2812,7 +2812,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 62325bd..c55e6ee 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 0d999dd..31f2435 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 0d9d278..c3e2076 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 20388e8..a8af160 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 69a0532..93c18a8 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; > }