From 2f5438b0eab01ab38093964d9658331aaac3aea2 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Mon, 15 Aug 2011 22:06:40 +0000 Subject: Re #1285: Updates for SDL 1.3 only: - Changed window mode from 'resizable' to 'borderless'. - Fixed window resize handling so resizing won't need destroy-recreate the SDL objects (this also fixes lost-focus problem in resizing window on Windows platform). git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3698 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-videodev/sdl_dev.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'pjmedia/src/pjmedia-videodev/sdl_dev.c') diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c index 3d2d6847..bcd69dfd 100644 --- a/pjmedia/src/pjmedia-videodev/sdl_dev.c +++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c @@ -540,7 +540,8 @@ static pj_status_t sdl_create_view(struct sdl_stream *strm, #if SDL_VERSION_ATLEAST(1,3,0) if (!strm->window) { - Uint32 flags = SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE; + Uint32 flags = SDL_WINDOW_SHOWN | /*SDL_WINDOW_RESIZABLE*/ + SDL_WINDOW_BORDERLESS; # if PJMEDIA_VIDEO_DEV_SDL_HAS_OPENGL if (strm->param.rend_id == OPENGL_DEV_IDX) @@ -690,9 +691,21 @@ static void detect_fmt_change(struct sdl_stream *strm) { strm->status = PJ_SUCCESS; if (strm->new_fmt || strm->new_disp_size) { - if (strm->new_disp_size) - pj_memcpy(&strm->param.disp_size, strm->new_disp_size, + if (strm->new_disp_size) { + pj_memcpy(&strm->param.disp_size, strm->new_disp_size, sizeof(strm->param.disp_size)); +#if SDL_VERSION_ATLEAST(1,3,0) + if (strm->scr_tex) { + strm->dstrect.x = strm->dstrect.y = 0; + strm->dstrect.w = (Uint16)strm->param.disp_size.w; + strm->dstrect.h = (Uint16)strm->param.disp_size.h; + SDL_RenderSetViewport(strm->renderer, &strm->dstrect); + strm->new_fmt = NULL; + strm->new_disp_size = NULL; + return; + } +#endif + } /* Re-initialize SDL */ strm->status = sdl_create_view(strm, (strm->new_fmt? strm->new_fmt : @@ -754,7 +767,8 @@ static pj_status_t put_frame(struct sdl_stream *stream, else if (stream->scr_tex) { SDL_UpdateTexture(stream->scr_tex, NULL, frame->buf, stream->pitch); SDL_RenderClear(stream->renderer); - SDL_RenderCopy(stream->renderer, stream->scr_tex, NULL, NULL); + SDL_RenderCopy(stream->renderer, stream->scr_tex, + &stream->rect, &stream->dstrect); SDL_RenderPresent(stream->renderer); } #endif /* SDL_VERSION_ATLEAST(1,3,0) */ -- cgit v1.2.3