Exemplo n.º 1
0
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA * sys;
	struct nim_device* nim_dev;	
	UINT8 i,lock;
	UINT8 unact;
	
	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;
    	nim_get_lock(nim_dev,&lock);

	switch(event)
	{
	case EVN_PRE_OPEN:
        api_set_deo_layer(0);
        api_inc_wnd_count();

		for(i=0;i<SUBTITLE_ITEM_NUMBER;i++)
		{
			p_subtitle_track_str[i]=Subtitle_track_str[i];
			p_subtitle_track_idx[i]=Subtitle_track_idx[i];
		}
		win_subtitle_init_data();
		if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock))
#if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable
		if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) 
#ifdef DVR_PVR_SUPPORT
			|| ((!lock) && !api_pvr_is_playing())
#else
			|| (!lock)
#endif
			)
#endif
		{
			win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA);			
			osal_task_sleep(1000);
			win_compopup_close();
            api_dec_wnd_count();
			return PROC_LEAVE;
		}
		break;		
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);
		if(VACT_ENTER == unact)
		{
			UINT16	cur_sel = OSD_GetListCurPoint(&g_ls_subtitle);
			sys = sys_data_get();
			if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel)
			{
				sys->osd_set.subtitle_display = 0;/*select off option*/
				sys->osd_set.subtitle_lang = 0xFF;
			}
			else if(cur_sel < g_win_ttx_subtitle_count)
			{
				sys->osd_set.subtitle_display = 1;/*subtitle on*/
				sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
			}
			else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count)
			{/*ttx_subtitle on the top then normal subtitle*/
				sys->osd_set.subtitle_display = 1;
				sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
			}
			ret = PROC_LEAVE;
			api_osd_mode_change(OSD_NO_SHOW);
			//api_osd_mode_change(OSD_SUBTITLE);
		}
		break;
	case EVN_PRE_CLOSE:
		unact = (VACTION)(param1>>16);
		ret = PROC_PASS;
        break;

	case EVN_POST_CLOSE:
        api_set_deo_layer(1);
        api_dec_wnd_count();
        break;
	default:
		break;
	}

	return ret;
}
Exemplo n.º 2
0
BOOL usb_remove_safely_by_hotkey()
{
	UINT8 back_saved;

//	if(!storage_usb_menu_item_ready())
//		return FALSE;
#ifdef DVR_PVR_SUPPORT
	if(api_pvr_is_record_active())
	{
		win_compopup_init(WIN_POPUP_TYPE_OK);
	    win_compopup_set_msg("USB safely remove error, please stop recording first!", NULL, 0);
	    win_compopup_open_ext(&back_saved);
		return TRUE;
	}
	else if(api_pvr_is_playing())
	{
		win_compopup_init(WIN_POPUP_TYPE_OK);
	    win_compopup_set_msg("USB safely remove error, please stop playing first!", NULL, 0);
	    win_compopup_open_ext(&back_saved);
		return TRUE;
	}
	else if(pvr_info.pvr_state == PVR_STATE_TMS)
	{
		api_pvr_tms_proc(FALSE);
	}
#endif
	win_compopup_init(WIN_POPUP_TYPE_OKNO);
    win_compopup_set_msg("Are you sure to remove USB device safely!", NULL, 0);
	win_compopup_set_default_choice(WIN_POP_CHOICE_NO);
	win_popup_choice_t choice = win_compopup_open_ext(&back_saved);
	if(choice == WIN_POP_CHOICE_YES)
	{
		//api_usb_device_safely_remove();
#ifdef USB_SUPPORT_HUB
	/* remove disk */
	char disk_name[8];
	int ret;
	int disk_type = diskNamePrefix2Type(disk_name);
	if (disk_type == MNT_TYPE_USB)
	{
		char dev_path[16];
		int node_id, fd;
		sprintf(dev_path, "/dev/%s", disk_name);
		fd = fs_open(dev_path, O_RDONLY, 0);
		ret = fs_ioctl(fd, IOCTL_GET_NODEID, &node_id, sizeof(int));
		fs_close(fd);

		if (ret == 0)
			usbd_safely_remove_ex(node_id);
	}
#ifdef SDIO_SUPPORT
	else if (disk_type == MNT_TYPE_SD)
	{
		sd_notify(0);
	}
#endif
#ifdef SATA_SUPPORT
	else if (disk_type == MNT_TYPE_SATA)
	{
		sata_notify(0, 0);
	}
#endif
#else
	usbd_safely_remove();
#endif
	
	api_dec_wnd_count();

		}
	return TRUE;
}
Exemplo n.º 3
0
BOOL usb_remove_safely_by_hotkey()
{
	int disk_num, tot_disk_num = 0;
	char disk_name[8];
	int ret;
	UINT32 choice;
	UINT8 disk_sel;
	UINT8 back_saved;
	POBJECT_HEAD topmenu;
		
	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_USB, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SD, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	ret = dm_ioctl(DM_CMD1_GET_DISK_NUM, DM_CMD_PARAM(MNT_TYPE_SATA, 0, 0), &disk_num, sizeof(int));
	if (ret == 0 && disk_num > 0)
		tot_disk_num += disk_num;

	if (tot_disk_num <= 0)
	{
		return TRUE;
	}
	api_inc_wnd_count();
	ID timer_id = win_compopup_start_send_key_timer(V_KEY_EXIT, 10000, TIMER_ALARM); // exit popup if no action in 5s
	choice = win_disk_operate_open(OPERATE_TYPE_DISK_REMOVE, &disk_sel);
	api_stop_timer(&timer_id);
	
	if ((topmenu = menu_stack_get_top()) != NULL)
		OSD_TrackObject(topmenu, C_DRAW_SIGN_EVN_FLG | C_UPDATE_ALL);
	
	if (!choice)
	{
		api_dec_wnd_count();
		return TRUE;
	}
	else
	{
		win_removable_disk_get_name_str(disk_sel, disk_name);
	}
		
#ifdef DVR_PVR_SUPPORT
	enum PVR_DISKMODE pvr_mode;
	char rec_vol[16], tms_vol[16];
	struct statvfs buf;

	pvr_mode = pvr_get_cur_mode(rec_vol, tms_vol);

	if (api_pvr_is_record_active() && (STRLEN(rec_vol) == 9) &&
		(strncmp(disk_name, &rec_vol[5], 3) == 0))
	{
		win_compopup_init(WIN_POPUP_TYPE_OK);
	    win_compopup_set_msg("USB safely remove error, please stop recording first!", NULL, 0);
	    win_compopup_open_ext(&back_saved);
		api_dec_wnd_count();
		return TRUE;
	}

	if (api_pvr_is_playing())
	{
		BOOL b_can_remove = TRUE;
		if ((pvr_info.pvr_state == PVR_STATE_TMS_PLAY) &&
			(STRLEN(tms_vol) == 9) && (strncmp(disk_name, &tms_vol[5], 3) == 0))
		{
			b_can_remove = FALSE;
		}
		else if ((pvr_info.pvr_state != PVR_STATE_TMS_PLAY) &&
				 (STRLEN(rec_vol) == 9) && (strncmp(disk_name, &rec_vol[5], 3) == 0))
		{
			b_can_remove = FALSE;
		}

		if (!b_can_remove)
		{
			win_compopup_init(WIN_POPUP_TYPE_OK);
		    win_compopup_set_msg("USB safely remove error, please stop playing first!", NULL, 0);
		    win_compopup_open_ext(&back_saved);
			api_dec_wnd_count();
			return TRUE;
		}
	}

	if (pvr_info.pvr_state == PVR_STATE_TMS)
	{
		api_pvr_tms_proc(FALSE);
		fs_sync(tms_vol);
	}
#endif

#ifdef USB_SUPPORT_HUB
	/* remove disk */
	int disk_type = diskNamePrefix2Type(disk_name);
	if (disk_type == MNT_TYPE_USB)
	{
		char dev_path[16];
		int node_id, fd;
		sprintf(dev_path, "/dev/%s", disk_name);
		fd = fs_open(dev_path, O_RDONLY, 0);
		ret = fs_ioctl(fd, IOCTL_GET_NODEID, &node_id, sizeof(int));
		fs_close(fd);

		if (ret == 0)
			usbd_safely_remove_ex(node_id);
	}
#ifdef SDIO_SUPPORT
	else if (disk_type == MNT_TYPE_SD)
	{
		sd_notify(0);
	}
#endif
#ifdef SATA_SUPPORT
	else if (disk_type == MNT_TYPE_SATA)
	{
		sata_notify(0, 0);
	}
#endif
#else
	usbd_safely_remove();
#endif
	
	api_dec_wnd_count();
	return TRUE;
}
Exemplo n.º 4
0
static PRESULT subtitle_con_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2)
{
	PRESULT ret = PROC_PASS;
	SYSTEM_DATA * sys;
	struct nim_device* nim_dev;	
	UINT8 i,lock;
	UINT8 unact;
	
	if(cur_tuner_idx == 0)
		nim_dev = g_nim_dev;
	else
		nim_dev = g_nim_dev2;
    	nim_get_lock(nim_dev,&lock);

	switch(event)
	{
	case EVN_PRE_OPEN:
        #ifdef SUPPORT_CAS9
			if(0==get_mmi_showed())
				ShowSignalStatusOSDOnOff(0);
        #endif
        api_set_deo_layer(0);
        api_inc_wnd_count();

		for(i=0;i<SUBTITLE_ITEM_NUMBER;i++)
		{
			p_subtitle_track_str[i]=Subtitle_track_str[i];
			p_subtitle_track_idx[i]=Subtitle_track_idx[i];
		}

		if(system_state != SYS_STATE_USB_MP)//vic100507#1	
		{
			win_subtitle_init_data();
			if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) || (!lock))
			#if (DVR_PVR_SUPPORT_SUBTITLE)//temp disable
			if(((0 == g_win_subtitle_count ) && (0 == g_win_ttx_subtitle_count)) 
			#ifdef DVR_PVR_SUPPORT
				|| ((!lock) && !api_pvr_is_playing())
			#else
				|| (!lock)
			#endif
				)
			#endif
			{
				win_com_popup_open(WIN_POPUP_TYPE_SMSG,NULL, RS_DISPLAY_NO_DATA);			
				osal_task_sleep(1000);
				win_compopup_close();
	            api_dec_wnd_count();
				return PROC_LEAVE;
			}
		}
		else
		{
		#ifdef MP_SUBTITLE_SUPPORT	//vic100507#1			
			//TODO:
			//such like win_subtitle_init_data
			long resut;
			resut = win_mp_subtitle_init_data();
			if (resut < 0)
			{						
				return PROC_LEAVE;				
			}
			
		#endif				
		}
		break;		
	case EVN_UNKNOWN_ACTION:
		unact = (VACTION)(param1>>16);

		if(system_state != SYS_STATE_USB_MP)//vic100507#1 
		{

			if(VACT_ENTER == unact)
			{
				UINT16	cur_sel = OSD_GetListCurPoint(&g_ls_subtitle);
				sys = sys_data_get();
				if(g_win_subtitle_count + g_win_ttx_subtitle_count==cur_sel)
				{
					sys->osd_set.subtitle_display = 0;/*select off option*/
					sys->osd_set.subtitle_lang = 0xFF;
				}
				else if(cur_sel < g_win_ttx_subtitle_count)
				{
					sys->osd_set.subtitle_display = 1;/*subtitle on*/
					sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
				}
				else if(cur_sel < g_win_subtitle_count + g_win_ttx_subtitle_count)
				{/*ttx_subtitle on the top then normal subtitle*/
					sys->osd_set.subtitle_display = 1;
					sys->osd_set.subtitle_lang = cur_sel;/*set_sub_lang_idx is used in api_osd_mode_change function*/
				}
				ret = PROC_LEAVE;
				api_osd_mode_change(OSD_NO_SHOW);
				//api_osd_mode_change(OSD_SUBTITLE);
			}
		}
		else if(VACT_ENTER == unact)
		{
		//vic100507#1 begin
		#ifdef MP_SUBTITLE_SUPPORT	
			//TODO:
			//select language index
			if (!subtitle_handle)
			{
				return PROC_LEAVE;
			}
			long resut;
			UINT16	cur_sel = OSD_GetListCurPoint(&g_ls_subtitle);

			if(g_ext_subtitle_plugin)
				g_ext_subtitle_plugin->mps_change_language(subtitle_handle,cur_sel);
			
			OSD_ObjClose(pObj,C_CLOSE_CLRBACK_FLG);
			//if (resut < 0)
			{
				return PROC_LEAVE;
			}			
		#endif					
		//vic100507#1 end
		}
		break;
	case EVN_PRE_CLOSE:
		unact = (VACTION)(param1>>16);
		ret = PROC_PASS;
        break;

	case EVN_POST_CLOSE:
        #ifdef SUPPORT_CAS9
            restore_ca_msg_when_exit_win();
        #endif
        api_set_deo_layer(1);
        api_dec_wnd_count();
        break;
	default:
		break;
	}

	return ret;
}