From c297f3477e21e31976f417c3b3d50529f6b84b4c Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Mon, 19 Dec 2011 06:16:34 +0000 Subject: Fixed #1429: Problem with SDL on setting window's position when window is hidden git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3914 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-videodev/sdl_dev.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'pjmedia') diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c index 109b22bd..d54b4418 100644 --- a/pjmedia/src/pjmedia-videodev/sdl_dev.c +++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c @@ -1093,8 +1093,20 @@ static pj_status_t set_cap(void *data) const void *pval = scap->pval.cpval; if (cap == PJMEDIA_VID_DEV_CAP_OUTPUT_POSITION) { + /** + * Setting window's position when the window is hidden also sets + * the window's flag to shown (while the window is, actually, + * still hidden). This causes problems later when setting/querying + * the window's visibility. + * See ticket #1429 (http://trac.pjsip.org/repos/ticket/1429) + */ + Uint32 flag = SDL_GetWindowFlags(strm->window); + if (flag & SDL_WINDOW_HIDDEN) + SDL_ShowWindow(strm->window); SDL_SetWindowPosition(strm->window, ((pjmedia_coord *)pval)->x, ((pjmedia_coord *)pval)->y); + if (flag & SDL_WINDOW_HIDDEN) + SDL_HideWindow(strm->window); return PJ_SUCCESS; } else if (cap == PJMEDIA_VID_DEV_CAP_OUTPUT_HIDE) { if (*(pj_bool_t *)pval) -- cgit v1.2.3