Create RARCH_DRIVER_CTL_SET_REFRESH_RATE
This commit is contained in:
parent
0a01eab115
commit
1b768f7dcd
43
driver.c
43
driver.c
|
@ -214,21 +214,6 @@ static void driver_adjust_system_rates(void)
|
|||
driver_set_nonblock_state();
|
||||
}
|
||||
|
||||
/**
|
||||
* driver_set_refresh_rate:
|
||||
* @hz : New refresh rate for monitor.
|
||||
*
|
||||
* Sets monitor refresh rate to new value by calling
|
||||
* video_monitor_set_refresh_rate(). Subsequently
|
||||
* calls audio_monitor_set_refresh_rate().
|
||||
**/
|
||||
void driver_set_refresh_rate(float hz)
|
||||
{
|
||||
video_monitor_set_refresh_rate(hz);
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE, NULL);
|
||||
driver_adjust_system_rates();
|
||||
}
|
||||
|
||||
/**
|
||||
* driver_set_nonblock_state:
|
||||
*
|
||||
|
@ -444,16 +429,6 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
|||
{
|
||||
switch (state)
|
||||
{
|
||||
case RARCH_DRIVER_CTL_INIT_PRE:
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL);
|
||||
input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL);
|
||||
find_camera_driver();
|
||||
find_location_driver();
|
||||
#ifdef HAVE_MENU
|
||||
find_menu_driver();
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DRIVER_CTL_DEINIT:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DESTROY, NULL);
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_DESTROY, NULL);
|
||||
|
@ -465,6 +440,24 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
|||
camera_driver_ctl(RARCH_CAMERA_CTL_DESTROY, NULL);
|
||||
retro_uninit_libretro_cbs();
|
||||
break;
|
||||
case RARCH_DRIVER_CTL_INIT_PRE:
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL);
|
||||
input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL);
|
||||
find_camera_driver();
|
||||
find_location_driver();
|
||||
#ifdef HAVE_MENU
|
||||
find_menu_driver();
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DRIVER_CTL_SET_REFRESH_RATE:
|
||||
{
|
||||
float *hz = (float*)data;
|
||||
video_monitor_set_refresh_rate(*hz);
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_MONITOR_SET_REFRESH_RATE, NULL);
|
||||
driver_adjust_system_rates();
|
||||
}
|
||||
break;
|
||||
case RARCH_DRIVER_CTL_NONE:
|
||||
default:
|
||||
break;
|
||||
|
|
14
driver.h
14
driver.h
|
@ -182,6 +182,10 @@ enum driver_ctl_state
|
|||
* Should be run before RARCH_DRIVER_CTL_INIT.
|
||||
*/
|
||||
RARCH_DRIVER_CTL_INIT_PRE,
|
||||
/* Sets monitor refresh rate to new value by calling
|
||||
* video_monitor_set_refresh_rate(). Subsequently
|
||||
* calls audio_monitor_set_refresh_rate(). */
|
||||
RARCH_DRIVER_CTL_SET_REFRESH_RATE
|
||||
};
|
||||
|
||||
|
||||
|
@ -254,16 +258,6 @@ bool find_next_driver(const char *label, char *s, size_t len);
|
|||
**/
|
||||
void driver_set_nonblock_state(void);
|
||||
|
||||
/**
|
||||
* driver_set_refresh_rate:
|
||||
* @hz : New refresh rate for monitor.
|
||||
*
|
||||
* Sets monitor refresh rate to new value by calling
|
||||
* video_monitor_set_refresh_rate(). Subsequently
|
||||
* calls audio_monitor_set_refresh_rate().
|
||||
**/
|
||||
void driver_set_refresh_rate(float hz);
|
||||
|
||||
/**
|
||||
* driver_update_system_av_info:
|
||||
* @info : pointer to new A/V info
|
||||
|
|
|
@ -240,7 +240,8 @@ static void ctr_lcd_aptHook(APT_HookType hook, void* param)
|
|||
static void* ctr_init(const video_info_t* video,
|
||||
const input_driver_t** input, void** input_data)
|
||||
{
|
||||
void* ctrinput = NULL;
|
||||
float refresh_rate;
|
||||
void* ctrinput = NULL;
|
||||
ctr_video_t* ctr = (ctr_video_t*)linearAlloc(sizeof(ctr_video_t));
|
||||
|
||||
if (!ctr)
|
||||
|
@ -375,8 +376,9 @@ static void* ctr_init(const video_info_t* video,
|
|||
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
||||
memset(ctr->empty_framebuffer, 0, 320 * 240 * 2);
|
||||
|
||||
driver_set_refresh_rate((32730.0 * 8192.0) / 4481134.0);
|
||||
refresh_rate = (32730.0 * 8192.0) / 4481134.0;
|
||||
|
||||
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
|
||||
aptHook(&ctr->lcd_aptHook, ctr_lcd_aptHook, ctr);
|
||||
|
||||
return ctr;
|
||||
|
|
|
@ -414,17 +414,17 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
|||
|
||||
if (tvmode == VI_PAL)
|
||||
{
|
||||
float refresh_rate = 50.0f;
|
||||
if (modetype == VI_NON_INTERLACE)
|
||||
driver_set_refresh_rate(50.0801f);
|
||||
else
|
||||
driver_set_refresh_rate(50.0f);
|
||||
refresh_rate = 50.0801f;
|
||||
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
|
||||
}
|
||||
else
|
||||
{
|
||||
float refresh_rate = 59.94f;
|
||||
if (modetype == VI_NON_INTERLACE)
|
||||
driver_set_refresh_rate(59.8261f);
|
||||
else
|
||||
driver_set_refresh_rate(59.94f);
|
||||
refresh_rate = 59.8261f;
|
||||
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
|
||||
}
|
||||
|
||||
/* custom viewports for older resolutions will most likely be corrupted, reset them */
|
||||
|
|
|
@ -2574,7 +2574,7 @@ static int setting_action_ok_video_refresh_rate_auto(void *data, bool wraparound
|
|||
if (video_monitor_fps_statistics(&video_refresh_rate,
|
||||
&deviation, &sample_points))
|
||||
{
|
||||
driver_set_refresh_rate(video_refresh_rate);
|
||||
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &video_refresh_rate);
|
||||
/* Incase refresh rate update forced non-block video. */
|
||||
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
|
||||
}
|
||||
|
@ -2838,7 +2838,7 @@ void general_write_handler(void *data)
|
|||
}
|
||||
break;
|
||||
case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO:
|
||||
driver_set_refresh_rate(*setting->value.fraction);
|
||||
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, setting->value.fraction);
|
||||
|
||||
/* In case refresh rate update forced non-block video. */
|
||||
rarch_cmd = EVENT_CMD_VIDEO_SET_BLOCKING_STATE;
|
||||
|
|
Loading…
Reference in New Issue