[vlc-commits] vout: remove display-level window state except on Windows and OS/2
Rémi Denis-Courmont
git at videolan.org
Thu Oct 16 19:26:07 CEST 2014
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Oct 12 23:50:21 2014 +0300| [3952212c463b810d50e95ad93f33ad9a1c2e2cef] | committer: Rémi Denis-Courmont
vout: remove display-level window state except on Windows and OS/2
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3952212c463b810d50e95ad93f33ad9a1c2e2cef
---
include/vlc_vout_display.h | 4 ++++
include/vlc_vout_wrapper.h | 2 ++
src/video_output/display.c | 26 ++++++++++++++++++--------
src/video_output/video_output.c | 7 +++++--
4 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
index 10ae9bd..6771b53 100644
--- a/include/vlc_vout_display.h
+++ b/include/vlc_vout_display.h
@@ -189,7 +189,9 @@ enum {
VOUT_DISPLAY_EVENT_PICTURES_INVALID, /* The buffer are now invalid and need to be changed */
VOUT_DISPLAY_EVENT_FULLSCREEN,
+#if defined(_WIN32) || defined(__OS2__)
VOUT_DISPLAY_EVENT_WINDOW_STATE,
+#endif
VOUT_DISPLAY_EVENT_DISPLAY_SIZE, /* The display size need to change : int i_width, int i_height */
@@ -360,10 +362,12 @@ static inline void vout_display_SendEventFullscreen(vout_display_t *vd, bool is_
{
vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_FULLSCREEN, is_fullscreen);
}
+#if defined(_WIN32)
static inline void vout_display_SendWindowState(vout_display_t *vd, unsigned state)
{
vout_display_SendEvent(vd, VOUT_DISPLAY_EVENT_WINDOW_STATE, state);
}
+#endif
/* The mouse position (State and Moved event) must be expressed against vout_display_t::source unit */
static inline void vout_display_SendEventMouseState(vout_display_t *vd, int x, int y, int button_mask)
{
diff --git a/include/vlc_vout_wrapper.h b/include/vlc_vout_wrapper.h
index 4e2994b..f835c41 100644
--- a/include/vlc_vout_wrapper.h
+++ b/include/vlc_vout_wrapper.h
@@ -62,7 +62,9 @@ static inline void vout_display_Display(vout_display_t *vd,
*/
typedef struct {
vout_display_cfg_t cfg;
+#if defined(_WIN32) || defined(__OS2__)
unsigned wm_state;
+#endif
struct {
int num;
int den;
diff --git a/src/video_output/display.c b/src/video_output/display.c
index b0a5070..c485413 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -337,7 +337,6 @@ struct vout_display_owner_sys_t {
/* */
vout_display_cfg_t cfg;
- unsigned wm_state_initial;
struct {
unsigned num;
unsigned den;
@@ -361,10 +360,11 @@ struct vout_display_owner_sys_t {
unsigned num;
unsigned den;
} zoom;
-
+#if defined(_WIN32) || defined(__OS2__)
bool ch_wm_state;
unsigned wm_state;
-
+ unsigned wm_state_initial;
+#endif
bool ch_sar;
struct {
unsigned num;
@@ -681,7 +681,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args)
vlc_mutex_unlock(&osys->lock);
break;
}
-
+#if defined(_WIN32) || defined(__OS2__)
case VOUT_DISPLAY_EVENT_WINDOW_STATE: {
const unsigned state = va_arg(args, unsigned);
@@ -695,7 +695,7 @@ static void VoutDisplayEvent(vout_display_t *vd, int event, va_list args)
vlc_mutex_unlock(&osys->lock);
break;
}
-
+#endif
case VOUT_DISPLAY_EVENT_DISPLAY_SIZE: {
const int width = (int)va_arg(args, int);
const int height = (int)va_arg(args, int);
@@ -857,9 +857,11 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
bool is_fullscreen = osys->is_fullscreen;
osys->ch_fullscreen = false;
+#if defined(_WIN32) || defined(__OS2__)
bool ch_wm_state = osys->ch_wm_state;
unsigned wm_state = osys->wm_state;
osys->ch_wm_state = false;
+#endif
bool ch_display_size = osys->ch_display_size;
int display_width = osys->display_width;
@@ -881,7 +883,9 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
!reset_pictures &&
!osys->ch_display_filled &&
!osys->ch_zoom &&
+#if defined(_WIN32) || defined(__OS2__)
!ch_wm_state &&
+#endif
!osys->ch_sar &&
!osys->ch_crop) {
@@ -980,6 +984,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
vout_SendEventZoom(osys->vout, osys->cfg.zoom.num, osys->cfg.zoom.den);
}
+#if defined(_WIN32) || defined(__OS2__)
/* */
if (ch_wm_state) {
if (vout_display_Control(vd, VOUT_DISPLAY_CHANGE_WINDOW_STATE, wm_state)) {
@@ -991,6 +996,7 @@ bool vout_ManageDisplay(vout_display_t *vd, bool allow_reset_pictures)
/* */
vout_SendEventOnTop(osys->vout, osys->wm_state_initial);
}
+#endif
/* */
if (osys->ch_sar) {
video_format_t source = vd->source;
@@ -1286,7 +1292,6 @@ static vout_display_t *DisplayNew(vout_thread_t *vout,
vout_display_cfg_t *cfg = &osys->cfg;
*cfg = state->cfg;
- osys->wm_state_initial = -1;
osys->sar_initial.num = state->sar.num;
osys->sar_initial.den = state->sar.den;
vout_display_GetDefaultDisplaySize(&cfg->display.width, &cfg->display.height,
@@ -1317,9 +1322,14 @@ static vout_display_t *DisplayNew(vout_thread_t *vout,
&osys->height_saved,
source, &cfg_windowed);
}
+
osys->zoom.num = cfg->zoom.num;
osys->zoom.den = cfg->zoom.den;
+#if defined(_WIN32) || defined(__OS2__)
+ osys->wm_state_initial = VOUT_WINDOW_STATE_NORMAL;
osys->wm_state = state->wm_state;
+ osys->ch_wm_state = true;
+#endif
osys->fit_window = 0;
osys->event.fifo = NULL;
@@ -1363,8 +1373,6 @@ static vout_display_t *DisplayNew(vout_thread_t *vout,
if (osys->sar.num != source->i_sar_num ||
osys->sar.den != source->i_sar_den)
osys->ch_sar = true;
- if (osys->wm_state != osys->wm_state_initial)
- osys->ch_wm_state = true;
return p_display;
}
@@ -1376,7 +1384,9 @@ void vout_DeleteDisplay(vout_display_t *vd, vout_display_state_t *state)
if (state) {
if (!osys->is_wrapper )
state->cfg = osys->cfg;
+#if defined(_WIN32) || defined(__OS2__)
state->wm_state = osys->wm_state;
+#endif
state->sar.num = osys->sar_initial.num;
state->sar.den = osys->sar_initial.den;
}
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index c5f360e..cf6f369 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1269,11 +1269,12 @@ static void ThreadChangeWindowState(vout_thread_t *vout, unsigned state)
if (window != NULL)
vout_window_SetState(window, state);
- else
+#if defined(_WIN32) || defined(__OS2__)
+ else /* FIXME: remove this event */
if (vout->p->display.vd != NULL)
- /* FIXME: remove this event, fix MSW and OS/2 window providers */
vout_display_SendEvent(vout->p->display.vd,
VOUT_DISPLAY_EVENT_WINDOW_STATE, state);
+#endif
}
static void ThreadChangeDisplayFilled(vout_thread_t *vout, bool is_filled)
@@ -1353,12 +1354,14 @@ static int ThreadStart(vout_thread_t *vout, const vout_display_state_t *state)
var_Create(vout, "video-wallpaper", VLC_VAR_BOOL|VLC_VAR_DOINHERIT);
VoutGetDisplayCfg(vout, &state_default.cfg, vout->p->display.title);
+#if defined(_WIN32) || defined(__OS2__)
bool below = var_InheritBool(vout, "video-wallpaper");
bool above = var_CreateGetBool(vout, "video-on-top");
state_default.wm_state = below ? VOUT_WINDOW_STATE_BELOW
: above ? VOUT_WINDOW_STATE_ABOVE
: VOUT_WINDOW_STATE_NORMAL;
+#endif
state_default.sar.num = 0;
state_default.sar.den = 0;
More information about the vlc-commits
mailing list