📄 jvm_screen_switch.c
字号:
/*****************************************************************************
* FUNCTION
* jvm_resmgr_file_controller
* DESCRIPTION
* manage file depending upon the source state and destination state of VM
* PARAMETERS
* src [IN]
* dst [IN]
* RETURNS
*****************************************************************************/
kal_int32 jvm_resmgr_file_controller(jvm_state_enum src, jvm_state_enum dst)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Justin TODO: JSR75-File */
if (dst == JVM_FG_RUNNING_STATE)
{
disk_changed = KAL_TRUE;
}
else if (src == JVM_FG_RUNNING_STATE)
{
}
return 0;
}
/*****************************************************************************
* FUNCTION
* jvm_resmgr_network_controller
* DESCRIPTION
* manage network depending upon the source state and destination state of VM
* PARAMETERS
* src [IN]
* dst [IN]
* RETURNS
*****************************************************************************/
kal_int32 jvm_resmgr_network_controller(jvm_state_enum src, jvm_state_enum dst)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Justin TODO: Socket, datagram */
/* Tony TODO: Network, SMS, MMS, Platform Request */
return 0;
}
/*****************************************************************************
* FUNCTION
* jvm_resmgr_vm_controller
* DESCRIPTION
* manage VM depending upon the source state and destination state of VM
* PARAMETERS
* src [IN]
* dst [IN]
* RETURNS
*****************************************************************************/
kal_int32 jvm_resmgr_vm_controller(jvm_state_enum src, jvm_state_enum dst)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (dst == JVM_TERMINATE_STATE)
{
jvm_stopVMExternal();
}
else if (dst == JVM_FG_RUNNING_STATE)
{
if (src == JVM_TERMINATE_STATE)
{
jvm_initVMExternal();
}
else
{
jvm_resumeVMExternal();
}
}
else
{
jvm_pauseVMExternal(src, dst);
}
if (dst == JVM_BG_RUNNING_STATE)
{
stack_change_priority_by_module_ID(MOD_J2ME, TASK_PRIORITY_JVM_BG);
}
else if (src == JVM_BG_RUNNING_STATE)
{
stack_change_priority_by_module_ID(MOD_J2ME, TASK_PRIORITY_JVM);
}
return 0;
}
/*****************************************************************************
*****************************************************************************/
typedef struct
{
kal_int32(*controller) (jvm_state_enum, jvm_state_enum);
} jvm_resmgr_ctrl_entry;
jvm_resmgr_ctrl_entry ctrl_tbl[] =
{
jvm_resmgr_fbbr_controller,
jvm_resmgr_lcd_controller,
jvm_resmgr_device_controller,
jvm_resmgr_audio_controller,
jvm_resmgr_video_controller,
jvm_resmgr_graphics3d_controller,
jvm_resmgr_event_controller,
jvm_resmgr_file_controller,
jvm_resmgr_network_controller,
jvm_resmgr_vm_controller
};
#define CTRL_TBL_SIZE (sizeof(ctrl_tbl) / sizeof(jvm_resmgr_ctrl_entry))
/*****************************************************************************
* FUNCTION
* jvm_resmgr_state_transition
* DESCRIPTION
* This function will be invoked when state will be changed.
* It call all resource manager callback function to do correspounding action
* PARAMETERS
* dst [IN]
* RETURNS
* void
*****************************************************************************/
void jvm_resmgr_state_transition(jvm_state_enum dst)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 result, i;
jvm_state_enum src = jvm_state;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
kal_trace(TRACE_STATE, FUNC_JVM_RESMGR_STATE_TRANSITION, jvm_state, dst);
if (src == dst)
{
return;
}
/* invalid state transition */
if ((src == JVM_FG_RUNNING_STATE && dst == JVM_PAUSED_STATE) ||
(src == JVM_BG_RUNNING_STATE && dst == JVM_SHORT_EVENT_STATE) ||
(src == JVM_BG_RUNNING_STATE && dst == JVM_LONG_EVENT_STATE) ||
(src == JVM_BG_RUNNING_STATE && dst == JVM_PAUSED_STATE) ||
(src == JVM_SHORT_EVENT_STATE && dst == JVM_BG_RUNNING_STATE) ||
(src == JVM_SHORT_EVENT_STATE && dst == JVM_PAUSED_STATE) ||
(src == JVM_LONG_EVENT_STATE && dst == JVM_SHORT_EVENT_STATE) ||
(src == JVM_PAUSED_STATE && dst == JVM_BG_RUNNING_STATE) ||
(src == JVM_PAUSED_STATE && dst == JVM_SHORT_EVENT_STATE) ||
(src == JVM_PAUSED_STATE && dst == JVM_LONG_EVENT_STATE) ||
(src == JVM_TERMINATE_STATE && dst != JVM_FG_RUNNING_STATE))
{
ASSERT(0);
}
StopTimer(J2ME_VM_EVENT_TIMER);
JVM_RES_LOCK;
jvm_state = dst;
if (src > dst) /* release */
{
for (i = CTRL_TBL_SIZE - 1; i >= 0; i--)
{
result = ctrl_tbl[i].controller(src, dst);
if (result < 0)
{
ASSERT(0);
}
}
}
else /* get */
{
for (i = 0; i < CTRL_TBL_SIZE; i++)
{
result = ctrl_tbl[i].controller(src, dst);
if (result < 0)
{
ASSERT(0);
}
}
}
JVM_RES_UNLOCK;
}
/*****************************************************************************
* FUNCTION
* jvm_is_minimize_mode
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_bool jvm_is_minimize_mode(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef J2ME_SUPPORT_BACKGROUND
return (jvm_state == JVM_BG_RUNNING_STATE);
#else
return KAL_FALSE;
#endif
}
/*****************************************************************************
* FUNCTION
* jvm_is_pause_mode
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_bool jvm_is_pause_mode(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef J2ME_SUPPORT_PAUSE
return (jvm_state == JVM_PAUSED_STATE || jvm_state == JVM_SHORT_EVENT_STATE || jvm_state == JVM_LONG_EVENT_STATE);
#else
return (jvm_state == JVM_SHORT_EVENT_STATE || jvm_state == JVM_LONG_EVENT_STATE);;
#endif
}
/*****************************************************************************
* FUNCTION
* jvm_is_teminate_mode
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_bool jvm_is_teminate_mode(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (jvm_state == JVM_TERMINATE_STATE);
}
/*****************************************************************************
* FUNCTION
* jvm_get_state
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_int32 jvm_get_state(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return jvm_state;
}
/*****************************************************************************
* FUNCTION
* jvm_is_in_background_long_time
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_bool jvm_is_in_background_long_time(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (jvm_state != JVM_TERMINATE_STATE && midlet_state == JVM_MIDLET_PAUSED);
}
/*****************************************************************************
* FUNCTION
* jvm_is_own_screen
* DESCRIPTION
* To check if java task get the control now
* (PS. resource may not be ready)
* PARAMETERS
* void
* RETURNS
* KAL_TRUE java task get the control
*****************************************************************************/
kal_bool jvm_is_own_screen(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_bool result;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* Use JVM_RES_LOCK/UNLOCK will cause deadlock */
if (jvm_state == JVM_FG_RUNNING_STATE)
{
result = KAL_TRUE;
}
else
{
result = KAL_FALSE;
}
return result;
}
/*****************************************************************************
* FUNCTION
* jvm_is_lock_mmi
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -