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; }
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; }
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; }
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; }