Index: src/libvlc.h
===================================================================
--- src/libvlc.h	(revision 9022)
+++ src/libvlc.h	(working copy)
@@ -223,6 +223,12 @@
     "If this option is enabled, VLC will always start a video in fullscreen " \
     "mode.")
 
+#define NODECO_TEXT N_("No window decorations (Windows only)")
+#define NODECO_LONGTEXT N_( \
+    "If this option is enabled, VLC will avoid creating window caption, " \
+    "frames etc. Currently only supported on Windows. Code is in for GL" \
+    "driver also, but have not been tested.")
+
 #define OVERLAY_TEXT N_("Overlay video output")
 #define OVERLAY_LONGTEXT N_( \
     "If enabled, VLC will try to take advantage of the overlay capabilities " \
@@ -843,6 +849,9 @@
     add_bool( "fullscreen", 0, NULL, FULLSCREEN_TEXT,
               FULLSCREEN_LONGTEXT, VLC_FALSE );
         change_short('f');
+    add_bool( "nodeco", 0, NULL, NODECO_TEXT,
+              NODECO_LONGTEXT, VLC_FALSE );
+
 #ifndef SYS_DARWIN
     add_bool( "overlay", 1, NULL, OVERLAY_TEXT, OVERLAY_LONGTEXT, VLC_TRUE );
 #endif
Index: src/video_output/vout_intf.c
===================================================================
--- src/video_output/vout_intf.c	(revision 9022)
+++ src/video_output/vout_intf.c	(working copy)
@@ -211,6 +211,9 @@
     var_Change( p_vout, "video-on-top", VLC_VAR_SETTEXT, &text, NULL );
     var_AddCallback( p_vout, "video-on-top", OnTopCallback, NULL );
 
+    /* Add a variable to indicate whether we want window decoration or not */
+    var_Create( p_vout, "nodeco", VLC_VAR_BOOL | VLC_VAR_DOINHERIT);
+
     /* Add a fullscreen variable */
     var_Create( p_vout, "fullscreen", VLC_VAR_BOOL );
     text.psz_string = _("Fullscreen");
Index: modules/video_output/directx/directx.c
===================================================================
--- modules/video_output/directx/directx.c	(revision 9022)
+++ modules/video_output/directx/directx.c	(working copy)
@@ -581,8 +581,15 @@
             }
             else
             {
-                i_style = WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
-                          WS_SIZEBOX | WS_VISIBLE;
+	      /* Setting below affects window style after returning from full screen. */
+	      vlc_value_t val;
+	      var_Get (p_vout, "nodeco", &val);
+	      if (!val.b_bool) {
+		i_style = WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
+		  WS_SIZEBOX | WS_VISIBLE;
+	      } else {
+		i_style = WS_CLIPCHILDREN | WS_VISIBLE | WS_POPUP;
+	      }
             }
 
             /* Normal window */
Index: modules/video_output/directx/events.c
===================================================================
--- modules/video_output/directx/events.c	(revision 9022)
+++ modules/video_output/directx/events.c	(working copy)
@@ -438,16 +438,32 @@
     rect_window.left   = 10;
     rect_window.right  = rect_window.left + p_vout->p_sys->i_window_width;
     rect_window.bottom = rect_window.top + p_vout->p_sys->i_window_height;
-    AdjustWindowRect( &rect_window, WS_OVERLAPPEDWINDOW|WS_SIZEBOX, 0 );
 
-    i_style = WS_OVERLAPPEDWINDOW|WS_SIZEBOX|WS_VISIBLE|WS_CLIPCHILDREN;
-    i_stylex = 0;
+    vlc_value_t val;
+    var_Get (p_vout, "nodeco", &val);
+    if (!val.b_bool) {
+      /* Open window with window decoration */
+      AdjustWindowRect( &rect_window, WS_OVERLAPPEDWINDOW|WS_SIZEBOX, 0 );
+      i_style = WS_OVERLAPPEDWINDOW|WS_SIZEBOX|WS_VISIBLE|WS_CLIPCHILDREN;
+      i_stylex = 0;
+    } else {
+      AdjustWindowRect( &rect_window, WS_POPUP, 0 );
+      /* Leaving out WS_POPUP from the line below, starts the player with
+	 a caption. */
+      i_style = WS_POPUP | WS_VISIBLE | WS_CLIPCHILDREN;
+      /* Commenting out the ES_EX_TOOLWINDOW lines directly below and 4 lines
+	 further down, creates a buttonlike frame around the whole window. We
+	 do not like that, so we keep this flag active to avoid that. */
+      i_stylex = WS_EX_TOOLWINDOW; /* MKMK */
+    }
 
     if( p_vout->p_sys->hparent )
-    {
+      {
         i_style = WS_VISIBLE|WS_CLIPCHILDREN|WS_CHILD;
-        i_stylex = WS_EX_TOOLWINDOW;
-    }
+	if (val.b_bool) {
+	  i_stylex = WS_EX_TOOLWINDOW;
+	}
+      }
 
     /* Create the window */
     p_vout->p_sys->hwnd =
@@ -545,7 +561,8 @@
     /* Retrieve the window size */
     GetClientRect( p_vout->p_sys->hwnd, &rect );
 
-    /* Retrieve the window position */
+    /* Retrieve the window position. Coordinates below seem to control
+	   exactly where video stream window the video stream gets played. */
     point.x = point.y = 0;
     ClientToScreen( p_vout->p_sys->hwnd, &point );
 
@@ -858,6 +875,7 @@
     double f_arg;
     RECT rect_window;
     POINT point;
+	vlc_value_t val;
 
     switch( i_query )
     {
@@ -872,7 +890,13 @@
         rect_window.top = rect_window.left = 0;
         rect_window.right  = p_vout->i_window_width * f_arg;
         rect_window.bottom = p_vout->i_window_height * f_arg;
-        AdjustWindowRect( &rect_window, WS_OVERLAPPEDWINDOW|WS_SIZEBOX, 0 );
+		
+	var_Get (p_vout, "nodeco", &val);
+	if (!val.b_bool) {
+	  AdjustWindowRect( &rect_window, WS_OVERLAPPEDWINDOW|WS_SIZEBOX, 0 );
+	} else {
+	  AdjustWindowRect( &rect_window, WS_POPUP, 0 );
+	}
 
         SetWindowPos( p_vout->p_sys->hwnd, 0, 0, 0,
                       rect_window.right - rect_window.left,
@@ -893,9 +917,17 @@
         ClientToScreen( p_vout->p_sys->hwnd, &point );
 
         SetParent( p_vout->p_sys->hwnd, GetDesktopWindow() );
-        SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
-                       WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
-                       WS_SIZEBOX | (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
+
+	var_Get (p_vout, "nodeco", &val);
+	if (!val.b_bool) {
+	  SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
+			 WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
+			 WS_SIZEBOX | (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
+	} else {
+	  SetWindowLong( p_vout->p_sys->hwnd, GWL_STYLE,
+			 WS_CLIPCHILDREN | (i_query == VOUT_CLOSE ? 0 : WS_VISIBLE) );
+	}
+	
         SetWindowPos( p_vout->p_sys->hwnd, 0, point.x, point.y, 0, 0,
                       SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED );
 
Index: modules/video_output/directx/glwin32.c
===================================================================
--- modules/video_output/directx/glwin32.c	(revision 9022)
+++ modules/video_output/directx/glwin32.c	(working copy)
@@ -347,8 +347,15 @@
             }
             else
             {
-                i_style = WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
-                          WS_SIZEBOX | WS_VISIBLE;
+	      /* Setting below affects window style after returning from full screen. */
+	      vlc_value_t val;
+	      var_Get (p_vout, "nodeco", &val);
+	      if (!val.b_bool) {
+		i_style = WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW |
+		  WS_SIZEBOX | WS_VISIBLE;
+	      } else {
+		i_style = WS_CLIPCHILDREN | WS_VISIBLE | WS_POPUP;
+	      }
             }
 
             /* Normal window */
