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_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:
|
* driver_set_nonblock_state:
|
||||||
*
|
*
|
||||||
|
@ -444,16 +429,6 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
switch (state)
|
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:
|
case RARCH_DRIVER_CTL_DEINIT:
|
||||||
video_driver_ctl(RARCH_DISPLAY_CTL_DESTROY, NULL);
|
video_driver_ctl(RARCH_DISPLAY_CTL_DESTROY, NULL);
|
||||||
audio_driver_ctl(RARCH_AUDIO_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);
|
camera_driver_ctl(RARCH_CAMERA_CTL_DESTROY, NULL);
|
||||||
retro_uninit_libretro_cbs();
|
retro_uninit_libretro_cbs();
|
||||||
break;
|
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:
|
case RARCH_DRIVER_CTL_NONE:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
14
driver.h
14
driver.h
|
@ -182,6 +182,10 @@ enum driver_ctl_state
|
||||||
* Should be run before RARCH_DRIVER_CTL_INIT.
|
* Should be run before RARCH_DRIVER_CTL_INIT.
|
||||||
*/
|
*/
|
||||||
RARCH_DRIVER_CTL_INIT_PRE,
|
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);
|
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:
|
* driver_update_system_av_info:
|
||||||
* @info : pointer to new A/V 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,
|
static void* ctr_init(const video_info_t* video,
|
||||||
const input_driver_t** input, void** input_data)
|
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));
|
ctr_video_t* ctr = (ctr_video_t*)linearAlloc(sizeof(ctr_video_t));
|
||||||
|
|
||||||
if (!ctr)
|
if (!ctr)
|
||||||
|
@ -375,8 +376,9 @@ static void* ctr_init(const video_info_t* video,
|
||||||
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
ctr->empty_framebuffer = linearAlloc(320 * 240 * 2);
|
||||||
memset(ctr->empty_framebuffer, 0, 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);
|
aptHook(&ctr->lcd_aptHook, ctr_lcd_aptHook, ctr);
|
||||||
|
|
||||||
return ctr;
|
return ctr;
|
||||||
|
|
|
@ -414,17 +414,17 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
|
|
||||||
if (tvmode == VI_PAL)
|
if (tvmode == VI_PAL)
|
||||||
{
|
{
|
||||||
|
float refresh_rate = 50.0f;
|
||||||
if (modetype == VI_NON_INTERLACE)
|
if (modetype == VI_NON_INTERLACE)
|
||||||
driver_set_refresh_rate(50.0801f);
|
refresh_rate = 50.0801f;
|
||||||
else
|
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
|
||||||
driver_set_refresh_rate(50.0f);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
float refresh_rate = 59.94f;
|
||||||
if (modetype == VI_NON_INTERLACE)
|
if (modetype == VI_NON_INTERLACE)
|
||||||
driver_set_refresh_rate(59.8261f);
|
refresh_rate = 59.8261f;
|
||||||
else
|
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &refresh_rate);
|
||||||
driver_set_refresh_rate(59.94f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* custom viewports for older resolutions will most likely be corrupted, reset them */
|
/* 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,
|
if (video_monitor_fps_statistics(&video_refresh_rate,
|
||||||
&deviation, &sample_points))
|
&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. */
|
/* Incase refresh rate update forced non-block video. */
|
||||||
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
|
event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE);
|
||||||
}
|
}
|
||||||
|
@ -2838,7 +2838,7 @@ void general_write_handler(void *data)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENU_LABEL_VIDEO_REFRESH_RATE_AUTO:
|
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. */
|
/* In case refresh rate update forced non-block video. */
|
||||||
rarch_cmd = EVENT_CMD_VIDEO_SET_BLOCKING_STATE;
|
rarch_cmd = EVENT_CMD_VIDEO_SET_BLOCKING_STATE;
|
||||||
|
|
Loading…
Reference in New Issue