diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2011-08-15 22:06:40 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2011-08-15 22:06:40 +0000 |
commit | 2f5438b0eab01ab38093964d9658331aaac3aea2 (patch) | |
tree | 189715a340e1a6c059086d96d06f01670f3aae91 /pjmedia/src | |
parent | f6958ee715db62435f5ee0411db96698cb0c3fa7 (diff) |
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
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia-videodev/sdl_dev.c | 22 |
1 files changed, 18 insertions, 4 deletions
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) */ |