[vlc-commits] skins2: implement VOUT_WINDOW_HIDE_MOUSE control

Erwan Tulou git at videolan.org
Sat Jan 13 23:57:36 CET 2018


vlc/vlc-3.0 | branch: master | Erwan Tulou <erwan10 at videolan.org> | Fri Jan 12 11:35:45 2018 +0100| [5bccf0fd964ece48f60949020b7cefd0d6442cf7] | committer: Jean-Baptiste Kempf

skins2: implement VOUT_WINDOW_HIDE_MOUSE control

(cherry picked from commit 93b9f3a346e4eb954d2029053686cb44f4a36efd)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=5bccf0fd964ece48f60949020b7cefd0d6442cf7
---

 modules/gui/skins2/commands/cmd_resize.cpp |  9 +++++++++
 modules/gui/skins2/commands/cmd_resize.hpp | 15 +++++++++++++++
 modules/gui/skins2/src/os_factory.hpp      |  3 ++-
 modules/gui/skins2/src/skin_main.cpp       | 10 ++++++++++
 modules/gui/skins2/src/vout_manager.cpp    | 11 +++++++++++
 modules/gui/skins2/src/vout_manager.hpp    |  3 +++
 6 files changed, 50 insertions(+), 1 deletion(-)

diff --git a/modules/gui/skins2/commands/cmd_resize.cpp b/modules/gui/skins2/commands/cmd_resize.cpp
index 5903b46241..6b8b378f06 100644
--- a/modules/gui/skins2/commands/cmd_resize.cpp
+++ b/modules/gui/skins2/commands/cmd_resize.cpp
@@ -66,3 +66,12 @@ void CmdSetFullscreen::execute()
 }
 
 
+CmdHideMouse::CmdHideMouse( intf_thread_t *pIntf,
+			    vout_window_t * pWnd, bool hide )
+    : CmdGeneric( pIntf ), m_pWnd( pWnd ), m_bHide( hide ) { }
+
+
+void CmdHideMouse::execute()
+{
+    getIntf()->p_sys->p_voutManager->hideMouseWnd( m_pWnd, m_bHide );
+}
diff --git a/modules/gui/skins2/commands/cmd_resize.hpp b/modules/gui/skins2/commands/cmd_resize.hpp
index c0b988b8cc..9a9d76b731 100644
--- a/modules/gui/skins2/commands/cmd_resize.hpp
+++ b/modules/gui/skins2/commands/cmd_resize.hpp
@@ -84,4 +84,19 @@ private:
     bool m_bFullscreen;
 };
 
+
+/// Command to hide mouse
+class CmdHideMouse: public CmdGeneric
+{
+public:
+    /// hide the mouse
+    CmdHideMouse( intf_thread_t *pIntf, vout_window_t* pWnd, bool hide );
+    virtual ~CmdHideMouse() { }
+    virtual void execute();
+    virtual std::string getType() const { return "hide mouse"; }
+
+private:
+    vout_window_t* m_pWnd;
+    bool m_bHide;
+};
 #endif
diff --git a/modules/gui/skins2/src/os_factory.hpp b/modules/gui/skins2/src/os_factory.hpp
index 5095a4e515..3aff7ba2c3 100644
--- a/modules/gui/skins2/src/os_factory.hpp
+++ b/modules/gui/skins2/src/os_factory.hpp
@@ -51,7 +51,8 @@ public:
         kResizeNS,
         kResizeWE,
         kResizeNWSE,
-        kResizeNESW
+        kResizeNESW,
+        kNoCursor,
     };
 
     /**
diff --git a/modules/gui/skins2/src/skin_main.cpp b/modules/gui/skins2/src/skin_main.cpp
index cc93d603ce..69bbf0fd44 100644
--- a/modules/gui/skins2/src/skin_main.cpp
+++ b/modules/gui/skins2/src/skin_main.cpp
@@ -472,6 +472,16 @@ static int WindowControl( vout_window_t *pWnd, int query, va_list args )
             return VLC_SUCCESS;
         }
 
+        case VOUT_WINDOW_HIDE_MOUSE:
+        {
+            bool hide = va_arg( args, int );
+            // Post a HideMouse command
+            CmdHideMouse* pCmd =
+                new CmdHideMouse( pIntf, pWnd, hide );
+            pQueue->push( CmdGenericPtr( pCmd ) );
+            return VLC_SUCCESS;
+        }
+
         default:
             msg_Dbg( pIntf, "control query not supported" );
             return VLC_EGENERIC;
diff --git a/modules/gui/skins2/src/vout_manager.cpp b/modules/gui/skins2/src/vout_manager.cpp
index 5b3c6af780..442c9b265e 100644
--- a/modules/gui/skins2/src/vout_manager.cpp
+++ b/modules/gui/skins2/src/vout_manager.cpp
@@ -297,6 +297,17 @@ void VoutManager::setFullscreenWnd( vout_window_t *pWnd, bool b_fullscreen )
 }
 
 
+void VoutManager::hideMouseWnd( vout_window_t *pWnd, bool hide )
+{
+    msg_Dbg( pWnd, "hide mouse (%i) received from vout thread", hide );
+    OSFactory *pOsFactory = OSFactory::instance( getIntf() );
+    if( hide )
+        pOsFactory->changeCursor( OSFactory::kNoCursor );
+    else
+        pOsFactory->changeCursor( OSFactory::kDefaultArrow );
+}
+
+
 void VoutManager::onUpdate( Subject<VarBool> &rVariable, void *arg )
 {
     (void)arg;
diff --git a/modules/gui/skins2/src/vout_manager.hpp b/modules/gui/skins2/src/vout_manager.hpp
index 60c2713aef..4cf3522b40 100644
--- a/modules/gui/skins2/src/vout_manager.hpp
+++ b/modules/gui/skins2/src/vout_manager.hpp
@@ -118,6 +118,9 @@ public:
     /// set fullscreen mode (vout window provider)
     void setFullscreenWnd( vout_window_t* pWnd, bool b_fullscreen );
 
+    /// hide mouse (vout window provider)
+    void hideMouseWnd( vout_window_t* pWnd, bool hide );
+
     // Register Video Controls (when building theme)
     void registerCtrlVideo( CtrlVideo* p_CtrlVideo );
 



More information about the vlc-commits mailing list