vmware/xorg: Stop video ports on leave vt

This commit is contained in:
Jakob Bornecrantz 2009-12-04 16:25:59 +01:00
parent f2e3fc1814
commit 124f4bc977
3 changed files with 56 additions and 0 deletions

View File

@ -66,6 +66,8 @@ Bool vmw_video_init(ScrnInfoPtr pScrn, struct vmw_driver *vmw);
Bool vmw_video_close(ScrnInfoPtr pScrn, struct vmw_driver *vmw);
void vmw_video_stop_all(ScrnInfoPtr pScrn, struct vmw_driver *vmw);
/***********************************************************************
* vmw_ioctl.c

View File

@ -124,6 +124,26 @@ vmw_screen_close(ScrnInfoPtr pScrn)
return TRUE;
}
static Bool
vmw_screen_enter_vt(ScrnInfoPtr pScrn)
{
debug_printf("%s: enter\n", __func__);
return TRUE;
}
static Bool
vmw_screen_leave_vt(ScrnInfoPtr pScrn)
{
struct vmw_driver *vmw = vmw_driver(pScrn);
debug_printf("%s: enter\n", __func__);
vmw_video_stop_all(pScrn, vmw);
return TRUE;
}
/*
* Functions for setting up hooks into the xorg state tracker
*/
@ -142,6 +162,8 @@ vmw_screen_pre_init(ScrnInfoPtr pScrn, int flags)
ms = modesettingPTR(pScrn);
ms->winsys_screen_init = vmw_screen_init;
ms->winsys_screen_close = vmw_screen_close;
ms->winsys_enter_vt = vmw_screen_enter_vt;
ms->winsys_leave_vt = vmw_screen_leave_vt;
return TRUE;
}

View File

@ -358,6 +358,38 @@ vmw_video_close(ScrnInfoPtr pScrn, struct vmw_driver *vmw)
}
/*
*-----------------------------------------------------------------------------
*
* vmw_video_stop_all --
*
* Stop all video streams from playing.
*
* Results:
* None.
*
* Side effects:
* All buffers are freed.
*
*-----------------------------------------------------------------------------
*/
void vmw_video_stop_all(ScrnInfoPtr pScrn, struct vmw_driver *vmw)
{
struct vmw_video_private *video = vmw->video_priv;
int i;
debug_printf("%s: enter\n", __func__);
if (!video)
return;
for (i = 0; i < VMWARE_VID_NUM_PORTS; ++i) {
vmw_xv_stop_video(pScrn, &video->port[i], TRUE);
}
}
/*
*-----------------------------------------------------------------------------
*