⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 screenprocessing.c

📁 ZORAN 962/966 SOURCE CODE,DVD chip
💻 C
📖 第 1 页 / 共 2 页
字号:
				}
			}
#endif //SUPPORT_FLASH_CARD
				
			// TODO: need to return MS_OP_CORE_REMOVE_DEVICE for multipage clips menu
			break;
		}

#ifdef I86_USB_SUPPORT
	case MS_OP_CORE_UNSUPPORT_USB_DEVICE_INSERTED:
		MS_SendOp(MS_OP_MSG_DEVICE_MEDIA, MSG_DEVICE_MEDIA_BAD_USB);
		MS_SendOp(MS_OP_MSG_ERROR_UNSUPPORTED_USB, 0);
		break;
#endif //SUPPORT_FLASH_CARD
#ifdef FTA_SUPPORT
	case MS_OP_CORE_FTA_SCANNING_DONE:
        MS_SendOp(MS_OP_CHNL_SCANNING, 0);  
        MS_SendOp( MS_OP_FTA_SELECTION, 0 );
	    break;	
#endif 
	case MS_OP_CORE_CACHE_FINISHED:	
		wDeviceIdCurrent = (UINT16)lParam;
		MS_EnableUserOp(pThis);

		//clear UI program list for non-clip
#ifdef D_GUI_COMPONENT_PLAYMODE
		if (DEVICE_DISC == wDeviceIdCurrent)
			OPLAYMODE_ClearUIProgramList();
#endif//D_GUI_COMPONENT_PLAYMODE

#ifdef FTA_SUPPORT
        if (MEDIA_TYPE_FTA == DeviceManager_GetMediaType((UINT16)lParam) )
        {
            MS_SendOp(MS_OP_OPEN_MENU, MENU_ID_RUNTIME);            
            MS_SendOp(MS_OP_MSG_DEVICE_MEDIA, MSG_DEVICE_MEDIA_FTA);
            MS_SendOp( MS_OP_FTA_SELECTION, 0 );
        }
        else
#endif // FTA_SUPPORT
		if ((MEDIA_TYPE_CLIPS == DeviceManager_GetMediaType((UINT16)lParam))||
			(MEDIA_TYPE_FUJICOLOR_PICTURE_CD== DeviceManager_GetMediaType((UINT16)lParam))||
			(MEDIA_TYPE_KADAK_PICTURE_CD== DeviceManager_GetMediaType((UINT16)lParam)) )
			{
			if (MENU_ID_CLIPS == MS_MenuGetActiveMenuId())
			{
				// TODO: Use MS_OP_REFRESH, make sure the menu does full refresh
				//MS_SendOp(MS_OP_REFRESH, 0);
				MS_SendOp(MS_OP_CLOSE, MENU_ID_CLIPS);
				MS_SendOp(MS_OP_OPEN, MENU_ID_CLIPS);
			}
			else
			{
				// Resume for clips is handled in the menu, need to open the directory in which to resume
				MS_SendOp(MS_OP_OPEN_MENU, MENU_ID_CLIPS);
			}
		}
// TODO: Should also send to clips menu when message in clips menu
		else
		{
			MS_SendOp(MS_OP_OPEN_MENU, MENU_ID_RUNTIME);
			_ScreenRestartPlayback();
		}
		
		MS_SendOp(MS_OP_MSG_DEVICE_MEDIA_CURRENT, lParam);
		break;

	case MS_OP_CORE_CACHE_FAILED:
#ifdef D_MULTI_CDDA_SHUFFLE_PLAY
		// check if in Multi CDDA Shuffle play mode
		if (CoreAPI_IsMultiCDDAShufflePlay())
		{
			// Check current disc type, if it's non-CDDA type (the Browse Handler in purpose not support non-CDDA in this playmode),  mount the next disc
			if (MEDIA_TYPE_UNKNOWN == CoreAPI_GetCurrentMediaType())
				CoreAPI_MountDisc();
		}
#endif
		//Fall through.
	case MS_OP_CORE_CACHE_ABORT:
		{
			wDeviceIdCurrent = 0xFFFF;
			MS_EnableUserOp(pThis);
			
			// If cache failed, go to default menu
			MS_SendOp(MS_OP_OPEN_MENU, MENU_ID_RUNTIME);			
		}
		//should display message after menu opened 
		MS_SendOp(MS_OP_MSG_DEVICE_MEDIA_CURRENT, lParam);
		break;

	case MS_OP_TICK:
		{
			DeviceManager_Tick();

			if((0xFFFF != wDeviceIdRequested) && (wDeviceIdCurrent != wDeviceIdRequested))
			{
				if(DeviceManager_IsAllowedContructDevice(wDeviceIdRequested))
				{
					//if (MEDIA_TYPE_CLIPS != DeviceManager_GetMediaType(wDeviceId))
					MS_SendOp(MS_OP_CLOSE, MENU_ID_CLIPS);
					MS_SendOp(MS_OP_MENU_CLOSE_POPUP_COMPONENT, 0);
					//_SendOp(MS_OP_OPEN_MENU, MENU_ID_CLIPS);
					//_SEND_OP(MS_OP_MSG_DEVICE_LOADING, 0);
					//_SEND_OP(MS_OP_MENU_ENABLE_USE_OP, 0);
					DeviceManager_ContructDevice(wDeviceIdRequested);
				}
				wDeviceIdRequested = 0xFFFF;
			}
			
			// Adapt OSD display range if COOE automatically changes TV system
			if(DEC_IsVideoPal())
			{
				if(!MS_IsScreenPal(gpScreen))
				{	
					OSDAdaptDisplayRangeToVideoStandard();
					MS_SetScreenPal(gpScreen);
				}	
			}
			else
			{
				if(MS_IsScreenPal(gpScreen))
				{	
					OSDAdaptDisplayRangeToVideoStandard();
					MS_ClearScreenPal(gpScreen);
				}	
			}
		}
		break;
		
	case MS_OP_EJECT:
   	wDeviceIdCurrent = 0xFFFF;
#ifndef D_RESUME_STOP_AFTER_POWER_ON	// <<< ITA_KK_0002G: Customized of the power on action.
		if (CoreAPI_IsMediaReady() && !CoreAPI_IsProgramPlayback())
		{
			CoreAPI_SetNVMBookMark((INT16)(-1));
		}
#else // D_RESUME_STOP_AFTER_POWER_ON
		CoreAPI_FlushAllNVMBookMark();
#endif // D_RESUME_STOP_AFTER_POWER_ON
		break;

	default:
		break;
	}

	MsOp = MS_BasicScreenOperation(pThis, MsOp, lParam);

	// Post-processing
	switch (MsOp)
	{
	case MS_OP_CORE_CACHE_FINISHED:
		{
			if(MEDIA_TYPE_CLIPS == CoreAPI_GetCurrentMediaType())
			{
				MS_MenuClose((MS_DESCRIPTOR_MENU *)MENU_ID_CLIPS);
				MS_SEND_OP(MS_OP_OPEN, (UINT32)MENU_ID_RUNTIME);	
			}
		}
		return MS_OP_NONE;

#if D_SUPPORT_SACD
	case MS_OP_MENU_SWITCH_SACD_LAYER:
		{
			// Open the Runtime menu.
			if(MEDIA_TYPE_CLIPS == CoreAPI_GetCurrentMediaType())
			{
				MS_MenuClose((MS_DESCRIPTOR_MENU*)MENU_ID_CLIPS);
				MS_SEND_OP(MS_OP_OPEN, (UINT32)MENU_ID_RUNTIME);	
			}
			
			if(!CoreAPI_SwitchHybridLayer())
			{
				PROHIBIT(MSG_PROHIBIT_NOT_ALLOWED_NOW);
			}
		}
		return MS_OP_NONE;
#endif // D_SUPPORT_SACD

	default:
		break;
	}
	return MsOp;
}
#endif //D_CUSTOM
/**************************************************************************
*	Function	:	_ScreenPostUserOperation
*	In		:	
*	Out		:	
*	Desc	:	
 ***************************************************************************/
#ifndef D_CUSTOM__ScreenPostUserOperation
#pragma argsused
static MS_OP _ScreenPostUserOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
	switch(MsOp)
	{		
	/*case MS_OP_POWER:
		dbg_printf(("MS_OP_SCREEN_CLOSE\n"));
		SCREENPROC_CloseScreen();
		return MS_OP_NONE;*/
	case MS_OP_EJECT:
		// Clips menu needs to stop is ActionEngines, others might require other actions
		// MS_OP_EJECT is a special case as it is a user operation but needs to be transmitted to every body
		MS_SendOp(MS_OP_MENU_ON_EJECT, lParam);
		break;
	}
	return MsOp;
}
#endif //D_CUSTOM
/****************************************************************************************************
* Function	: _ScreenSSaverOperation
*
* Input		: Parameter_1 - description
*			  Parameter_2 - description
*
* Output		: Parameter_3 - description
*			  Parameter_4 - description
*
* Return		: Describe_possible_returned_values_and_their_meaning
*
* Description	: Describe_what_the_function_does_in_English
*	
****************************************************************************************************/
#ifndef D_CUSTOM__ScreenSSaverOperation
#pragma argsused
static MS_OP _ScreenSSaverOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
#ifdef  FTA_SUPPORT
    WORD wDeviceID =  DeviceManager_GetCurrentDevice();
    UINT16 wDeviceType = DeviceManager_GetDeviceType(wDeviceID);
#endif
	// Screen frozen during menu switvhing
	if (MS_IsContentFrozen(pThis))
		return MsOp;
	
	if(MS_IS_USER_OP(MsOp))
	{
		if(((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mbIsRunning)
		{
			((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mbIsRunning = FALSE;
			OSCREEN_SAVER_Stop();

// TODO: Add a function to search into tables of MS_OP for this kind of list
			// The keys in the following switch-case are those which are transmited to
			// after cancelling the screen saver, others are ignored.
			switch (MsOp)
			{
			case MS_OP_PLAY:
			case MS_OP_STOP:
			case MS_OP_EJECT:
			case MS_OP_POWER:
			case MS_OP_AUDIO:
			case MS_OP_MARKAB:
			case MS_OP_SHUFFLE:
			case MS_OP_REPEAT:
			case MS_OP_SKIPB:
			case MS_OP_SKIPF:
			case MS_OP_INTRO_PLAY:
			case MS_OP_PROGRAM:
			case MS_OP_FASTB:
			case MS_OP_FASTF:
			case MS_OP_PREV_INDEX:
			case MS_OP_NEXT_INDEX:
			case MS_OP_PAUSE:
			case MS_OP_RESUME_STOP:
			case MS_OP_3D:
			case MS_OP_MUTE:
			case MS_OP_VOLUME_UP:
			case MS_OP_VOLUME_DOWN:
			case MS_OP_EQUALIZER:
			case MS_OP_SPECTRUM:
			case MS_OP_PROLOGIC:
			case MS_OP_DD_EX:
			case MS_OP_PLAY_PAUSE:
				break;
						
			default:
				MsOp = MS_OP_NONE;
				break;
			}
		}

		_ScreenSaverStartTimer();
	}
	else if (	(MS_OP_TICK == MsOp) 
			&& (FALSE == ((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mbIsRunning)
			&& (PST_STOP == CoreAPI_GetPlayState())
#ifndef D_CUSTOMER_MIZUDA  //Toml  When opened screen saver on
			&& (DEVICE_TRAY_OPENED != DeviceManager_GetDeviceState(DEVICE_DISC))
#endif			
			&& (DEVICE_TRAY_OPENING != DeviceManager_GetDeviceState(DEVICE_DISC))
			&& (DEVICE_TRAY_CLOSING != DeviceManager_GetDeviceState(DEVICE_DISC))
			&& (DEVICE_LOADING != DeviceManager_GetDeviceState(DEVICE_DISC))
#ifdef FTA_SUPPORT
            && ( DEVICE_TYPE_FTA != wDeviceType )
#endif
			// <<< ITA_YO_0001G : Customizing of loader spinning. Sync saver to spin down.
#ifndef D_SYNC_SPINDOWN_TO_OSDSAVER
			&& (MENU_ID_CLIPS != MS_MenuGetActiveMenuId())
#endif
			// >>> ITA_YO_0001G : Customizing of loader spinning. Sync saver to spin down.
			&& (MENU_ID_CLIPS != MS_MenuGetActiveMenuId())
			&& (MENU_ID_SETUP != MS_MenuGetActiveMenuId())
			&& (NULL == MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oDescriptorFirmwareUpgrade))
#ifdef D_GUI_COMPONENT_PROGRAM
			&& (NULL == MS_FindObjectFromDescriptor((MSO_CONTAINER __NEAR*)pThis, (MS_DESCRIPTOR*)&oProgramDescriptor))
#endif
#ifdef D_SCREEN_SAVER_SELECTION
			&& (SCREEN_SAVER_DISABLE != PS_GET_SCREEN_SAVER_ENABLE)
#endif
			)
	{
		((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mwTimerStart--;
		if(0 == ((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mwTimerStart)
		{
			((MSO_SCREEN __NEAR*)pThis)->moParam.moScreenSaver.mbIsRunning = TRUE;
#ifdef D_AUTO_POWER_DOWN
			CoreAPI_PowerControl(FALSE);	//Power down
#else
			OSCREEN_SAVER_Start();

			// <<< ITA_YO_0001G : Customizing of loader spinning. Sync saver to spin down.
#ifdef D_SYNC_SPINDOWN_TO_OSDSAVER
			gcs.bScreenSaverOn = TRUE;
			ie_send_ex(IE_CORE_STOP_DRIVE_SPINING, NULL);
#endif
			// >>> ITA_YO_0001G : Customizing of loader spinning. Sync saver to spin down.
#endif
		}
	}		

	if (MS_OP_SCREEN_OPEN ==  MsOp)
	{
		_ScreenSaverStartTimer();
	}

	return MsOp;
}
#endif //D_CUSTOM
/**************************************************************************
*	Function	:	_ScreenMsOpTranslator
*	In		:	
*	Out		:	
*	Desc	:	
 ***************************************************************************/
#ifndef D_CUSTOM__ScreenMsOpTranslator
#pragma argsused
static MS_OP _ScreenMsOpTranslator(MSO_OBJECT __NEAR* pThis, MS_OP  MsOp, UINT32 lParam)
{
	switch (MsOp)
	{
		case MS_OP_TITLE:
			if (
			#ifdef D_DIVX6_SUPPORT
			!CoreAPI_IsCurrItemDivX6() && 
			#endif
			(MENU_ID_CLIPS == MS_MenuGetActiveMenuId()))
				MsOp = MS_OP_DIGEST;
			break;
#ifdef DVD_AUDIO_PAGE_SEARCH
		case MS_OP_SLOWF:
			if((g_disc_type == DEC_DISC_TYPE_DVD_AUDIO)&&CoreAPI_IsMenuAllowedPageSearch())
				MsOp = MS_OP_PAGE_DOWN;
			break;
		case MS_OP_SLOWB:
			if((g_disc_type == DEC_DISC_TYPE_DVD_AUDIO)&&CoreAPI_IsMenuAllowedPageSearch())
				MsOp = MS_OP_PAGE_UP;
			break;
#endif//DVD_AUDIO_PAGE_SEARCH
		default:
			break;
	}
	return MsOp;
}
#endif //D_CUSTOM
/****************************************************************************************************
* Function	: _ScreenSSaverOperation
*
* Input		: Parameter_1 - description
*			  Parameter_2 - description
*
* Output		: Parameter_3 - description
*			  Parameter_4 - description
*
* Return		: Describe_possible_returned_values_and_their_meaning
*
* Description	: Describe_what_the_function_does_in_English
*	
****************************************************************************************************/
#ifndef D_CUSTOM__ScreenSaverStartTimer
STATIC void _ScreenSaverStartTimer(void)
{
	// Timeout fo the screen saver in minutes
	gpScreen->moParam.moScreenSaver.mwTimerStart = (UI_SCREEN_SAVER_START_TIMEOUT_MINUTES * 600);
}
#endif //D_CUSTOM

/****************************************************************************************************
* Function	: _ScreenRestartPlayback
*
* Input		: None
*
* Output		: None
*
* Return		: None
*
* Description	: Restart playback from the last point or from the beginning.
*	
****************************************************************************************************/
#ifndef D_CUSTOM_ScreenRestartPlayback
STATIC void _ScreenRestartPlayback(void)
{
	CoreAPI_ReStart(TRUE);//whatever support resume or not  the parameter should be always TRUE as NAV team design
}
#endif //D_CUSTOM_ScreenRestartPlayback

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -