Commit 02e2368f authored by ipkiss's avatar ipkiss
Browse files

* skins2/win32/*: Embedded vout works on Windows too. It still

   segfaults when the mouse is moved above the video...
parent 8c9cd3a2
...@@ -223,7 +223,7 @@ OSWindow *Win32Factory::createOSWindow( GenericWindow &rWindow, bool dragDrop, ...@@ -223,7 +223,7 @@ OSWindow *Win32Factory::createOSWindow( GenericWindow &rWindow, bool dragDrop,
bool playOnDrop, OSWindow *pParent ) bool playOnDrop, OSWindow *pParent )
{ {
return new Win32Window( getIntf(), rWindow, m_hInst, m_hParentWindow, return new Win32Window( getIntf(), rWindow, m_hInst, m_hParentWindow,
dragDrop, playOnDrop ); dragDrop, playOnDrop, (Win32Window*)pParent );
} }
......
...@@ -37,14 +37,26 @@ ...@@ -37,14 +37,26 @@
Win32Window::Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow, Win32Window::Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow,
HINSTANCE hInst, HWND hParentWindow, HINSTANCE hInst, HWND hParentWindow,
bool dragDrop, bool playOnDrop ): bool dragDrop, bool playOnDrop,
Win32Window *pParentWindow ):
OSWindow( pIntf ), m_dragDrop( dragDrop ), m_mm( false ) OSWindow( pIntf ), m_dragDrop( dragDrop ), m_mm( false )
{ {
// Create the window // Create the window
m_hWnd = CreateWindowEx( WS_EX_TOOLWINDOW, if( pParentWindow )
"SkinWindowClass", "default name", WS_POPUP, CW_USEDEFAULT, {
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hParentWindow, 0, // Child window (for vout)
hInst, NULL ); HWND hParent = pParentWindow->getHandle();
m_hWnd = CreateWindowEx( WS_EX_TOOLWINDOW, "SkinWindowClass",
"default name", WS_CHILD, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, hParent, 0, hInst, NULL );
}
else
{
// Normal window
m_hWnd = CreateWindowEx( WS_EX_TOOLWINDOW, "SkinWindowClass",
"default name", WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, hParentWindow, 0, hInst, NULL );
}
if( !m_hWnd ) if( !m_hWnd )
{ {
...@@ -69,6 +81,13 @@ Win32Window::Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow, ...@@ -69,6 +81,13 @@ Win32Window::Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow,
// Register the window as a drop target // Register the window as a drop target
RegisterDragDrop( m_hWnd, m_pDropTarget ); RegisterDragDrop( m_hWnd, m_pDropTarget );
} }
// XXX: Kludge to tell VLC that this window is the vout
if( pParentWindow )
{
vlc_value_t value;
value.i_int = (int) (ptrdiff_t) (void *) m_hWnd;
var_Set( getIntf()->p_vlc, "drawable", value );
}
} }
......
...@@ -36,7 +36,8 @@ class Win32Window: public OSWindow ...@@ -36,7 +36,8 @@ class Win32Window: public OSWindow
public: public:
Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow, Win32Window( intf_thread_t *pIntf, GenericWindow &rWindow,
HINSTANCE hInst, HWND hParentWindow, HINSTANCE hInst, HWND hParentWindow,
bool dragDrop, bool playOnDrop ); bool dragDrop, bool playOnDrop,
Win32Window *pParentWindow );
virtual ~Win32Window(); virtual ~Win32Window();
// Show the window // Show the window
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment