[vlc-devel] [PATCH] Don't keep VLC on top when paused

Edward Wang edward.c.wang at compdigitec.com
Mon Mar 12 01:31:58 CET 2012


Have the "always on top" preference only take effect while a movie is playing. When not playing VLC will act like any other window.

Close #4689
---
 Alternative approach that doesn't require var_GetBool()

 src/video_output/video_output.c  |    5 +++++
 src/video_output/vout_internal.h |    2 ++
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index a8e4e24..82528c8 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1193,6 +1193,10 @@ static void ThreadChangePause(vout_thread_t *vout, bool is_paused, mtime_t date)
 {
     assert(!vout->p->pause.is_on || !is_paused);
 
+    /* Only stay on top if not paused */
+    vout_SetWindowState(vout->p->display.vd, (!is_paused && vout->p->always_on_top) ? VOUT_WINDOW_STATE_ABOVE
+                                                       : VOUT_WINDOW_STATE_NORMAL );
+
     if (vout->p->pause.is_on) {
         const mtime_t duration = date - vout->p->pause.date;
 
@@ -1278,6 +1282,7 @@ static void ThreadChangeOnTop(vout_thread_t *vout, bool is_on_top)
     vout_SetWindowState(vout->p->display.vd,
                         is_on_top ? VOUT_WINDOW_STATE_ABOVE :
                                     VOUT_WINDOW_STATE_NORMAL);
+    vout->p->always_on_top = is_on_top;
 }
 
 static void ThreadChangeDisplayFilled(vout_thread_t *vout, bool is_filled)
diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h
index 1f71845..20ad822 100644
--- a/src/video_output/vout_internal.h
+++ b/src/video_output/vout_internal.h
@@ -108,6 +108,8 @@ struct vout_thread_sys_t
         mtime_t     date;
     } pause;
 
+    bool always_on_top;
+
     /* OSD title configuration */
     struct {
         bool        show;
-- 
1.7.5.4




More information about the vlc-devel mailing list