Add a desktop mode to the Direct3d video output. This allow displaying video on a...
[vlc.git] / modules / video_output / msw / vout.h
index d1753f1..be29493 100644 (file)
@@ -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 <gbazin@videolan.org>
@@ -68,6 +68,8 @@ typedef struct event_thread_t
 
 #endif
 
+struct vout_window_t;
+
 /*****************************************************************************
  * vout_sys_t: video output method descriptor
  *****************************************************************************
@@ -78,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 */
@@ -130,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;
@@ -165,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;
@@ -253,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
@@ -263,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