vlc | branch: master | Steve Lhomme <[email protected]> | Thu Mar 21 16:21:27 2019 +0100| [6c995ea924f11af87afd202cff5079b0103ae232] | committer: Steve Lhomme
vout:win32: isolate the window placement fields in a structure These fields are needed even when there's no window to handle. For example if the display dimensions/position are used for external rendering. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6c995ea924f11af87afd202cff5079b0103ae232 --- modules/video_output/win32/common.c | 62 ++++++++++++++++----------------- modules/video_output/win32/common.h | 30 ++++++++-------- modules/video_output/win32/direct3d11.c | 49 +++++++++++++------------- modules/video_output/win32/direct3d9.c | 29 +++++++-------- modules/video_output/win32/glwin32.c | 11 +++--- modules/video_output/win32/wingdi.c | 17 ++++----- 6 files changed, 102 insertions(+), 96 deletions(-) diff --git a/modules/video_output/win32/common.c b/modules/video_output/win32/common.c index 34e59d9de9..d951fafd00 100644 --- a/modules/video_output/win32/common.c +++ b/modules/video_output/win32/common.c @@ -74,35 +74,35 @@ static bool GetExternalDimensions(void *opaque, UINT *width, UINT *height) } /* */ -int CommonInit(vout_display_t *vd, vout_display_sys_win32_t *sys, bool b_windowless, const vout_display_cfg_t *vdcfg) +int CommonInit(vout_display_t *vd, display_win32_area_t *area, vout_display_sys_win32_t *sys, + bool b_windowless, const vout_display_cfg_t *vdcfg) { + area->place_changed = false; + area->pf_GetDisplayDimensions = GetExternalDimensions; + area->opaque_dimensions = vd; + area->vdcfg = *vdcfg; + sys->hwnd = NULL; sys->hvideownd = NULL; sys->hparent = NULL; sys->hfswnd = NULL; - sys->place_changed = false; sys->b_windowless = b_windowless; sys->is_first_placement = true; sys->is_on_top = false; - sys->pf_GetDisplayDimensions = GetExternalDimensions; - sys->opaque_dimensions = vd; - #if !VLC_WINSTORE_APP #if !defined(NDEBUG) && defined(HAVE_DXGIDEBUG_H) sys->dxgidebug_dll = LoadLibrary(TEXT("DXGIDEBUG.DLL")); #endif if (!b_windowless) { - sys->pf_GetDisplayDimensions = GetWindowDimensions; - sys->opaque_dimensions = sys; + area->pf_GetDisplayDimensions = GetWindowDimensions; + area->opaque_dimensions = sys; } SetRectEmpty(&sys->rect_parent); var_Create(vd, "disable-screensaver", VLC_VAR_BOOL | VLC_VAR_DOINHERIT); - sys->vdcfg = *vdcfg; - if (b_windowless) return VLC_SUCCESS; @@ -145,17 +145,17 @@ int CommonInit(vout_display_t *vd, vout_display_sys_win32_t *sys, bool b_windowl * its job is to update the source and destination RECTs used to display the * picture. *****************************************************************************/ -void UpdateRects(vout_display_t *vd, vout_display_sys_win32_t *sys) +void UpdateRects(vout_display_t *vd, display_win32_area_t *area, vout_display_sys_win32_t *sys) { const video_format_t *source = &vd->source; UINT display_width, display_height; /* */ - const vout_display_cfg_t *cfg = &sys->vdcfg; + const vout_display_cfg_t *cfg = &area->vdcfg; /* Retrieve the window size */ - if (!sys->pf_GetDisplayDimensions(sys->opaque_dimensions, &display_width, &display_height)) + if (!area->pf_GetDisplayDimensions(area->opaque_dimensions, &display_width, &display_height)) { msg_Err(vd, "could not get the window dimensions"); return; @@ -174,13 +174,13 @@ void UpdateRects(vout_display_t *vd, vout_display_sys_win32_t *sys) place_cfg.align.vertical = VLC_VIDEO_ALIGN_TOP; #endif - vout_display_place_t before_place = sys->place; - vout_display_PlacePicture(&sys->place, source, &place_cfg); + vout_display_place_t before_place = area->place; + vout_display_PlacePicture(&area->place, source, &place_cfg); /* Signal the change in size/position */ - if (!vout_display_PlaceEquals(&before_place, &sys->place)) + if (!vout_display_PlaceEquals(&before_place, &area->place)) { - sys->place_changed |= true; + area->place_changed |= true; #ifndef NDEBUG msg_Dbg(vd, "DirectXUpdateRects source" @@ -190,14 +190,14 @@ void UpdateRects(vout_display_t *vd, vout_display_sys_win32_t *sys) source->i_width, source->i_height); msg_Dbg(vd, "DirectXUpdateRects image_dst" " coords: %i,%i,%i,%i", - sys->place.x, sys->place.y, - sys->place.x + sys->place.width, sys->place.y + sys->place.height); + area->place.x, area->place.y, + area->place.x + area->place.width, area->place.y + area->place.height); #endif #if !VLC_WINSTORE_APP if (sys != NULL) { - EventThreadUpdatePlace(sys->event, &sys->place); + EventThreadUpdatePlace(sys->event, &area->place); if (sys->hvideownd) { @@ -208,7 +208,7 @@ void UpdateRects(vout_display_t *vd, vout_display_sys_win32_t *sys) sys->is_first_placement = false; } SetWindowPos(sys->hvideownd, 0, - sys->place.x, sys->place.y, sys->place.width, sys->place.height, + area->place.x, area->place.y, area->place.width, area->place.height, swpFlags); } @@ -229,13 +229,13 @@ void CommonClean(vlc_object_t *obj, vout_display_sys_win32_t *sys) } } -void CommonManage(vout_display_t *vd, vout_display_sys_win32_t *sys) +void CommonManage(vout_display_t *vd, display_win32_area_t *area, vout_display_sys_win32_t *sys) { if (sys->b_windowless) return; if (EventThreadGetAndResetSizeChanged(sys->event)) - UpdateRects(vd, sys); + UpdateRects(vd, area, sys); } /* */ @@ -373,27 +373,27 @@ static int CommonControlSetFullscreen(vlc_object_t *obj, vout_display_sys_win32_ } #endif /* !VLC_WINSTORE_APP */ -int CommonControl(vout_display_t *vd, vout_display_sys_win32_t *sys, int query, va_list args) +int CommonControl(vout_display_t *vd, display_win32_area_t *area, vout_display_sys_win32_t *sys, int query, va_list args) { switch (query) { case VOUT_DISPLAY_CHANGE_DISPLAY_FILLED: /* const vout_display_cfg_t *p_cfg */ case VOUT_DISPLAY_CHANGE_ZOOM: /* const vout_display_cfg_t *p_cfg */ case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT: case VOUT_DISPLAY_CHANGE_SOURCE_CROP: { - sys->vdcfg = *va_arg(args, const vout_display_cfg_t *); - UpdateRects(vd, sys); + area->vdcfg = *va_arg(args, const vout_display_cfg_t *); + UpdateRects(vd, area, sys); return VLC_SUCCESS; } case VOUT_DISPLAY_CHANGE_DISPLAY_SIZE: /* const vout_display_cfg_t *p_cfg */ { /* Update dimensions */ - sys->vdcfg = *va_arg(args, const vout_display_cfg_t *); + area->vdcfg = *va_arg(args, const vout_display_cfg_t *); #if !VLC_WINSTORE_APP - if (!sys->vdcfg.is_fullscreen && !sys->b_windowless) { + if (!area->vdcfg.is_fullscreen && !sys->b_windowless) { RECT rect_window = { .top = 0, .left = 0, - .right = sys->vdcfg.display.width, - .bottom = sys->vdcfg.display.height, + .right = area->vdcfg.display.width, + .bottom = area->vdcfg.display.height, }; AdjustWindowRect(&rect_window, EventThreadGetWindowStyle(sys->event), 0); SetWindowPos(sys->hwnd, 0, 0, 0, @@ -401,7 +401,7 @@ int CommonControl(vout_display_t *vd, vout_display_sys_win32_t *sys, int query, RECTHeight(rect_window), SWP_NOMOVE); } #endif /* !VLC_WINSTORE_APP */ - UpdateRects(vd, sys); + UpdateRects(vd, area, sys); return VLC_SUCCESS; } #if !VLC_WINSTORE_APP @@ -428,7 +428,7 @@ int CommonControl(vout_display_t *vd, vout_display_sys_win32_t *sys, int query, bool fs = va_arg(args, int); if (CommonControlSetFullscreen(VLC_OBJECT(vd), sys, fs)) return VLC_EGENERIC; - UpdateRects(vd, sys); + UpdateRects(vd, area, sys); return VLC_SUCCESS; } #endif /* !VLC_WINSTORE_APP */ diff --git a/modules/video_output/win32/common.h b/modules/video_output/win32/common.h index bf8de014cc..e3c85a27ea 100644 --- a/modules/video_output/win32/common.h +++ b/modules/video_output/win32/common.h @@ -27,6 +27,18 @@ *****************************************************************************/ #include "events.h" +typedef struct display_win32_area_t +{ + /* Coordinates of dest images (used when blitting to display) */ + vout_display_place_t place; + bool place_changed; + + vout_display_cfg_t vdcfg; + + bool (*pf_GetDisplayDimensions)(void *opaque, UINT *w, UINT *h); + void *opaque_dimensions; +} display_win32_area_t; + #define RECTWidth(r) (LONG)((r).right - (r).left) #define RECTHeight(r) (LONG)((r).bottom - (r).top) @@ -57,35 +69,25 @@ typedef struct vout_display_sys_win32_t HINSTANCE dxgidebug_dll; # endif - bool place_changed; - /* Misc */ bool is_first_placement; bool is_on_top; - /* Coordinates of dest images (used when blitting to display) */ - vout_display_place_t place; - - vout_display_cfg_t vdcfg; - bool use_desktop; /* show video on desktop window ? */ - - bool (*pf_GetDisplayDimensions)(void *opaque, UINT *w, UINT *h); - void *opaque_dimensions; } vout_display_sys_win32_t; /***************************************************************************** * Prototypes from common.c *****************************************************************************/ -int CommonInit(vout_display_t *, vout_display_sys_win32_t *, bool b_windowless, const vout_display_cfg_t *); +int CommonInit(vout_display_t *, display_win32_area_t *, vout_display_sys_win32_t *, bool b_windowless, const vout_display_cfg_t *); #if !VLC_WINSTORE_APP void CommonClean(vlc_object_t *, vout_display_sys_win32_t *); #endif /* !VLC_WINSTORE_APP */ -void CommonManage(vout_display_t *, vout_display_sys_win32_t *); -int CommonControl(vout_display_t *, vout_display_sys_win32_t *, int , va_list ); +void CommonManage(vout_display_t *, display_win32_area_t *, vout_display_sys_win32_t *); +int CommonControl(vout_display_t *, display_win32_area_t *, vout_display_sys_win32_t *, int , va_list ); -void UpdateRects (vout_display_t *, vout_display_sys_win32_t *); +void UpdateRects (vout_display_t *, display_win32_area_t *, vout_display_sys_win32_t *); /***************************************************************************** * Constants diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c index 216f055e2e..a3b8eec408 100644 --- a/modules/video_output/win32/direct3d11.c +++ b/modules/video_output/win32/direct3d11.c @@ -90,6 +90,7 @@ vlc_module_end () struct vout_display_sys_t { vout_display_sys_win32_t sys; + display_win32_area_t area; /* Sensors */ void *p_sensors; @@ -188,8 +189,8 @@ static HRESULT UpdateBackBuffer(vout_display_t *vd) { vout_display_sys_t *sys = vd->sys; UINT i_width, i_height; - i_width = sys->sys.place.width; - i_height = sys->sys.place.height; + i_width = sys->area.place.width; + i_height = sys->area.place.height; if (!sys->resizeCb(sys->outside_opaque, i_width, i_height)) return E_FAIL; @@ -200,8 +201,8 @@ static HRESULT UpdateBackBuffer(vout_display_t *vd) static void UpdateSize(vout_display_t *vd) { vout_display_sys_t *sys = vd->sys; - msg_Dbg(vd, "Detected size change %dx%d", sys->sys.place.width, - sys->sys.place.height); + msg_Dbg(vd, "Detected size change %dx%d", sys->area.place.width, + sys->area.place.height); UpdateBackBuffer(vd); @@ -285,15 +286,15 @@ static bool StartRendering(void *opaque) #if VLC_WINSTORE_APP /* TODO read the swapchain size and call VOUT_DISPLAY_CHANGE_DISPLAY_SIZE */ - UpdateRects(vd, sys); + UpdateRects(vd, &sys->area, &sys->sys); #else /* !VLC_WINSTORE_APP */ - CommonManage(vd, &sys->sys); + CommonManage(vd, &sys->area, &sys->sys); #endif - if ( sys->sys.place_changed ) + if ( sys->area.place_changed ) { UpdateSize(vd); - sys->sys.place_changed =false; + sys->area.place_changed =false; } D3D11_ClearRenderTargets( &sys->d3d_dev, sys->display.pixelFormat, sys->swapchainTargetView ); @@ -478,7 +479,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg, goto error; } #endif - if (CommonInit(vd, &sys->sys, d3d11_ctx != NULL, cfg)) + if (CommonInit(vd, &sys->area, &sys->sys, d3d11_ctx != NULL, cfg)) goto error; #if VLC_WINSTORE_APP @@ -721,7 +722,7 @@ static void SetQuadVSProjection(vout_display_t *vd, d3d_quad_t *quad, const vlc_ f_fovx < -0.001f ) return; - float f_sar = (float) sys->sys.vdcfg.display.width / sys->sys.vdcfg.display.height; + float f_sar = (float) sys->area.vdcfg.display.width / sys->area.vdcfg.display.height; float f_fovy = UpdateFOVy(f_fovx, f_sar); float f_z = UpdateZ(f_fovx, f_fovy); @@ -743,7 +744,7 @@ static void SetQuadVSProjection(vout_display_t *vd, d3d_quad_t *quad, const vlc_ static int Control(vout_display_t *vd, int query, va_list args) { vout_display_sys_t *sys = vd->sys; - int res = CommonControl( vd, &sys->sys, query, args ); + int res = CommonControl( vd, &sys->area, &sys->sys, query, args ); if (query == VOUT_DISPLAY_CHANGE_VIEWPOINT) { @@ -755,10 +756,10 @@ static int Control(vout_display_t *vd, int query, va_list args) } } - if ( sys->sys.place_changed ) + if ( sys->area.place_changed ) { UpdateSize(vd); - sys->sys.place_changed =false; + sys->area.place_changed =false; } return res; @@ -846,7 +847,7 @@ static void PreparePicture(vout_display_t *vd, picture_t *picture, subpicture_t sys->picQuad.i_height = texDesc.Height; sys->picQuad.i_width = texDesc.Width; - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); UpdateSize(vd); } } @@ -1364,14 +1365,14 @@ static void UpdatePicQuadPosition(vout_display_t *vd) RECT rect_dst = { .left = 0, - .right = sys->sys.place.width, + .right = sys->area.place.width, .top = 0, - .bottom = sys->sys.place.height + .bottom = sys->area.place.height }; D3D11_UpdateViewport( &sys->picQuad, &rect_dst, sys->display.pixelFormat ); - SetQuadVSProjection(vd, &sys->picQuad, &sys->sys.vdcfg.viewpoint); + SetQuadVSProjection(vd, &sys->picQuad, &sys->area.vdcfg.viewpoint); #ifndef NDEBUG msg_Dbg( vd, "picQuad position (%.02f,%.02f) %.02fx%.02f", @@ -1462,7 +1463,7 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma sys->picQuad.i_height = (sys->picQuad.i_height + 0x01) & ~0x01; } - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); video_format_t surface_fmt = *fmt; surface_fmt.i_width = sys->picQuad.i_width; @@ -1489,7 +1490,7 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma if ( vd->source.projection_mode == PROJECTION_MODE_EQUIRECTANGULAR || vd->source.projection_mode == PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD ) - SetQuadVSProjection( vd, &sys->picQuad, &sys->sys.vdcfg.viewpoint ); + SetQuadVSProjection( vd, &sys->picQuad, &sys->area.vdcfg.viewpoint ); if (is_d3d11_opaque(fmt->i_chroma)) { ID3D10Multithread *pMultithread; @@ -1572,7 +1573,7 @@ static int Direct3D11CreateGenericResources(vout_display_t *vd) ID3D11DepthStencilState_Release(pDepthStencilState); } - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); hr = UpdateBackBuffer(vd); if (FAILED(hr)) { @@ -1811,10 +1812,10 @@ static int Direct3D11MapSubpicture(vout_display_t *vd, int *subpicture_region_co d3d_quad_t *quad = (d3d_quad_t *) quad_picture->p_sys; RECT spuViewport; - spuViewport.left = (FLOAT) r->i_x * sys->sys.place.width / subpicture->i_original_picture_width; - spuViewport.top = (FLOAT) r->i_y * sys->sys.place.height / subpicture->i_original_picture_height; - spuViewport.right = (FLOAT) (r->i_x + r->fmt.i_visible_width) * sys->sys.place.width / subpicture->i_original_picture_width; - spuViewport.bottom = (FLOAT) (r->i_y + r->fmt.i_visible_height) * sys->sys.place.height / subpicture->i_original_picture_height; + spuViewport.left = (FLOAT) r->i_x * sys->area.place.width / subpicture->i_original_picture_width; + spuViewport.top = (FLOAT) r->i_y * sys->area.place.height / subpicture->i_original_picture_height; + spuViewport.right = (FLOAT) (r->i_x + r->fmt.i_visible_width) * sys->area.place.width / subpicture->i_original_picture_width; + spuViewport.bottom = (FLOAT) (r->i_y + r->fmt.i_visible_height) * sys->area.place.height / subpicture->i_original_picture_height; if (r->zoom_h.num != 0 && r->zoom_h.den != 0) { diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c index 1e44b74f83..e0765f9c3a 100644 --- a/modules/video_output/win32/direct3d9.c +++ b/modules/video_output/win32/direct3d9.c @@ -138,6 +138,7 @@ typedef struct struct vout_display_sys_t { vout_display_sys_win32_t sys; + display_win32_area_t area; bool allow_hw_yuv; /* Should we use hardware YUV->RGB conversions */ struct { @@ -485,9 +486,9 @@ static int Direct3D9ImportPicture(vout_display_t *vd, }; RECT rect_dst = { .left = 0, - .right = vd->sys->sys.place.width, + .right = vd->sys->area.place.width, .top = 0, - .bottom = vd->sys->sys.place.height, + .bottom = vd->sys->area.place.height, }; Direct3D9SetupVertices(region->vertex, &rect_src, ©_rect, &rect_dst, 255, vd->source.orientation); @@ -899,7 +900,7 @@ static int Direct3D9Reset(vout_display_t *vd, video_format_t *fmtp) return VLC_EGENERIC; } - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); /* re-create them */ if (Direct3D9CreateResources(vd, fmtp)) { @@ -915,7 +916,7 @@ static void UpdateDesktopMode(vout_display_t *vd) if (sys->sys.use_desktop) { /* Save non-desktop state */ - sys->desktop_save.is_fullscreen = sys->sys.vdcfg.is_fullscreen; + sys->desktop_save.is_fullscreen = sys->area.vdcfg.is_fullscreen; sys->desktop_save.is_on_top = sys->sys.is_on_top; /* Disable fullscreen/on_top while using desktop */ @@ -1026,8 +1027,8 @@ static void Direct3D9ImportSubpicture(vout_display_t *vd, } /* Map the subpicture to sys->sys.sys.place */ - const float scale_w = (float)(sys->sys.place.width) / subpicture->i_original_picture_width; - const float scale_h = (float)(sys->sys.place.height) / subpicture->i_original_picture_height; + const float scale_w = (float)(sys->area.place.width) / subpicture->i_original_picture_width; + const float scale_h = (float)(sys->area.place.height) / subpicture->i_original_picture_height; RECT dst; dst.left = scale_w * r->i_x, @@ -1207,7 +1208,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, VLC_UNUSED(date); vout_display_sys_t *sys = vd->sys; - CommonManage(vd, &sys->sys); + CommonManage(vd, &sys->area, &sys->sys); /* Desktop mode change */ bool prev_desktop = sys->sys.use_desktop; @@ -1216,7 +1217,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, UpdateDesktopMode(vd); /* Position Change */ - if (sys->sys.place_changed) { + if (sys->area.place_changed) { #if 0 /* need that when bicubic filter is available */ RECT rect; UINT width, height; @@ -1234,7 +1235,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, } #endif sys->clear_scene = true; - sys->sys.place_changed = false; + sys->area.place_changed = false; } picture_sys_t *p_sys = picture->p_sys; @@ -1333,9 +1334,9 @@ static void Swap(void *opaque) // No stretching should happen here ! RECT src = { .left = 0, - .right = sys->sys.place.width, + .right = sys->area.place.width, .top = 0, - .bottom = sys->sys.place.height + .bottom = sys->area.place.height }; HRESULT hr; @@ -1504,7 +1505,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt, fmt->i_bmask = d3dfmt->bmask; sys->sw_texture_fmt = d3dfmt; - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); if (Direct3D9CreateResources(vd, fmt)) { msg_Err(vd, "Failed to allocate resources"); @@ -1555,7 +1556,7 @@ static int Control(vout_display_t *vd, int query, va_list args) return VLC_SUCCESS; } default: - return CommonControl(vd, &sys->sys, query, args); + return CommonControl(vd, &sys->area, &sys->sys, query, args); } } @@ -1679,7 +1680,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg, sys->desktop_save.is_fullscreen = cfg->is_fullscreen; sys->desktop_save.is_on_top = false; - if (CommonInit(vd, &sys->sys, d3d9_device != NULL, cfg)) + if (CommonInit(vd, &sys->area, &sys->sys, d3d9_device != NULL, cfg)) goto error; /* */ diff --git a/modules/video_output/win32/glwin32.c b/modules/video_output/win32/glwin32.c index 80b6ec1e45..5d58a87992 100644 --- a/modules/video_output/win32/glwin32.c +++ b/modules/video_output/win32/glwin32.c @@ -61,6 +61,7 @@ vlc_module_end() struct vout_display_sys_t { vout_display_sys_win32_t sys; + display_win32_area_t area; vlc_gl_t *gl; vout_display_opengl_t *vgl; @@ -82,7 +83,7 @@ static int Control(vout_display_t *vd, int query, va_list args) return vout_display_opengl_SetViewpoint(sys->vgl, &va_arg (args, const vout_display_cfg_t* )->viewpoint); - return CommonControl(vd, &sys->sys, query, args); + return CommonControl(vd, &sys->area, &sys->sys, query, args); } static const struct vout_window_operations embedVideoWindow_Ops = @@ -121,7 +122,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg, return VLC_ENOMEM; /* */ - if (CommonInit(vd, &sys->sys, false, cfg)) + if (CommonInit(vd, &sys->area, &sys->sys, false, cfg)) goto error; if (vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR) @@ -220,10 +221,10 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic VLC_UNUSED(date); vout_display_sys_t *sys = vd->sys; - CommonManage(vd, &sys->sys); + CommonManage(vd, &sys->area, &sys->sys); - const int width = sys->sys.place.width; - const int height = sys->sys.place.height; + const int width = sys->area.place.width; + const int height = sys->area.place.height; vlc_gl_Resize (sys->gl, width, height); if (vlc_gl_MakeCurrent (sys->gl) != VLC_SUCCESS) return; diff --git a/modules/video_output/win32/wingdi.c b/modules/video_output/win32/wingdi.c index 2f5c10e828..57d581022c 100644 --- a/modules/video_output/win32/wingdi.c +++ b/modules/video_output/win32/wingdi.c @@ -62,6 +62,7 @@ vlc_module_end () struct vout_display_sys_t { vout_display_sys_win32_t sys; + display_win32_area_t area; int i_depth; @@ -100,7 +101,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic static int Control(vout_display_t *vd, int query, va_list args) { vout_display_sys_t *sys = vd->sys; - return CommonControl(vd, &sys->sys, query, args); + return CommonControl(vd, &sys->area, &sys->sys, query, args); } /* */ @@ -116,7 +117,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg, if (!sys) return VLC_ENOMEM; - if (CommonInit(vd, &sys->sys, false, cfg)) + if (CommonInit(vd, &sys->area, &sys->sys, false, cfg)) goto error; /* */ @@ -155,10 +156,10 @@ static void Display(vout_display_t *vd, picture_t *picture) SelectObject(sys->off_dc, sys->off_bitmap); - if (sys->sys.place.width != vd->source.i_visible_width || - sys->sys.place.height != vd->source.i_visible_height) { + if (sys->area.place.width != vd->source.i_visible_width || + sys->area.place.height != vd->source.i_visible_height) { StretchBlt(hdc, 0, 0, - sys->sys.place.width, sys->sys.place.height, + sys->area.place.width, sys->area.place.height, sys->off_dc, vd->source.i_x_offset, vd->source.i_y_offset, vd->source.i_x_offset + vd->source.i_visible_width, @@ -166,7 +167,7 @@ static void Display(vout_display_t *vd, picture_t *picture) SRCCOPY); } else { BitBlt(hdc, 0, 0, - sys->sys.place.width, sys->sys.place.height, + sys->area.place.width, sys->area.place.height, sys->off_dc, vd->source.i_x_offset, vd->source.i_y_offset, SRCCOPY); @@ -174,7 +175,7 @@ static void Display(vout_display_t *vd, picture_t *picture) ReleaseDC(sys->sys.hvideownd, hdc); - CommonManage(vd, &sys->sys); + CommonManage(vd, &sys->area, &sys->sys); } static int Init(vout_display_t *vd, video_format_t *fmt) @@ -262,7 +263,7 @@ static int Init(vout_display_t *vd, video_format_t *fmt) if (!sys->sys.b_windowless) EventThreadUpdateTitle(sys->sys.event, VOUT_TITLE " (WinGDI output)"); - UpdateRects(vd, &sys->sys); + UpdateRects(vd, &sys->area, &sys->sys); return VLC_SUCCESS; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
