[MPlayer-cvslog] r19414 - in trunk/Gui/win32: gui.c interface.c
vayne
subversion at mplayerhq.hu
Wed Aug 16 18:21:18 CEST 2006
Author: vayne
Date: Wed Aug 16 18:21:17 2006
New Revision: 19414
Modified:
trunk/Gui/win32/gui.c
trunk/Gui/win32/interface.c
Log:
further improvements to fullscreen switching.
Modified: trunk/Gui/win32/gui.c
==============================================================================
--- trunk/Gui/win32/gui.c (original)
+++ trunk/Gui/win32/gui.c Wed Aug 16 18:21:17 2006
@@ -556,7 +556,6 @@
int tmpheight=0;
static uint32_t rect_width;
static uint32_t rect_height;
- DWORD style, flags;
RECT rd;
POINT pt;
while(ShowCursor(TRUE) <= 0){}
@@ -581,18 +580,10 @@
rd.right = rd.left + rect_width;
rd.bottom = rd.top + rect_height;
- if(fullscreen)
- {
- style = WS_VISIBLE | WS_POPUP;
- flags = SWP_NOZORDER | SWP_FRAMECHANGED;
- } else {
- style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
- flags = SWP_NOOWNERZORDER;
- }
-
- AdjustWindowRect(&rd, style, 0);
+ AdjustWindowRect(&rd, WS_OVERLAPPEDWINDOW | WS_SIZEBOX, 0);
SetWindowPos(hWnd, 0, fullscreen?0:pt.x+rd.left, fullscreen?0:pt.y+rd.top,
- fullscreen?vo_screenwidth:rd.right-rd.left, fullscreen?vo_screenheight:rd.bottom-rd.top, flags);
+ fullscreen?vo_screenwidth:rd.right-rd.left, fullscreen?vo_screenheight:rd.bottom-rd.top, SWP_NOOWNERZORDER);
+ SetForegroundWindow(hWnd);
return 0;
}
case WM_PAINT:
Modified: trunk/Gui/win32/interface.c
==============================================================================
--- trunk/Gui/win32/interface.c (original)
+++ trunk/Gui/win32/interface.c Wed Aug 16 18:21:17 2006
@@ -403,7 +403,7 @@
if (mygui->playlist->current == (mygui->playlist->trackcount - 1))
mygui->playlist->current = 0;
- fullscreen = vo_fs = 0;
+ fullscreen = 0;
guiGetEvent(guiCEvent, (void *) guiSetStop);
}
@@ -697,32 +697,31 @@
{
case MP_CMD_GUI_FULLSCREEN:
{
+ DWORD style;
+ /* vo_directx's fullscreen window */
+ HWND hWndFS = FindWindow(NULL, "MPlayer Fullscreen");
+
if(!guiIntfStruct.sh_video) break;
- /* FIXME: vo_directx is behaving unexpectedly, this maintains current functionality */
- if(!sub_window || (&video_driver_list && strstr(video_driver_list[0], "directx")))
+ if(!sub_window)
{
video_out->control(VOCTRL_FULLSCREEN, 0);
break;
}
- if(!fullscreen)
+ if(!fullscreen && IsWindowVisible(mygui->subwindow) && !IsIconic(mygui->subwindow))
GetWindowRect(mygui->subwindow, &old_rect);
if(fullscreen)
{
- fullscreen = vo_fs = 0;
- vo_dwidth = guiIntfStruct.MovieWidth = old_rect.right-old_rect.left;
- vo_dheight = guiIntfStruct.MovieHeight = old_rect.bottom-old_rect.top;
- vo_dx = old_rect.left;
- vo_dy = old_rect.top;
+ fullscreen = 0;
+ style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
} else {
- fullscreen = vo_fs = 1;
- vo_dwidth = guiIntfStruct.MovieWidth = vo_screenwidth;
- vo_dheight = guiIntfStruct.MovieHeight = vo_screenheight;
- vo_dx = 0;
- vo_dy = 0;
+ fullscreen = 1;
+ style = WS_VISIBLE | WS_POPUP;
+ if(hWndFS) DestroyWindow(hWndFS);
}
+ SetWindowLong(mygui->subwindow, GWL_STYLE, style);
mpcodecs_config_vo(guiIntfStruct.sh_video, guiIntfStruct.MovieWidth,
guiIntfStruct.MovieHeight, 0);
break;
More information about the MPlayer-cvslog
mailing list