Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

153 lines
4.0 KiB

/******************************************************************************\
* *
* HLI.C - Highlight related code. *
* *
* Copyright (c) C-Cube Microsystems 1996 *
* All Rights Reserved. *
* *
* Use of C-Cube Microsystems code is governed by terms and conditions *
* stated in the accompanying licensing statement. *
* *
\******************************************************************************/
#include "Headers.h"
#pragma hdrstop
#include "hli.h"
#include "cl6100.h"
#define TIMEOUT_COUNT 10
static DWORD dwTimeOut = TIMEOUT_COUNT;
BOOL bJustHighLight = FALSE;
extern void UpdateOrdinalNumber(IN PHW_DEVICE_EXTENSION pHwDevExt);
static void HighlightSetProp( PHW_DEVICE_EXTENSION pHwDevExt );
/*
** HighlightSetPropIfAdapterReady ()
**
** Set property handling routine for the Highlight.
**
** Arguments:
**
** pSrb -> property command block
** pSrb->CommandData.PropertyInfo describes the requested property
**
** Returns:
**
** Side Effects:
*/
void HighlightSetPropIfAdapterReady( PHW_DEVICE_EXTENSION pHwDevExt )
{
// PHW_DEVICE_EXTENSION pHwDevExt = (PHW_DEVICE_EXTENSION)pSrb->HwDeviceExtension;
PKSPROPERTY_SPHLI hli = &(pHwDevExt->hli);
if ( hli->StartPTM == 0 )
{
//
// Make sure that the next real Highlight is not executed before
// valid SPU is received (and before it's time).
//
pHwDevExt->bValidSPU = FALSE;
//
// Set HLI here to clean up the screen.
//
HighlightSetProp( pHwDevExt );
pHwDevExt->bHliPending = FALSE;
}
else
{
if ( ( !pHwDevExt->bValidSPU || (hli->StartPTM > DVD_GetSTC()) ) && dwTimeOut )
{
MonoOutStr( " !!! Schedule HLI CB !!! " );
dwTimeOut--;
StreamClassScheduleTimer( NULL, pHwDevExt,
100000,
(PHW_TIMER_ROUTINE)HighlightSetPropIfAdapterReady,
pHwDevExt );
if(pHwDevExt->bTimerScheduled) //temp fix //sri
{
pHwDevExt->bTimerScheduled = FALSE;
MonoOutStr("CallAdapterSend");
UpdateOrdinalNumber(pHwDevExt);
AdapterSendData(pHwDevExt);
}
}
else
{
//
// This set most likely will be called when menu is already ON.
//
HighlightSetProp( pHwDevExt );
pHwDevExt->bHliPending = FALSE;
}
}
}
/*
** HighlightSetProp ()
**
** Set property handling routine for the Highlight.
**
** Arguments:
**
** pSrb -> property command block
** pSrb->CommandData.PropertyInfo describes the requested property
**
** Returns:
**
** Side Effects:
*/
static void HighlightSetProp( PHW_DEVICE_EXTENSION pHwDevExt )
{
DWORD dwContrast;
DWORD dwColor;
DWORD dwYGeom;
DWORD dwXGeom;
PKSPROPERTY_SPHLI hli = &(pHwDevExt->hli);
dwColor = ( (DWORD)(hli->ColCon.emph1col) << 8) +
( (DWORD)(hli->ColCon.emph2col) << 12) +
( (DWORD)(hli->ColCon.backcol) << 0) +
( (DWORD)(hli->ColCon.patcol) << 4);
dwContrast = ( (DWORD)(hli->ColCon.emph1con) << 8) +
( (DWORD)(hli->ColCon.emph2con) << 12) +
( (DWORD)(hli->ColCon.backcon) << 0) +
( (DWORD)(hli->ColCon.patcon) << 4);
dwYGeom = ( ((DWORD)(hli->StartY)) << 12) + (hli->StopY);
dwXGeom = ( ((DWORD)(hli->StartX)) << 12) + (hli->StopX);
MonoOutChar('<');
MonoOutULong( hli->StartPTM );
MonoOutChar('-');
MonoOutULong( hli->EndPTM );
MonoOutChar('>');
DVD_GetSTC();
//bJustHighLight = TRUE;
if((dwXGeom == 0)&& (dwYGeom==0))
return;
if ( !DVD_HighLight2( dwContrast, dwColor, dwYGeom, dwXGeom ) )
{
MonoOutStr( " !!!! DVD_HighLight2 has failed !!!! " );
}
//
// Restore the Timeout counter
//
dwTimeOut = TIMEOUT_COUNT;
}