示例#1
0
文件: dri3.c 项目: sarnex/wine
BOOL
DRI2FallbackCheckSupport(Display *dpy)
{
    struct DRI2priv *priv;
    int fd;
    if (!DRI2FallbackInit(dpy, &priv))
        return FALSE;
    DRI2FallbackDestroy(priv);
    if (!DRI2FallbackOpen(dpy, DefaultScreen(dpy), &fd))
        return FALSE;
    close(fd);
    return TRUE;
}
示例#2
0
文件: SDL_nine.c 项目: EoD/Xnine
static HRESULT
DRI3Present_new( SDL_Window* sdl_win,
                 D3DPRESENT_PARAMETERS *params,
                 struct DRI3Present **out )
{
    struct DRI3Present *This;

    if (!sdl_win) {
        ERR("No SDL_Window specified for presentation backend.\n");
        return D3DERR_INVALIDCALL;
    }

    SDL_SysWMinfo info;
    SDL_VERSION(&info.version);
    SDL_bool Ok = SDL_GetWindowWMInfo(sdl_win, &info);
    if (!Ok) {
        ERR("Invalid SDL_Window specified for presentation backend.\n");
        return D3DERR_INVALIDCALL;
    }

    This = calloc(1, sizeof(struct DRI3Present));
    if (!This) {
        return E_OUTOFMEMORY;
    }

    This->vtable = &DRI3Present_vtable;
    This->refs = 1;
    This->sdl_win = sdl_win;
    This->x11_display = info.info.x11.display;
    This->x11_window = info.info.x11.window;

    DRI3Present_ChangePresentParameters(This, params, TRUE);

    PRESENTInit(info.info.x11.display, &(This->present_priv));
#if D3DADAPTER9_WITHDRI2
    if (is_dri2_fallback)
        DRI2FallbackInit(info.info.x11.display, &(This->dri2_priv));
#endif

    *out = This;

    return D3D_OK;
}