From 7710fc25a86323c8e9ecc6d71639971f9ee2cf70 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Tue, 10 Apr 2012 12:23:35 +0000 Subject: Re #1446 (misc): Modify SDL dev to: * Resize renderer (instead of recreating it) if format does not change. * Create window in the requested position if PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION is specified. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4035 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-videodev/sdl_dev.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c index b78c858f..78b520ed 100644 --- a/pjmedia/src/pjmedia-videodev/sdl_dev.c +++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c @@ -734,6 +734,14 @@ static pj_status_t sdl_create_rend(struct sdl_stream * strm, strm->window = SDL_CreateWindowFrom( strm->param.window.info.window); } else { + int x, y; + + x = y = SDL_WINDOWPOS_CENTERED; + if (strm->param.flags & PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION) { + x = strm->param.window_pos.x; + y = strm->param.window_pos.y; + } + /* Create the window where we will draw. */ strm->window = SDL_CreateWindow("pjmedia-SDL video", SDL_WINDOWPOS_CENTERED, @@ -830,6 +838,12 @@ static pj_status_t change_format(struct sdl_stream *strm, { pj_status_t status; + if (new_fmt->id == strm->param.fmt.id) { + SDL_SetWindowSize(strm->window, new_fmt->det.vid.size.w, + new_fmt->det.vid.size.h); + return resize_disp(strm, &new_fmt->det.vid.size); + } + /* Recreate SDL renderer */ status = sdl_create_rend(strm, (new_fmt? new_fmt : &strm->param.fmt)); @@ -934,13 +948,6 @@ static pj_status_t sdl_factory_create_stream( pj_list_insert_after(&strm->sf->streams, &strm->list_entry); pj_mutex_unlock(strm->sf->mutex); - /* Apply the remaining settings */ - if (param->flags & PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION) { - sdl_stream_set_cap(&strm->base, - PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION, - ¶m->window_pos); - } - /* Done */ strm->base.op = &stream_op; *p_vid_strm = &strm->base; -- cgit v1.2.3