Commit 773b8f68 authored by Cyril Deguet's avatar Cyril Deguet

* all: Post a CmdResizeVout command when the vout size changes

(this command does nothing at the moment ;)
parent 4a3274fb
......@@ -39,3 +39,20 @@ void CmdResize::execute()
// 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 );
}
......@@ -50,4 +50,26 @@ class CmdResize: public CmdGeneric
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
......@@ -35,6 +35,7 @@
#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"
......@@ -454,7 +455,15 @@ void *VlcProc::getWindow( intf_thread_t *pIntf, vout_thread_t *pVout,
}
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;
}
}
......@@ -469,6 +478,35 @@ void VlcProc::releaseWindow( intf_thread_t *pIntf, void *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;
}
Markdown is supported
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