diff options
-rw-r--r-- | src/amdgpu_pixmap.h | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/amdgpu_pixmap.h b/src/amdgpu_pixmap.h index 0cff195..6720458 100644 --- a/src/amdgpu_pixmap.h +++ b/src/amdgpu_pixmap.h @@ -143,21 +143,22 @@ static inline struct drmmode_fb* amdgpu_pixmap_get_fb(PixmapPtr pix) { struct drmmode_fb **fb_ptr = amdgpu_pixmap_get_fb_ptr(pix); + uint32_t handle; - if (!fb_ptr) - return NULL; - - if (!*fb_ptr) { - uint32_t handle; + if (fb_ptr && *fb_ptr) + return *fb_ptr; + + if (amdgpu_pixmap_get_handle(pix, &handle)) { + ScrnInfoPtr scrn = xf86ScreenToScrn(pix->drawable.pScreen); + AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(scrn); - if (amdgpu_pixmap_get_handle(pix, &handle)) { - ScrnInfoPtr scrn = xf86ScreenToScrn(pix->drawable.pScreen); - AMDGPUEntPtr pAMDGPUEnt = AMDGPUEntPriv(scrn); + if (!fb_ptr) + fb_ptr = amdgpu_pixmap_get_fb_ptr(pix); - *fb_ptr = amdgpu_fb_create(scrn, pAMDGPUEnt->fd, pix->drawable.width, - pix->drawable.height, pix->devKind, - handle); - } + *fb_ptr = amdgpu_fb_create(scrn, pAMDGPUEnt->fd, + pix->drawable.width, + pix->drawable.height, pix->devKind, + handle); } return *fb_ptr; |