Ejemplo n.º 1
0
static int AndroidWindow_ConnectSurface(vout_display_sys_t *sys,
                                        android_window *p_window)
{
    if (!p_window->p_handle && !p_window->b_opaque) {
        p_window->p_handle = AWindowHandler_getANativeWindow(sys->p_awh,
                                                             p_window->id);
        if (!p_window->p_handle)
            return -1;
    }

    return 0;
}
Ejemplo n.º 2
0
/**
 * Create an Android native window.
 */
static int Open(vout_window_t *wnd, const vout_window_cfg_t *cfg)
{
    ANativeWindow *p_anw;

    if (cfg->type != VOUT_WINDOW_TYPE_INVALID
            && cfg->type != VOUT_WINDOW_TYPE_ANDROID_NATIVE)
        return VLC_EGENERIC;

    vout_window_sys_t *p_sys = malloc(sizeof (*p_sys));
    if (p_sys == NULL)
        return VLC_ENOMEM;

    p_sys->p_awh = AWindowHandler_new(VLC_OBJECT(wnd));
    if (!p_sys->p_awh)
        goto error;
    p_anw = AWindowHandler_getANativeWindow(p_sys->p_awh, AWindow_Video);
    if (!p_anw)
        goto error;

    wnd->type = VOUT_WINDOW_TYPE_ANDROID_NATIVE;
    wnd->handle.anativewindow = p_anw;
    wnd->control = Control;
    wnd->sys = p_sys;

    // Set the Java surface size.
    AWindowHandler_setWindowLayout(p_sys->p_awh, cfg->width, cfg->height,
                                   cfg->width, cfg->height, 1, 1);

    return VLC_SUCCESS;

error:
    if (p_sys->p_awh)
        AWindowHandler_destroy(p_sys->p_awh);
    free(p_sys);
    return VLC_EGENERIC;
}