Merge branch '7.8'
[mesa.git] / src / gallium / state_trackers / xorg / xorg_driver.c
index 8fb6e5a96ddd174523259a26370d576a48579354..8ac5179545a1fb147b9bc2daf8eacaaa76a4710f 100644 (file)
@@ -922,6 +922,11 @@ drv_close_screen(int scrnIndex, ScreenPtr pScreen)
        drv_leave_vt(scrnIndex, 0);
     }
 
+    if (ms->cursor) {
+       FreeCursor(ms->cursor, None);
+       ms->cursor = NULL;
+    }
+
     if (cust && cust->winsys_screen_close)
        cust->winsys_screen_close(cust);
 
@@ -989,8 +994,9 @@ static Bool
 drv_create_front_buffer_ga3d(ScrnInfoPtr pScrn)
 {
     modesettingPtr ms = modesettingPTR(pScrn);
-    unsigned handle, stride, fb_id;
     struct pipe_texture *tex;
+    struct winsys_handle whandle;
+    unsigned fb_id;
     int ret;
 
     ms->noEvict = TRUE;
@@ -1001,10 +1007,10 @@ drv_create_front_buffer_ga3d(ScrnInfoPtr pScrn)
     if (!tex)
        return FALSE;
 
-    if (!ms->api->local_handle_from_texture(ms->api, ms->screen,
-                                           tex,
-                                           &stride,
-                                           &handle))
+    memset(&whandle, 0, sizeof(whandle));
+    whandle.type = DRM_API_HANDLE_TYPE_KMS;
+
+    if (!ms->screen->texture_get_handle(ms->screen, tex, &whandle))
        goto err_destroy;
 
     ret = drmModeAddFB(ms->fd,
@@ -1012,8 +1018,8 @@ drv_create_front_buffer_ga3d(ScrnInfoPtr pScrn)
                       pScrn->virtualY,
                       pScrn->depth,
                       pScrn->bitsPerPixel,
-                      stride,
-                      handle,
+                      whandle.stride,
+                      whandle.handle,
                       &fb_id);
     if (ret) {
        debug_printf("%s: failed to create framebuffer (%i, %s)\n",