Updated skins2 vout_window provider to the new API.
authorLaurent Aimar <fenrir@videolan.org>
Fri, 31 Jul 2009 19:23:12 +0000 (21:23 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 1 Aug 2009 10:07:11 +0000 (12:07 +0200)
modules/gui/skins2/src/skin_main.cpp
modules/gui/skins2/src/vlcproc.cpp
modules/gui/skins2/src/vout_manager.cpp
modules/gui/skins2/src/vout_manager.hpp
modules/gui/skins2/src/vout_window.cpp
modules/gui/skins2/src/vout_window.hpp

index 13e935f..5d1c7c9 100644 (file)
@@ -32,7 +32,7 @@
 #include <vlc_demux.h>
 #include <vlc_playlist.h>
 #include <vlc_threads.h>
-#include <vlc_window.h>
+#include <vlc_vout_window.h>
 
 #include "dialogs.hpp"
 #include "os_factory.hpp"
@@ -364,7 +364,7 @@ static int WindowOpen( vlc_object_t *p_this )
 
     if( pWnd->handle.hwnd )
     {
-        pWnd->p_private = pIntf;
+        pWnd->sys = (vout_window_sys_t*)pIntf;
         pWnd->control = &VoutManager::controlWindow;
         return VLC_SUCCESS;
     }
@@ -377,7 +377,7 @@ static int WindowOpen( vlc_object_t *p_this )
 static void WindowClose( vlc_object_t *p_this )
 {
     vout_window_t *pWnd = (vout_window_t *)p_this;
-    intf_thread_t *pIntf = (intf_thread_t *)p_this->p_private;
+    intf_thread_t *pIntf = (intf_thread_t *)pWnd->sys;
 
     VoutManager::releaseWindow( pIntf, pWnd );
 }
@@ -569,11 +569,7 @@ vlc_module_begin ()
     add_shortcut( "skins" )
 
     add_submodule ()
-#ifndef WIN32
-        set_capability( "xwindow", 51 )
-#else
-        set_capability( "hwnd", 51 )
-#endif
+        set_capability( "vout window", 51 )
         set_callbacks( WindowOpen, WindowClose )
 
     add_submodule ()
index 6dc6eff..f02d6a4 100644 (file)
@@ -30,7 +30,6 @@
 #include <vlc_aout.h>
 #include <vlc_vout.h>
 #include <vlc_playlist.h>
-#include <vlc_window.h>
 
 #include "vlcproc.hpp"
 #include "os_factory.hpp"
index 4007431..0eee506 100644 (file)
@@ -26,7 +26,6 @@
 #endif
 
 #include <vlc_vout.h>
-#include <vlc_window.h>
 
 #include "vout_manager.hpp"
 #include "window_manager.hpp"
@@ -57,7 +56,7 @@ void VoutManager::destroy( intf_thread_t *pIntf )
 
 VoutManager::VoutManager( intf_thread_t *pIntf ): SkinObject( pIntf ),
      m_pVoutMainWindow( NULL ), m_pCtrlVideoVec(),
-     m_pCtrlVideoVecBackup(), m_SavedVoutVec()
+     m_pCtrlVideoVecBackup(), m_SavedWndVec()
 {
     vlc_mutex_init( &vout_lock );
 
@@ -83,8 +82,8 @@ void VoutManager::saveVoutConfig( )
 {
     // Save width/height to be consistent across themes
     // and detach Video Controls
-    vector<SavedVout>::iterator it;
-    for( it = m_SavedVoutVec.begin(); it != m_SavedVoutVec.end(); it++ )
+    vector<SavedWnd>::iterator it;
+    for( it = m_SavedWndVec.begin(); it != m_SavedWndVec.end(); it++ )
     {
         if( (*it).pCtrlVideo )
         {
@@ -113,8 +112,8 @@ void VoutManager::restoreVoutConfig( bool b_success )
     }
 
     // reattach vout(s) to Video Controls
-    vector<SavedVout>::iterator it;
-    for( it = m_SavedVoutVec.begin(); it != m_SavedVoutVec.end(); it++ )
+    vector<SavedWnd>::iterator it;
+    for( it = m_SavedWndVec.begin(); it != m_SavedWndVec.end(); it++ )
     {
         CtrlVideo* pCtrlVideo = getBestCtrlVideo();
         if( pCtrlVideo )
@@ -128,8 +127,8 @@ void VoutManager::restoreVoutConfig( bool b_success )
 
 void VoutManager::discardVout( CtrlVideo* pCtrlVideo )
 {
-    vector<SavedVout>::iterator it;
-    for( it = m_SavedVoutVec.begin(); it != m_SavedVoutVec.end(); it++ )
+    vector<SavedWnd>::iterator it;
+    for( it = m_SavedWndVec.begin(); it != m_SavedWndVec.end(); it++ )
     {
         if( (*it).pCtrlVideo == pCtrlVideo )
         {
@@ -146,8 +145,8 @@ void VoutManager::discardVout( CtrlVideo* pCtrlVideo )
 
 void VoutManager::requestVout( CtrlVideo* pCtrlVideo )
 {
-    vector<SavedVout>::iterator it;
-    for( it = m_SavedVoutVec.begin(); it != m_SavedVoutVec.end(); it++ )
+    vector<SavedWnd>::iterator it;
+    for( it = m_SavedWndVec.begin(); it != m_SavedWndVec.end(); it++ )
     {
         if( (*it).pCtrlVideo == NULL )
         {
@@ -177,10 +176,10 @@ CtrlVideo* VoutManager::getBestCtrlVideo( )
 }
 
 
-void* VoutManager::acceptVout( vout_thread_t* pVout, int width, int height )
+void* VoutManager::acceptWnd( vout_window_t* pWnd, int width, int height )
 {
     // Creation of a dedicated Window per vout thread
-    VoutWindow* pVoutWindow = new VoutWindow( getIntf(), pVout, width, height,
+    VoutWindow* pVoutWindow = new VoutWindow( getIntf(), pWnd, width, height,
                                          (GenericWindow*) m_pVoutMainWindow );
 
     void* handle = pVoutWindow->getOSHandle();
@@ -195,10 +194,10 @@ void* VoutManager::acceptVout( vout_thread_t* pVout, int width, int height )
     }
 
     // save vout characteristics
-    m_SavedVoutVec.push_back( SavedVout( pVout, pVoutWindow, pCtrlVideo ) );
+    m_SavedWndVec.push_back( SavedWnd( pWnd, pVoutWindow, pCtrlVideo ) );
 
     msg_Dbg( getIntf(), "New incoming vout=0x%p, handle=0x%p, VideoCtrl=0x%p",
-                        pVout, handle, pCtrlVideo );
+                        pWnd, handle, pCtrlVideo );
 
     return handle;
 }
@@ -215,13 +214,12 @@ void *VoutManager::getWindow( intf_thread_t *pIntf, vout_window_t *pWnd )
 
     VoutManager *pThis = pIntf->p_sys->p_voutManager;
 
-    vout_thread_t* pVout = pWnd->vout;
-    int width = (int)pWnd->width;
-    int height = (int)pWnd->height;
+    int width = (int)pWnd->cfg->width;
+    int height = (int)pWnd->cfg->height;
 
     pThis->lockVout();
 
-    void* handle = pThis->acceptVout( pVout, width, height );
+    void* handle = pThis->acceptWnd( pWnd, width, height );
 
     pThis->unlockVout();
 
@@ -237,18 +235,16 @@ void VoutManager::releaseWindow( intf_thread_t *pIntf, vout_window_t *pWnd )
     if( !pIntf->p_sys->p_theme )
         return;
 
-    vout_thread_t* pVout = pWnd->vout;
-
     pThis->lockVout();
 
     // remove vout thread from savedVec
-    vector<SavedVout>::iterator it;
-    for( it = pThis->m_SavedVoutVec.begin(); it != pThis->m_SavedVoutVec.end(); it++ )
+    vector<SavedWnd>::iterator it;
+    for( it = pThis->m_SavedWndVec.begin(); it != pThis->m_SavedWndVec.end(); it++ )
     {
-        if( (*it).pVout == pVout )
+        if( (*it).pWnd == pWnd )
         {
             msg_Dbg( pIntf, "vout released vout=0x%p, VideoCtrl=0x%p",
-                             pVout, (*it).pCtrlVideo );
+                             pWnd, (*it).pCtrlVideo );
 
             // if a video control was being used, detach from it
             if( (*it).pCtrlVideo )
@@ -258,7 +254,7 @@ void VoutManager::releaseWindow( intf_thread_t *pIntf, vout_window_t *pWnd )
 
             // remove resources
             delete (*it).pVoutWindow;
-            pThis->m_SavedVoutVec.erase( it );
+            pThis->m_SavedWndVec.erase( it );
             break;
         }
     }
@@ -270,13 +266,12 @@ void VoutManager::releaseWindow( intf_thread_t *pIntf, vout_window_t *pWnd )
 int VoutManager::controlWindow( struct vout_window_t *pWnd,
                             int query, va_list args )
 {
-    intf_thread_t *pIntf = (intf_thread_t *)pWnd->p_private;
+    intf_thread_t *pIntf = (intf_thread_t *)pWnd->sys;
     VoutManager *pThis = pIntf->p_sys->p_voutManager;
-    vout_thread_t* pVout = pWnd->vout;
 
     switch( query )
     {
-        case VOUT_SET_SIZE:
+        case VOUT_WINDOW_SET_SIZE:
         {
             unsigned int i_width  = va_arg( args, unsigned int );
             unsigned int i_height = va_arg( args, unsigned int );
@@ -285,17 +280,17 @@ int VoutManager::controlWindow( struct vout_window_t *pWnd,
             {
                 pThis->lockVout();
 
-                vector<SavedVout>::iterator it;
-                for( it = pThis->m_SavedVoutVec.begin();
-                     it != pThis->m_SavedVoutVec.end(); it++ )
+                vector<SavedWnd>::iterator it;
+                for( it = pThis->m_SavedWndVec.begin();
+                     it != pThis->m_SavedWndVec.end(); it++ )
                 {
-                    if( (*it).pVout == pVout )
+                    if( (*it).pWnd == pWnd )
                     {
                         // Post a vout resize command
                         CmdResizeVout *pCmd =
                             new CmdResizeVout( pThis->getIntf(),
                                                (*it).pVoutWindow,
-                                               (int)i_width, (int)i_height );
+                                               i_width, i_height );
                         AsyncQueue *pQueue =
                             AsyncQueue::instance( pThis->getIntf() );
                         pQueue->push( CmdGenericPtr( pCmd ) );
@@ -305,13 +300,12 @@ int VoutManager::controlWindow( struct vout_window_t *pWnd,
 
                 pThis->unlockVout();
             }
+            return VLC_SUCCESS;
         }
 
         default:
             msg_Dbg( pWnd, "control query not supported" );
-            break;
+            return VLC_EGENERIC;
     }
-
-    return VLC_SUCCESS;
 }
 
index e54a290..1ca50eb 100644 (file)
@@ -27,7 +27,7 @@
 #include <vector>
 
 #include <vlc_vout.h>
-#include <vlc_window.h>
+#include <vlc_vout_window.h>
 #include "../utils/position.hpp"
 #include "../commands/cmd_generic.hpp"
 #include "../controls/ctrl_video.hpp"
@@ -37,17 +37,17 @@ class GenericWindow;
 
 #include <stdio.h>
 
-class SavedVout
+class SavedWnd
 {
 public:
-    SavedVout( vout_thread_t* pVout, VoutWindow* pVoutWindow = NULL,
+    SavedWnd( vout_window_t* pWnd, VoutWindow* pVoutWindow = NULL,
                CtrlVideo* pCtrlVideo = NULL, int height = 0, int width = 0 ) :
-       pVout( pVout ), pVoutWindow( pVoutWindow ), pCtrlVideo( pCtrlVideo ),
+       pWnd( pWnd ), pVoutWindow( pVoutWindow ), pCtrlVideo( pCtrlVideo ),
        height( height ), width( width ) {}
 
-    ~SavedVout() {}
+    ~SavedWnd() {}
 
-    vout_thread_t* pVout;
+    vout_window_t* pWnd;
     VoutWindow *pVoutWindow;
     CtrlVideo *pCtrlVideo;
     int height;
@@ -83,8 +83,8 @@ class VoutManager: public SkinObject
         /// Callback to request a vout window
         static void *getWindow( intf_thread_t *pIntf, vout_window_t *pWnd );
 
-        /// Accept Vout
-        void* acceptVout( vout_thread_t* pVout, int width, int height );
+        /// Accept Wnd
+        void* acceptWnd( vout_window_t* pWnd, int width, int height );
 
         // Window provider (release)
         static void releaseWindow( intf_thread_t *pIntf, vout_window_t *pWnd  );
@@ -104,9 +104,6 @@ class VoutManager: public SkinObject
         void discardVout( CtrlVideo* pCtrlVideo );
         void requestVout( CtrlVideo* pCtrlVideo );
 
-        // get a VoutWindow
-        void* getHandle( vout_thread_t* pVout, int width, int height );
-
         // get a useable video Control
         CtrlVideo* getBestCtrlVideo( );
 
@@ -114,7 +111,7 @@ class VoutManager: public SkinObject
         VoutMainWindow* getVoutMainWindow() { return m_pVoutMainWindow; }
 
         // test if vout are running
-        bool hasVout() { return ( m_SavedVoutVec.size() != 0 ) ; }
+        bool hasVout() { return ( m_SavedWndVec.size() != 0 ) ; }
 
         // (un)lock functions to protect vout sets
         void lockVout( ) { vlc_mutex_lock( &vout_lock ); }
@@ -129,7 +126,7 @@ class VoutManager: public SkinObject
 
         vector<CtrlVideo *> m_pCtrlVideoVec;
         vector<CtrlVideo *> m_pCtrlVideoVecBackup;
-        vector<SavedVout> m_SavedVoutVec;
+        vector<SavedWnd> m_SavedWndVec;
 
         VoutMainWindow* m_pVoutMainWindow;
 
index 830e06f..eb44e41 100644 (file)
 
 int VoutWindow::count = 0;
 
-VoutWindow::VoutWindow( intf_thread_t *pIntf, vout_thread_t* pVout,
+VoutWindow::VoutWindow( intf_thread_t *pIntf, vout_window_t* pWnd,
                         int width, int height, GenericWindow* pParent ) :
       GenericWindow( pIntf, 0, 0, false, false, pParent ),
-      m_pVout( pVout ), original_width( width ), original_height( height ),
+      m_pWnd( pWnd ), original_width( width ), original_height( height ),
       m_pParentWindow( pParent ), m_pImage( NULL )
 {
     // counter for debug
     count++;
 
-    if( m_pVout )
-        vlc_object_hold( m_pVout );
+    if( m_pWnd )
+        vlc_object_hold( m_pWnd );
 
     // needed on MS-Windows to prevent vlc hanging
     show();
@@ -51,8 +51,8 @@ VoutWindow::VoutWindow( intf_thread_t *pIntf, vout_thread_t* pVout,
 VoutWindow::~VoutWindow()
 {
     delete m_pImage;
-    if( m_pVout )
-        vlc_object_release( m_pVout );
+    if( m_pWnd )
+        vlc_object_release( m_pWnd );
 
     count--;
     msg_Dbg( getIntf(), "VoutWindow count = %d", count );
index b355ad4..4c8661a 100644 (file)
@@ -25,6 +25,7 @@
 #define VOUT_WINDOW_HPP
 
 #include "generic_window.hpp"
+#include <vlc_vout_window.h>
 
 class OSGraphics;
 class CtrlVideo;
@@ -35,7 +36,7 @@ class VoutWindow: private GenericWindow
 {
     public:
 
-        VoutWindow( intf_thread_t *pIntf, vout_thread_t* pVout,
+        VoutWindow( intf_thread_t *pIntf, vout_window_t* pWnd,
                     int width, int height, GenericWindow* pParent = NULL );
         virtual ~VoutWindow();
 
@@ -79,7 +80,7 @@ class VoutWindow: private GenericWindow
         OSGraphics *m_pImage;
 
         /// vout thread
-        vout_thread_t* m_pVout;
+        vout_window_t* m_pWnd;
 
         /// original width and height
         int original_width;