vlc | branch: master | Erwan Tulou <[email protected]> | Sat Apr 6 02:19:49 2013 +0200| [91cbdf856760234dab010adb3d5e2a6233c5690c] | committer: Erwan Tulou
skins2: reuse graphics from generic bitmap cache (slider) > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=91cbdf856760234dab010adb3d5e2a6233c5690c --- modules/gui/skins2/controls/ctrl_slider.cpp | 33 +++++++++++++-------------- modules/gui/skins2/controls/ctrl_slider.hpp | 10 ++++---- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/modules/gui/skins2/controls/ctrl_slider.cpp b/modules/gui/skins2/controls/ctrl_slider.cpp index 4008624..92656d7 100644 --- a/modules/gui/skins2/controls/ctrl_slider.cpp +++ b/modules/gui/skins2/controls/ctrl_slider.cpp @@ -52,24 +52,17 @@ CtrlSliderCursor::CtrlSliderCursor( intf_thread_t *pIntf, CtrlGeneric( pIntf, rHelp, pVisible ), m_fsm( pIntf ), m_rVariable( rVariable ), m_tooltip( rTooltip ), m_width( rCurve.getWidth() ), m_height( rCurve.getHeight() ), + m_xPosition( 0 ), m_yPosition( 0 ), m_cmdOverDown( this ), m_cmdDownOver( this ), m_cmdOverUp( this ), m_cmdUpOver( this ), m_cmdMove( this ), m_cmdScroll( this ), m_lastCursorRect(), m_xOffset( 0 ), m_yOffset( 0 ), - m_pEvt( NULL ), m_rCurve( rCurve ) + m_pEvt( NULL ), m_rCurve( rCurve ), + m_pImgUp( rBmpUp.getGraphics() ), + m_pImgOver( rBmpOver.getGraphics() ), + m_pImgDown( rBmpDown.getGraphics() ), + m_pImg( m_pImgUp ) { - // Build the images of the cursor - OSFactory *pOsFactory = OSFactory::instance( getIntf() ); - m_pImgUp = pOsFactory->createOSGraphics( rBmpUp.getWidth(), - rBmpUp.getHeight() ); - m_pImgUp->drawBitmap( rBmpUp, 0, 0 ); - m_pImgDown = pOsFactory->createOSGraphics( rBmpDown.getWidth(), - rBmpDown.getHeight() ); - m_pImgDown->drawBitmap( rBmpDown, 0, 0 ); - m_pImgOver = pOsFactory->createOSGraphics( rBmpOver.getWidth(), - rBmpOver.getHeight() ); - m_pImgOver->drawBitmap( rBmpOver, 0, 0 ); - // States m_fsm.addState( "up" ); m_fsm.addState( "over" ); @@ -87,7 +80,6 @@ CtrlSliderCursor::CtrlSliderCursor( intf_thread_t *pIntf, // Initial state m_fsm.setState( "up" ); - m_pImg = m_pImgUp; // Observe the position variable m_rVariable.addObserver( this ); @@ -97,9 +89,6 @@ CtrlSliderCursor::CtrlSliderCursor( intf_thread_t *pIntf, CtrlSliderCursor::~CtrlSliderCursor() { m_rVariable.delObserver( this ); - delete m_pImgUp; - delete m_pImgDown; - delete m_pImgOver; } @@ -191,6 +180,9 @@ void CtrlSliderCursor::CmdOverDown::execute() - (int)(tempY * factorY); m_pParent->captureMouse(); + + if( m_pParent->m_pImg == m_pParent->m_pImgDown ) + return; m_pParent->m_pImg = m_pParent->m_pImgDown; m_pParent->refreshLayout(); } @@ -199,6 +191,9 @@ void CtrlSliderCursor::CmdOverDown::execute() void CtrlSliderCursor::CmdDownOver::execute() { m_pParent->releaseMouse(); + + if( m_pParent->m_pImg == m_pParent->m_pImgUp ) + return; m_pParent->m_pImg = m_pParent->m_pImgUp; m_pParent->refreshLayout(); } @@ -206,6 +201,8 @@ void CtrlSliderCursor::CmdDownOver::execute() void CtrlSliderCursor::CmdUpOver::execute() { + if( m_pParent->m_pImg == m_pParent->m_pImgOver ) + return; m_pParent->m_pImg = m_pParent->m_pImgOver; m_pParent->refreshLayout(); } @@ -213,6 +210,8 @@ void CtrlSliderCursor::CmdUpOver::execute() void CtrlSliderCursor::CmdOverUp::execute() { + if( m_pParent->m_pImg == m_pParent->m_pImgUp ) + return; m_pParent->m_pImg = m_pParent->m_pImgUp; m_pParent->refreshLayout(); } diff --git a/modules/gui/skins2/controls/ctrl_slider.hpp b/modules/gui/skins2/controls/ctrl_slider.hpp index cddc168..a885572 100644 --- a/modules/gui/skins2/controls/ctrl_slider.hpp +++ b/modules/gui/skins2/controls/ctrl_slider.hpp @@ -101,12 +101,14 @@ private: int m_xOffset, m_yOffset; /// The last received event EvtGeneric *m_pEvt; - /// Images of the cursor in the differents states - OSGraphics *m_pImgUp, *m_pImgOver, *m_pImgDown; - /// Current image - OSGraphics *m_pImg; /// Bezier curve of the slider const Bezier &m_rCurve; + /// Images of the cursor in the different states + const OSGraphics * const m_pImgUp; + const OSGraphics * const m_pImgOver; + const OSGraphics * const m_pImgDown; + /// Current image + const OSGraphics *m_pImg; /// Method called when the position variable is modified virtual void onUpdate( Subject<VarPercent> &rVariable, void * ); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
