// Resize the layout
m_rLayout.resize( m_width, m_height );
}
+
+
+CmdResizeVout::CmdResizeVout( intf_thread_t *pIntf, void *pWindow, int width,
+ int height ):
+ CmdGeneric( pIntf ), m_pWindow( pWindow ), m_width( width ),
+ m_height( height )
+{
+}
+
+
+void CmdResizeVout::execute()
+{
+ // TODO
+ msg_Dbg( getIntf(), "New vout size requested: %d x %d", m_width,
+ m_height );
+}
+
int m_width, m_height;
};
+
+/// Command to resize the vout window
+class CmdResizeVout: public CmdGeneric
+{
+ public:
+ /// Resize the given layout
+ CmdResizeVout( intf_thread_t *pIntf, void *pWindow, int width,
+ int height );
+ virtual ~CmdResizeVout() {}
+
+ /// This method does the real job of the command
+ virtual void execute();
+
+ /// Return the type of the command
+ virtual string getType() const { return "resize vout"; }
+
+ private:
+ void *m_pWindow;
+ int m_width, m_height;
+};
+
+
#endif
#include "../commands/cmd_change_skin.hpp"
#include "../commands/cmd_show_window.hpp"
#include "../commands/cmd_quit.hpp"
+#include "../commands/cmd_resize.hpp"
#include "../commands/cmd_vars.hpp"
#include "../utils/var_bool.hpp"
}
else
{
- return *pThis->m_handleSet.begin();
+ // Get the window handle
+ void *pWindow = *pThis->m_handleSet.begin();
+ // Post a resize vout command
+ CmdResizeVout *pCmd = new CmdResizeVout( pThis->getIntf(), pWindow,
+ *pWidthHint, *pHeightHint );
+ AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() );
+ pQueue->remove( "resize vout" );
+ pQueue->push( CmdGenericPtr( pCmd ) );
+ return pWindow;
}
}
int VlcProc::controlWindow( intf_thread_t *pIntf, void *pWindow,
int query, va_list args )
{
+ VlcProc *pThis = pIntf->p_sys->p_vlcProc;
+
+ switch( query )
+ {
+ case VOUT_SET_ZOOM:
+ {
+ double fArg = va_arg( args, double );
+
+ if( pThis->m_pVout )
+ {
+ // Compute requested vout dimensions
+ int width = (int)( pThis->m_pVout->i_window_width * fArg );
+ int height = (int)( pThis->m_pVout->i_window_height * fArg );
+
+ // Post a resize vout command
+ CmdResizeVout *pCmd =
+ new CmdResizeVout( pThis->getIntf(), pWindow,
+ width, height );
+ AsyncQueue *pQueue = AsyncQueue::instance( pThis->getIntf() );
+ pQueue->remove( "resize vout" );
+ pQueue->push( CmdGenericPtr( pCmd ) );
+ }
+ }
+
+ default:
+ msg_Dbg( pIntf, "control query not supported" );
+ break;
+ }
+
return VLC_SUCCESS;
}