From: RĂ©mi Denis-Courmont Date: Fri, 20 Jun 2008 17:48:30 +0000 (+0300) Subject: skins2: use the vout window interface (untested) X-Git-Tag: 0.9.0-test1~204 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=1426a88f97b17b67b5538072e1efce3e874aaa40;p=vlc skins2: use the vout window interface (untested) --- diff --git a/modules/gui/skins2/src/skin_main.cpp b/modules/gui/skins2/src/skin_main.cpp index cbc8a64b36..a994c7a9c1 100644 --- a/modules/gui/skins2/src/skin_main.cpp +++ b/modules/gui/skins2/src/skin_main.cpp @@ -255,6 +255,35 @@ static void Run( intf_thread_t *p_intf ) } +// Callbacks for vout requests +static int WindowOpen( vlc_object_t *p_this ) +{ + vout_window_t *pWnd = (vout_window_t *)p_this; + intf_thread_t *pIntf = (intf_thread_t *) + vlc_object_find_name( p_this, "skins2", FIND_ANYWHERE ); + + if( p_intf == NULL ) + return VLC_EGENERIC; + + /* FIXME: most probably not thread-safe, + * albeit no worse than ever before */ + pWind->handle = VlcProc::getWindow( pIntf, pWnd->vout, + &pWnd->pos_x, &pWnd->pos_y, + &pWnd->width, &pWnd->height ); + pWnd->p_private = p_intf; + pWnd->control = &VlcProc::controlWindow + return VLC_SUCCESS; +} + + +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; + + VlCproc::releaseWindow( pIntf, pWnd->handle ); +} + //--------------------------------------------------------------------------- // DemuxOpen: initialize demux //--------------------------------------------------------------------------- @@ -442,6 +471,10 @@ vlc_module_begin(); set_callbacks( Open, Close ); add_shortcut( "skins" ); + add_submodule(); + set_capability( "vout window", 51 ); + set_callbacks( WindowOpen, WindowClose ); + add_submodule(); set_description( N_("Skins loader demux") ); set_capability( "demux", 5 ); diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp index b35a65c650..bf2ef4f681 100644 --- a/modules/gui/skins2/src/vlcproc.cpp +++ b/modules/gui/skins2/src/vlcproc.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "vlcproc.hpp" #include "os_factory.hpp" @@ -164,11 +165,6 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ), var_AddCallback( pIntf, "interaction", onInteraction, this ); pIntf->b_interaction = true; - // Callbacks for vout requests -/* getIntf()->pf_request_window = &getWindow; - getIntf()->pf_release_window = &releaseWindow; - getIntf()->pf_control_window = &controlWindow; -*/ getIntf()->p_sys->p_input = NULL; } @@ -182,11 +178,6 @@ VlcProc::~VlcProc() vlc_object_release( getIntf()->p_sys->p_input ); } - // Callbacks for vout requests -/* getIntf()->pf_request_window = NULL; - getIntf()->pf_release_window = NULL; - getIntf()->pf_control_window = NULL; -*/ var_DelCallback( getIntf()->p_sys->p_playlist, "intf-change", onIntfChange, this ); var_DelCallback( getIntf()->p_sys->p_playlist, "item-append", @@ -633,9 +624,10 @@ void VlcProc::releaseWindow( intf_thread_t *pIntf, void *pWindow ) } -int VlcProc::controlWindow( intf_thread_t *pIntf, void *pWindow, +int VlcProc::controlWindow( struct vout_window_t *pWnd, int query, va_list args ) { + intf_thread_t *pIntf = (intf_thread_t *)pWnd->p_private; VlcProc *pThis = pIntf->p_sys->p_vlcProc; switch( query ) @@ -651,7 +643,7 @@ int VlcProc::controlWindow( intf_thread_t *pIntf, void *pWindow, // Post a resize vout command CmdResizeVout *pCmd = - new CmdResizeVout( pThis->getIntf(), pWindow, + new CmdResizeVout( pThis->getIntf(), pWnd->handle, i_width, i_height ); AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() ); pQueue->push( CmdGenericPtr( pCmd ) ); @@ -659,7 +651,7 @@ int VlcProc::controlWindow( intf_thread_t *pIntf, void *pWindow, } default: - msg_Dbg( pIntf, "control query not supported" ); + msg_Dbg( pWnd, "control query not supported" ); break; } diff --git a/modules/gui/skins2/src/vlcproc.hpp b/modules/gui/skins2/src/vlcproc.hpp index 83185e5be3..1e4fac2ffa 100644 --- a/modules/gui/skins2/src/vlcproc.hpp +++ b/modules/gui/skins2/src/vlcproc.hpp @@ -38,6 +38,7 @@ class OSTimer; class VarBool; struct aout_instance_t; +struct vout_window_t; /// Singleton object handling VLC internal state and playlist @@ -218,7 +219,7 @@ class VlcProc: public SkinObject static void releaseWindow( intf_thread_t *pIntf, void *pWindow ); /// Callback to change a vout window - static int controlWindow( intf_thread_t *pIntf, void *pWindow, + static int controlWindow( struct vout_window_t *pWnd, int query, va_list args ); /// Callback for equalizer-bands variable