[vlc-devel] commit: skins2: use the vout window interface (untested) ( Rémi Denis-Courmont )
git version control
git at videolan.org
Fri Jun 20 19:46:31 CEST 2008
vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Fri Jun 20 20:48:30 2008 +0300| [1426a88f97b17b67b5538072e1efce3e874aaa40]
skins2: use the vout window interface (untested)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1426a88f97b17b67b5538072e1efce3e874aaa40
---
modules/gui/skins2/src/skin_main.cpp | 33 +++++++++++++++++++++++++++++++++
modules/gui/skins2/src/vlcproc.cpp | 18 +++++-------------
modules/gui/skins2/src/vlcproc.hpp | 3 ++-
3 files changed, 40 insertions(+), 14 deletions(-)
diff --git a/modules/gui/skins2/src/skin_main.cpp b/modules/gui/skins2/src/skin_main.cpp
index cbc8a64..a994c7a 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
//---------------------------------------------------------------------------
@@ -443,6 +472,10 @@ vlc_module_begin();
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 );
set_callbacks( DemuxOpen, NULL );
diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp
index b35a65c..bf2ef4f 100644
--- a/modules/gui/skins2/src/vlcproc.cpp
+++ b/modules/gui/skins2/src/vlcproc.cpp
@@ -30,6 +30,7 @@
#include <vlc_aout.h>
#include <vlc_vout.h>
#include <vlc_playlist.h>
+#include <vlc_window.h>
#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 83185e5..1e4fac2 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
More information about the vlc-devel
mailing list