X-Git-Url: http://git.videolan.org/gitweb.cgi/vlc.git/?p=vlc.git;p=vlc.git;a=blobdiff_plain;f=modules%2Fvideo_output%2Fmsw%2Fvout.h;h=be29493e0f50a65169404e33460696082cfab1c4;hp=52bf8169cdb6c3828e1ee088e645ae24628a4220;hb=eb12915b25fa409d09de90b730791c4ebdad579e;hpb=0f7394a49d93dbcb0f8203172fbfda1d3996a918 diff --git a/modules/video_output/msw/vout.h b/modules/video_output/msw/vout.h index 52bf8169cd..be29493e0f 100644 --- a/modules/video_output/msw/vout.h +++ b/modules/video_output/msw/vout.h @@ -1,7 +1,7 @@ /***************************************************************************** * vout.h: Windows video output header file ***************************************************************************** - * Copyright (C) 2001-2004 the VideoLAN team + * Copyright (C) 2001-2009 the VideoLAN team * $Id$ * * Authors: Gildas Bazin @@ -30,9 +30,46 @@ typedef struct event_thread_t VLC_COMMON_MEMBERS vout_thread_t * p_vout; + HANDLE window_ready; } event_thread_t; +#ifdef MODULE_NAME_IS_wingapi + typedef struct GXDisplayProperties { + DWORD cxWidth; + DWORD cyHeight; + long cbxPitch; + long cbyPitch; + long cBPP; + DWORD ffFormat; + } GXDisplayProperties; + + typedef struct GXScreenRect { + DWORD dwTop; + DWORD dwLeft; + DWORD dwWidth; + DWORD dwHeight; + } GXScreenRect; + +# define GX_FULLSCREEN 0x01 +# define GX_NORMALKEYS 0x02 +# define GX_LANDSCAPEKEYS 0x03 + +# ifndef kfLandscape +# define kfLandscape 0x8 +# define kfPalette 0x10 +# define kfDirect 0x20 +# define kfDirect555 0x40 +# define kfDirect565 0x80 +# define kfDirect888 0x100 +# define kfDirect444 0x200 +# define kfDirectInverted 0x400 +# endif + +#endif + +struct vout_window_t; + /***************************************************************************** * vout_sys_t: video output method descriptor ***************************************************************************** @@ -43,6 +80,7 @@ struct vout_sys_t { HWND hwnd; /* Handle of the main window */ HWND hvideownd; /* Handle of the video sub-window */ + struct vout_window_t *parent_window; /* Parent window VLC object */ HWND hparent; /* Handle of the parent window */ HWND hfswnd; /* Handle of the fullscreen window */ WNDPROC pf_wndproc; /* Window handling callback */ @@ -95,7 +133,7 @@ struct vout_sys_t bool b_hw_yuv; /* Should we use hardware YUV->RGB conversions */ -#ifdef MODULE_NAME_IS_vout_directx +#ifdef MODULE_NAME_IS_directx /* Overlay alignment restrictions */ int i_align_src_boundary; int i_align_src_size; @@ -130,6 +168,9 @@ struct vout_sys_t #endif #ifdef MODULE_NAME_IS_direct3d + /* show video on desktop window ? */ + bool b_desktop; + // core objects HINSTANCE hd3d9_dll; /* handle of the opened d3d9 dll */ LPDIRECT3D9 p_d3dobj; @@ -161,11 +202,22 @@ struct vout_sys_t int i_depth; int render_width; int render_height; + /* Our offscreen bitmap and its framebuffer */ + HDC off_dc; + HBITMAP off_bitmap; + uint8_t * p_pic_buffer; + int i_pic_pitch; + int i_pic_pixel_pitch; + + BITMAPINFO bitmapinfo; + RGBQUAD red; + RGBQUAD green; + RGBQUAD blue; bool b_focus; bool b_parent_focus; - HINSTANCE gapi_dll; /* handle of the opened gapi dll */ + HINSTANCE gapi_dll; /* handle of the opened gapi dll */ /* GAPI functions */ int (*GXOpenDisplay)( HWND hWnd, DWORD dwFlags ); @@ -186,6 +238,16 @@ struct vout_sys_t vlc_mutex_t lock; }; +#ifdef MODULE_NAME_IS_wingapi +# define GXOpenDisplay p_vout->p_sys->GXOpenDisplay +# define GXCloseDisplay p_vout->p_sys->GXCloseDisplay +# define GXBeginDraw p_vout->p_sys->GXBeginDraw +# define GXEndDraw p_vout->p_sys->GXEndDraw +# define GXGetDisplayProperties p_vout->p_sys->GXGetDisplayProperties +# define GXSuspend p_vout->p_sys->GXSuspend +# define GXResume p_vout->p_sys->GXResume +#endif + /***************************************************************************** * Prototypes from directx.c *****************************************************************************/ @@ -197,6 +259,10 @@ int DirectDrawUpdateOverlay( vout_thread_t *p_vout ); void* EventThread ( vlc_object_t *p_this ); void UpdateRects ( vout_thread_t *p_vout, bool b_force ); void Win32ToggleFullscreen ( vout_thread_t *p_vout ); +void DisableScreensaver ( vout_thread_t *p_vout ); +void RestoreScreensaver ( vout_thread_t *p_vout ); +int CreateEventThread( vout_thread_t *p_vout ); +void StopEventThread ( vout_thread_t *p_vout ); /***************************************************************************** * Constants @@ -207,6 +273,9 @@ void Win32ToggleFullscreen ( vout_thread_t *p_vout ); #define IDM_TOGGLE_ON_TOP WM_USER + 1 #define DX_POSITION_CHANGE 0x1000 #define DX_WALLPAPER_CHANGE 0x2000 +#define DX_DESKTOP_CHANGE 0x4000 +#define EVENT_THREAD_ENDED 0x6000 +#define SWITCHING_MODE_FLAG 0x8000 /***************************************************************************** * WinCE helpers @@ -219,18 +288,18 @@ void Win32ToggleFullscreen ( vout_thread_t *p_vout ); # define GCL_HBRBACKGROUND (-10) #endif -#define FindWindowEx(a,b,c,d) 0 +//#define FindWindowEx(a,b,c,d) 0 #define GetWindowPlacement(a,b) #define SetWindowPlacement(a,b) -typedef struct _WINDOWPLACEMENT { +/*typedef struct _WINDOWPLACEMENT { UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; -} WINDOWPLACEMENT; +} WINDOWPLACEMENT;*/ #ifndef WM_NCMOUSEMOVE # define WM_NCMOUSEMOVE 160 @@ -257,8 +326,8 @@ typedef struct _WINDOWPLACEMENT { #define WS_EX_APPWINDOW 0x40000 #endif -#define SetWindowLongPtr SetWindowLong -#define GetWindowLongPtr GetWindowLong -#define GWLP_USERDATA GWL_USERDATA +//#define SetWindowLongPtr SetWindowLong +//#define GetWindowLongPtr GetWindowLong +//#define GWLP_USERDATA GWL_USERDATA #endif //UNDER_CE