add_bool("direct3d-desktop", false, NULL, DESKTOP_TEXT, DESKTOP_LONGTEXT, true)
set_description(N_("DirectX 3D video output"))
- set_capability("vout display", 50)
+ set_capability("vout display", 70)
add_shortcut("direct3d_xp")
set_callbacks(OpenVideoXP, Close)
linked_with_a_crap_library_which_uses_atexit()
add_submodule()
- set_capability("video output", 150)
+ set_capability("vout display", 150)
add_shortcut("direct3d_vista")
set_callbacks(OpenVideoVista, Close)
vlc_module_end ()
static int Open(vlc_object_t *);
-static picture_t *Get (vout_display_t *);
-static void Prepare(vout_display_t *, picture_t *);
-static void Display(vout_display_t *, picture_t *);
-static int Control(vout_display_t *, int, va_list);
-static void Manage (vout_display_t *);
+static picture_pool_t *Pool (vout_display_t *, unsigned);
+static void Prepare(vout_display_t *, picture_t *);
+static void Display(vout_display_t *, picture_t *);
+static int Control(vout_display_t *, int, va_list);
+static void Manage (vout_display_t *);
static int Direct3DCreate (vout_display_t *);
static int Direct3DReset (vout_display_t *);
vd->fmt = fmt;
vd->info = info;
- vd->get = Get;
+ vd->pool = Pool;
vd->prepare = Prepare;
vd->display = Display;
vd->control = Control;
}
/* */
-static picture_t *Get(vout_display_t *vd)
+static picture_pool_t *Pool(vout_display_t *vd, unsigned count)
{
- vout_display_sys_t *sys = vd->sys;
-
- if (!sys->pool)
- return NULL;
- return picture_pool_Get(sys->pool);
+ VLC_UNUSED(count);
+ return vd->sys->pool;
}
static int Direct3DLockSurface(picture_t *);
if (FAILED(hr)) {
msg_Dbg(vd, "%s:%d (hr=0x%0lX)", __FUNCTION__, __LINE__, hr);
}
-
- if (sys->is_first_display) {
- /* Video window is initially hidden, show it now since we got a
- * picture to show.
- */
- SetWindowPos(vd->sys->hvideownd, 0, 0, 0, 0, 0,
- SWP_ASYNCWINDOWPOS|
- SWP_FRAMECHANGED|
- SWP_SHOWWINDOW|
- SWP_NOMOVE|
- SWP_NOSIZE|
- SWP_NOZORDER);
- sys->is_first_display = false;
- }
-
#if 0
VLC_UNUSED(picture);
#else
/* XXX See Prepare() */
picture_Release(picture);
#endif
+
+ CommonDisplay(vd);
}
static int ControlResetDevice(vout_display_t *vd)
{
d3dpp->Flags = D3DPRESENTFLAG_VIDEO;
d3dpp->Windowed = TRUE;
d3dpp->hDeviceWindow = vd->sys->hvideownd;
- d3dpp->BackBufferWidth = d3ddm.Width;
- d3dpp->BackBufferHeight = d3ddm.Height;
+ d3dpp->BackBufferWidth = __MAX(GetSystemMetrics(SM_CXVIRTUALSCREEN),
+ d3ddm.Width);
+ d3dpp->BackBufferHeight = __MAX(GetSystemMetrics(SM_CYVIRTUALSCREEN),
+ d3ddm.Height);
d3dpp->SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3dpp->BackBufferCount = 1;
d3dpp->EnableAutoDepthStencil = FALSE;
- const unsigned adapter_count = IDirect3D9_GetAdapterCount(sys->d3dobj);
- for (unsigned i = 1; i < adapter_count; i++) {
- hr = IDirect3D9_GetAdapterDisplayMode(sys->d3dobj, i, &d3ddm);
- if (FAILED(hr))
- continue;
- d3dpp->BackBufferWidth = __MAX(d3dpp->BackBufferWidth, d3ddm.Width);
- d3dpp->BackBufferHeight = __MAX(d3dpp->BackBufferHeight, d3ddm.Height);
- }
-
/* */
RECT *display = &vd->sys->rect_display;
display->left = 0;