#include <util/u_memory.h>
#include <util/u_hash.h>
#include <util/u_hash_table.h>
-#include <state_tracker/drm_api.h>
+#include <state_tracker/drm_driver.h>
#include <X11/Xlibint.h>
struct vl_dri_screen
{
struct vl_screen base;
- struct drm_api *api;
dri_screen_t *dri_screen;
struct util_hash_table *drawable_table;
Drawable last_seen_drawable;
vl_screen_create(Display *display, int screen)
{
struct vl_dri_screen *vl_dri_scrn;
- struct drm_create_screen_arg arg;
assert(display);
if (dri2CreateScreen(display, screen, &vl_dri_scrn->dri_screen))
goto no_dri2screen;
- vl_dri_scrn->api = drm_api_create();
- if (!vl_dri_scrn->api)
- goto no_drmapi;
-
- arg.mode = DRM_CREATE_NORMAL;
-
- vl_dri_scrn->base.pscreen = vl_dri_scrn->api->create_screen(vl_dri_scrn->api,
- vl_dri_scrn->dri_screen->fd,
- &arg);
+ vl_dri_scrn->base.pscreen = driver_descriptor.create_screen(vl_dri_scrn->dri_screen->fd);
if (!vl_dri_scrn->base.pscreen)
goto no_pscreen;
no_hash:
vl_dri_scrn->base.pscreen->destroy(vl_dri_scrn->base.pscreen);
no_pscreen:
- vl_dri_scrn->api->destroy(vl_dri_scrn->api);
-no_drmapi:
dri2DestroyScreen(vl_dri_scrn->dri_screen);
no_dri2screen:
FREE(vl_dri_scrn);
util_hash_table_foreach(vl_dri_scrn->drawable_table, drawable_destroy, vl_dri_scrn);
util_hash_table_destroy(vl_dri_scrn->drawable_table);
vl_dri_scrn->base.pscreen->destroy(vl_dri_scrn->base.pscreen);
- if (vl_dri_scrn->api->destroy)
- vl_dri_scrn->api->destroy(vl_dri_scrn->api);
dri2DestroyScreen(vl_dri_scrn->dri_screen);
FREE(vl_dri_scrn);
}