summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2011-08-15 22:06:40 +0000
committerNanang Izzuddin <nanang@teluu.com>2011-08-15 22:06:40 +0000
commit2f5438b0eab01ab38093964d9658331aaac3aea2 (patch)
tree189715a340e1a6c059086d96d06f01670f3aae91
parentf6958ee715db62435f5ee0411db96698cb0c3fa7 (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
-rw-r--r--pjmedia/src/pjmedia-videodev/sdl_dev.c22
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) */