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.
|
|
/******************************************************************************\
* * * 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; }
|