[vlc-devel] [PATCH] Revert "vout: assume/require a window"
Steve Lhomme
robux4 at ycbcr.xyz
Tue Aug 28 15:30:42 CEST 2018
This reverts commit 5563c33a5cf02c9d7adb6bb6e3f6a3994282408c.
--
It works but I have no idea what I'm doing.
---
include/vlc_vout_display.h | 3 ++-
src/video_output/display.c | 12 ++++++------
src/video_output/display.h | 1 +
src/video_output/video_output.c | 24 ++++++++++++++----------
4 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
index 86eb1bced0..95990bda34 100644
--- a/include/vlc_vout_display.h
+++ b/include/vlc_vout_display.h
@@ -377,7 +377,8 @@ static inline vout_window_t *vout_display_NewWindow(vout_display_t *vd, unsigned
static inline bool vout_display_IsWindowed(vout_display_t *vd)
{
- return vd->cfg->window->type != VOUT_WINDOW_TYPE_DUMMY;
+ return vd->cfg->window != NULL
+ && vd->cfg->window->type != VOUT_WINDOW_TYPE_DUMMY;
}
/**
diff --git a/src/video_output/display.c b/src/video_output/display.c
index b0c0fdbb3e..e0d44bd190 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -113,7 +113,10 @@ static vout_display_t *vout_display_New(vlc_object_t *obj,
vd->module = NULL;
}
- vout_window_SetSize(cfg->window, cfg->display.width, cfg->display.height);
+ if (cfg->window != NULL)
+ vout_window_SetSize(cfg->window,
+ cfg->display.width, cfg->display.height);
+
return vd;
}
@@ -1201,7 +1204,8 @@ static void SplitterClose(vout_display_t *vd)
vout_window_t *wnd = sys->display[i]->cfg->window;
vout_DeleteDisplay(sys->display[i], NULL);
- vout_display_window_Delete(wnd);
+ if (wnd != NULL)
+ vout_display_window_Delete(wnd);
}
TAB_CLEAN(sys->count, sys->display);
free(sys->picture);
@@ -1274,10 +1278,6 @@ vout_display_t *vout_NewSplitter(vout_thread_t *vout,
vout_display_GetDefaultDisplaySize(&cfg.width, &cfg.height,
source, &ostate.cfg);
ostate.cfg.window = vout_display_window_New(vout, &cfg);
- if (unlikely(ostate.cfg.window == NULL)) {
- vout_DeleteDisplay(wrapper, NULL);
- return NULL;
- }
vout_display_t *vd = DisplayNew(vout, &output->fmt, &ostate,
output->psz_module ? output->psz_module : module,
diff --git a/src/video_output/display.h b/src/video_output/display.h
index 875981e1a9..54d69b3c83 100644
--- a/src/video_output/display.h
+++ b/src/video_output/display.h
@@ -32,6 +32,7 @@ vout_display_t *vout_NewSplitter(vout_thread_t *vout,
/* FIXME should not be there */
void vout_SendDisplayEventMouse(vout_thread_t *, const vlc_mouse_t *);
+void vout_DeleteDisplayWindow(vout_thread_t *);
void vout_SetDisplayWindowSize(vout_thread_t *, unsigned, unsigned);
void vout_UpdateDisplaySourceProperties(vout_display_t *vd, const video_format_t *);
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 0abc33368c..ee61dab871 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -184,17 +184,13 @@ static vout_thread_t *VoutCreate(vlc_object_t *object,
};
vout_window_t *window = vout_display_window_New(vout, &wcfg);
- if (unlikely(window == NULL)) {
- spu_Destroy(vout->p->spu);
- vlc_object_release(vout);
- return NULL;
+ if (window != NULL)
+ {
+ if (var_InheritBool(vout, "video-wallpaper"))
+ vout_window_SetState(window, VOUT_WINDOW_STATE_BELOW);
+ else if (var_InheritBool(vout, "video-on-top"))
+ vout_window_SetState(window, VOUT_WINDOW_STATE_ABOVE);
}
-
- if (var_InheritBool(vout, "video-wallpaper"))
- vout_window_SetState(window, VOUT_WINDOW_STATE_BELOW);
- else if (var_InheritBool(vout, "video-on-top"))
- vout_window_SetState(window, VOUT_WINDOW_STATE_ABOVE);
-
vout->p->window = window;
} else
vout->p->window = NULL;
@@ -680,6 +676,14 @@ static void VoutGetDisplayCfg(vout_thread_t *vout, vout_display_cfg_t *cfg)
cfg->align.vertical = VOUT_DISPLAY_ALIGN_BOTTOM;
}
+void vout_DeleteDisplayWindow(vout_thread_t *vout)
+{
+ if (vout->p->window != NULL) {
+ vout_display_window_Delete(vout->p->window);
+ vout->p->window = NULL;
+ }
+}
+
void vout_SetDisplayWindowSize(vout_thread_t *vout,
unsigned width, unsigned height)
{
--
2.17.0.windows.1
More information about the vlc-devel
mailing list