mirror of
https://github.com/libretro/RetroArch
synced 2025-04-09 21:45:45 +00:00
Updates pt. 3
This commit is contained in:
parent
950f15ac2c
commit
f130b00596
@ -105,6 +105,7 @@ core_info_list_t *core_info_list_new(const char *modules_path)
|
|||||||
size_t i;
|
size_t i;
|
||||||
core_info_t *core_info = NULL;
|
core_info_t *core_info = NULL;
|
||||||
core_info_list_t *core_info_list = NULL;
|
core_info_list_t *core_info_list = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
struct string_list *contents = (struct string_list*)
|
struct string_list *contents = (struct string_list*)
|
||||||
dir_list_new(modules_path, EXT_EXECUTABLES, false);
|
dir_list_new(modules_path, EXT_EXECUTABLES, false);
|
||||||
|
|
||||||
@ -142,8 +143,8 @@ core_info_list_t *core_info_list_new(const char *modules_path)
|
|||||||
|
|
||||||
strlcat(info_path_base, ".info", sizeof(info_path_base));
|
strlcat(info_path_base, ".info", sizeof(info_path_base));
|
||||||
|
|
||||||
fill_pathname_join(info_path, (*g_settings.libretro_info_path) ?
|
fill_pathname_join(info_path, (*settings->libretro_info_path) ?
|
||||||
g_settings.libretro_info_path : modules_path,
|
settings->libretro_info_path : modules_path,
|
||||||
info_path_base, sizeof(info_path));
|
info_path_base, sizeof(info_path));
|
||||||
|
|
||||||
core_info[i].data = config_file_new(info_path);
|
core_info[i].data = config_file_new(info_path);
|
||||||
|
@ -122,14 +122,20 @@ static void d3d_deinit_shader(void *data)
|
|||||||
|
|
||||||
static bool d3d_init_shader(void *data)
|
static bool d3d_init_shader(void *data)
|
||||||
{
|
{
|
||||||
|
const char *shader_path = NULL;
|
||||||
|
const shader_backend_t *backend = NULL;
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)d3d;
|
(void)d3d;
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
#if defined(HAVE_HLSL)
|
#if defined(HAVE_HLSL)
|
||||||
RARCH_LOG("D3D]: Using HLSL shader backend.\n");
|
RARCH_LOG("D3D]: Using HLSL shader backend.\n");
|
||||||
const shader_backend_t *backend = &hlsl_backend;
|
backend = &hlsl_backend;
|
||||||
const char *shader_path = g_settings.video.shader_path;
|
shader_path = settings->video.shader_path;
|
||||||
d3d->shader = backend;
|
d3d->shader = backend;
|
||||||
|
|
||||||
if (!d3d->shader)
|
if (!d3d->shader)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -227,6 +233,7 @@ static bool d3d_init_base(void *data, const video_info_t *info)
|
|||||||
static bool d3d_initialize(d3d_video_t *d3d, const video_info_t *info)
|
static bool d3d_initialize(d3d_video_t *d3d, const video_info_t *info)
|
||||||
{
|
{
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!d3d)
|
if (!d3d)
|
||||||
return false;
|
return false;
|
||||||
@ -297,10 +304,10 @@ static bool d3d_initialize(d3d_video_t *d3d, const video_info_t *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_XBOX360)
|
#if defined(_XBOX360)
|
||||||
strlcpy(g_settings.video.font_path, "game:\\media\\Arial_12.xpr",
|
strlcpy(settings->video.font_path, "game:\\media\\Arial_12.xpr",
|
||||||
sizeof(g_settings.video.font_path));
|
sizeof(settings->video.font_path));
|
||||||
#endif
|
#endif
|
||||||
d3d->font_ctx = d3d_font_init_first(d3d, g_settings.video.font_path, 0);
|
d3d->font_ctx = d3d_font_init_first(d3d, settings->video.font_path, 0);
|
||||||
if (!d3d->font_ctx)
|
if (!d3d->font_ctx)
|
||||||
{
|
{
|
||||||
RARCH_ERR("Failed to initialize font.\n");
|
RARCH_ERR("Failed to initialize font.\n");
|
||||||
@ -349,7 +356,9 @@ static void d3d_calculate_rect(d3d_video_t *d3d,
|
|||||||
unsigned width, unsigned height,
|
unsigned width, unsigned height,
|
||||||
bool keep, float desired_aspect)
|
bool keep, float desired_aspect)
|
||||||
{
|
{
|
||||||
if (g_settings.video.scale_integer)
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (settings->video.scale_integer)
|
||||||
{
|
{
|
||||||
struct video_viewport vp = {0};
|
struct video_viewport vp = {0};
|
||||||
video_viewport_get_scaled_integer(&vp, width, height, desired_aspect, keep);
|
video_viewport_get_scaled_integer(&vp, width, height, desired_aspect, keep);
|
||||||
@ -359,7 +368,7 @@ static void d3d_calculate_rect(d3d_video_t *d3d,
|
|||||||
d3d_set_viewport(d3d, 0, 0, width, height);
|
d3d_set_viewport(d3d, 0, 0, width, height);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
const video_viewport_t *custom =
|
const video_viewport_t *custom =
|
||||||
&g_extern.console.screen.viewports.custom_vp;
|
&g_extern.console.screen.viewports.custom_vp;
|
||||||
@ -508,7 +517,8 @@ static bool d3d_construct(d3d_video_t *d3d,
|
|||||||
void **input_data)
|
void **input_data)
|
||||||
{
|
{
|
||||||
unsigned full_x, full_y;
|
unsigned full_x, full_y;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
d3d->should_resize = false;
|
d3d->should_resize = false;
|
||||||
#ifndef _XBOX
|
#ifndef _XBOX
|
||||||
@ -556,7 +566,7 @@ static bool d3d_construct(d3d_video_t *d3d,
|
|||||||
#ifdef HAVE_MONITOR
|
#ifdef HAVE_MONITOR
|
||||||
RECT mon_rect = d3d_monitor_rect(d3d);
|
RECT mon_rect = d3d_monitor_rect(d3d);
|
||||||
|
|
||||||
bool windowed_full = g_settings.video.windowed_fullscreen;
|
bool windowed_full = settings->video.windowed_fullscreen;
|
||||||
|
|
||||||
full_x = (windowed_full || info->width == 0) ?
|
full_x = (windowed_full || info->width == 0) ?
|
||||||
(mon_rect.right - mon_rect.left) : info->width;
|
(mon_rect.right - mon_rect.left) : info->width;
|
||||||
@ -612,7 +622,7 @@ static bool d3d_construct(d3d_video_t *d3d,
|
|||||||
);
|
);
|
||||||
|
|
||||||
#if defined(HAVE_WINDOW) && !defined(_XBOX)
|
#if defined(HAVE_WINDOW) && !defined(_XBOX)
|
||||||
if (!info->fullscreen && g_settings.ui.menubar_enable)
|
if (!info->fullscreen && settings->ui.menubar_enable)
|
||||||
{
|
{
|
||||||
RECT rc_temp = {0, 0, win_height, 0x7FFF};
|
RECT rc_temp = {0, 0, win_height, 0x7FFF};
|
||||||
|
|
||||||
@ -634,9 +644,9 @@ static bool d3d_construct(d3d_video_t *d3d,
|
|||||||
* to avoid set_shader() to be overridden
|
* to avoid set_shader() to be overridden
|
||||||
* later. */
|
* later. */
|
||||||
enum rarch_shader_type type =
|
enum rarch_shader_type type =
|
||||||
video_shader_parse_type(g_settings.video.shader_path, RARCH_SHADER_NONE);
|
video_shader_parse_type(settings->video.shader_path, RARCH_SHADER_NONE);
|
||||||
if (g_settings.video.shader_enable && type == RARCH_SHADER_CG)
|
if (settings->video.shader_enable && type == RARCH_SHADER_CG)
|
||||||
d3d->cg_shader = g_settings.video.shader_path;
|
d3d->cg_shader = settings->video.shader_path;
|
||||||
|
|
||||||
if (!d3d_process_shader(d3d))
|
if (!d3d_process_shader(d3d))
|
||||||
return false;
|
return false;
|
||||||
@ -692,14 +702,15 @@ static const gfx_ctx_driver_t *d3d_get_context(void *data)
|
|||||||
TODO: GL core contexts through ANGLE? */
|
TODO: GL core contexts through ANGLE? */
|
||||||
enum gfx_ctx_api api = GFX_CTX_DIRECT3D9_API;
|
enum gfx_ctx_api api = GFX_CTX_DIRECT3D9_API;
|
||||||
unsigned major = 9, minor = 0;
|
unsigned major = 9, minor = 0;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
api = GFX_CTX_DIRECT3D8_API;
|
api = GFX_CTX_DIRECT3D8_API;
|
||||||
major = 8;
|
major = 8;
|
||||||
#endif
|
#endif
|
||||||
return gfx_ctx_init_first(driver->video_data,
|
return gfx_ctx_init_first(driver->video_data,
|
||||||
g_settings.video.context_driver,
|
settings->video.context_driver,
|
||||||
api, major, minor, false);
|
api, major, minor, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -832,6 +843,7 @@ static RECT d3d_monitor_rect(d3d_video_t *d3d)
|
|||||||
MONITORINFOEX current_mon;
|
MONITORINFOEX current_mon;
|
||||||
HMONITOR hm_to_use;
|
HMONITOR hm_to_use;
|
||||||
monitor_count = 0;
|
monitor_count = 0;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
EnumDisplayMonitors(NULL, NULL, d3d_monitor_enum_proc, 0);
|
EnumDisplayMonitors(NULL, NULL, d3d_monitor_enum_proc, 0);
|
||||||
|
|
||||||
@ -840,7 +852,7 @@ static RECT d3d_monitor_rect(d3d_video_t *d3d)
|
|||||||
GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
|
GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
|
||||||
|
|
||||||
hm_to_use = monitor_last;
|
hm_to_use = monitor_last;
|
||||||
fs_monitor = g_settings.video.monitor_index;
|
fs_monitor = settings->video.monitor_index;
|
||||||
|
|
||||||
if (fs_monitor && fs_monitor <= monitor_count
|
if (fs_monitor && fs_monitor <= monitor_count
|
||||||
&& monitor_all[fs_monitor - 1])
|
&& monitor_all[fs_monitor - 1])
|
||||||
@ -1232,9 +1244,10 @@ static void d3d_set_font_rect(d3d_video_t *d3d,
|
|||||||
const struct font_params *params)
|
const struct font_params *params)
|
||||||
{
|
{
|
||||||
#ifndef _XBOX
|
#ifndef _XBOX
|
||||||
float pos_x = g_settings.video.msg_pos_x;
|
settings_t *settings = config_get_ptr();
|
||||||
float pos_y = g_settings.video.msg_pos_y;
|
float pos_x = settings->video.msg_pos_x;
|
||||||
float font_size = g_settings.video.font_size;
|
float pos_y = settings->video.msg_pos_y;
|
||||||
|
float font_size = settings->video.font_size;
|
||||||
|
|
||||||
if (params)
|
if (params)
|
||||||
{
|
{
|
||||||
@ -1299,13 +1312,14 @@ static bool d3d_process_shader(d3d_video_t *d3d)
|
|||||||
static bool d3d_init_luts(d3d_video_t *d3d)
|
static bool d3d_init_luts(d3d_video_t *d3d)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
for (i = 0; i < d3d->shader.luts; i++)
|
for (i = 0; i < d3d->shader.luts; i++)
|
||||||
{
|
{
|
||||||
bool ret = renderchain_add_lut(
|
bool ret = renderchain_add_lut(
|
||||||
d3d->chain, d3d->shader.lut[i].id, d3d->shader.lut[i].path,
|
d3d->chain, d3d->shader.lut[i].id, d3d->shader.lut[i].path,
|
||||||
d3d->shader.lut[i].filter == RARCH_FILTER_UNSPEC ?
|
d3d->shader.lut[i].filter == RARCH_FILTER_UNSPEC ?
|
||||||
g_settings.video.smooth :
|
settings->video.smooth :
|
||||||
(d3d->shader.lut[i].filter == RARCH_FILTER_LINEAR));
|
(d3d->shader.lut[i].filter == RARCH_FILTER_LINEAR));
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
@ -1610,6 +1624,7 @@ static bool d3d_frame(void *data, const void *frame,
|
|||||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||||
runloop_t *runloop = rarch_main_get_ptr();
|
runloop_t *runloop = rarch_main_get_ptr();
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)i;
|
(void)i;
|
||||||
|
|
||||||
@ -1657,7 +1672,7 @@ static bool d3d_frame(void *data, const void *frame,
|
|||||||
|
|
||||||
/* Insert black frame first, so we
|
/* Insert black frame first, so we
|
||||||
* can screenshot, etc. */
|
* can screenshot, etc. */
|
||||||
if (g_settings.video.black_frame_insertion)
|
if (settings->video.black_frame_insertion)
|
||||||
{
|
{
|
||||||
d3d_swap(d3d, d3dr);
|
d3d_swap(d3d, d3dr);
|
||||||
if (d3d->needs_restore)
|
if (d3d->needs_restore)
|
||||||
|
@ -20,8 +20,9 @@
|
|||||||
|
|
||||||
static INLINE D3DTEXTUREFILTERTYPE translate_filter(unsigned type)
|
static INLINE D3DTEXTUREFILTERTYPE translate_filter(unsigned type)
|
||||||
{
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
if (type == RARCH_FILTER_UNSPEC)
|
if (type == RARCH_FILTER_UNSPEC)
|
||||||
return g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT;
|
return settings->video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT;
|
||||||
return type == RARCH_FILTER_LINEAR ? D3DTEXF_LINEAR : D3DTEXF_POINT;
|
return type == RARCH_FILTER_LINEAR ? D3DTEXF_LINEAR : D3DTEXF_POINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,8 @@ static void renderchain_render_pass(void *data, const void *frame, unsigned widt
|
|||||||
{
|
{
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev;
|
||||||
runloop_t *runloop = rarch_main_get_ptr();
|
runloop_t *runloop = rarch_main_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
d3dr->SetFlickerFilter(g_extern.console.screen.flicker_filter_index);
|
d3dr->SetFlickerFilter(g_extern.console.screen.flicker_filter_index);
|
||||||
@ -126,8 +127,8 @@ static void renderchain_render_pass(void *data, const void *frame, unsigned widt
|
|||||||
|
|
||||||
d3d_set_texture(d3dr, 0, d3d->tex);
|
d3d_set_texture(d3dr, 0, d3d->tex);
|
||||||
d3d_set_viewport(d3d->dev, &d3d->final_viewport);
|
d3d_set_viewport(d3d->dev, &d3d->final_viewport);
|
||||||
d3d_set_sampler_minfilter(d3dr, 0, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
d3d_set_sampler_minfilter(d3dr, 0, settings->video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
d3d_set_sampler_magfilter(d3dr, 0, g_settings.video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
d3d_set_sampler_magfilter(d3dr, 0, settings->video.smooth ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||||
|
|
||||||
#if defined(_XBOX1)
|
#if defined(_XBOX1)
|
||||||
d3d_set_vertex_shader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1, NULL);
|
d3d_set_vertex_shader(d3dr, D3DFVF_XYZ | D3DFVF_TEX1, NULL);
|
||||||
|
@ -215,6 +215,7 @@ static bool dispmanx_setup_scale(void *data, unsigned width,
|
|||||||
int i, dst_ypos;
|
int i, dst_ypos;
|
||||||
VC_DISPMANX_ALPHA_T layerAlpha;
|
VC_DISPMANX_ALPHA_T layerAlpha;
|
||||||
struct dispmanx_video *_dispvars = data;
|
struct dispmanx_video *_dispvars = data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!_dispvars)
|
if (!_dispvars)
|
||||||
return false;
|
return false;
|
||||||
@ -255,7 +256,7 @@ static bool dispmanx_setup_scale(void *data, unsigned width,
|
|||||||
layerAlpha.mask = 0;
|
layerAlpha.mask = 0;
|
||||||
_dispvars->alpha = &layerAlpha;
|
_dispvars->alpha = &layerAlpha;
|
||||||
|
|
||||||
switch (g_settings.video.aspect_ratio_idx)
|
switch (settings->video.aspect_ratio_idx)
|
||||||
{
|
{
|
||||||
case ASPECT_RATIO_4_3:
|
case ASPECT_RATIO_4_3:
|
||||||
_dispvars->aspect = (float)4 / (float)3;
|
_dispvars->aspect = (float)4 / (float)3;
|
||||||
|
@ -594,8 +594,9 @@ static int exynos_open(struct exynos_data *pdata)
|
|||||||
int devidx;
|
int devidx;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
struct exynos_drm *drm = NULL;
|
struct exynos_drm *drm = NULL;
|
||||||
struct exynos_fliphandler *fliphandler = NULL;
|
struct exynos_fliphandler *fliphandler = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
pdata->fd = -1;
|
pdata->fd = -1;
|
||||||
|
|
||||||
@ -632,8 +633,8 @@ static int exynos_open(struct exynos_data *pdata)
|
|||||||
|
|
||||||
for (i = 0; i < drm->resources->count_connectors; ++i)
|
for (i = 0; i < drm->resources->count_connectors; ++i)
|
||||||
{
|
{
|
||||||
if (g_settings.video.monitor_index != 0 &&
|
if (settings->video.monitor_index != 0 &&
|
||||||
g_settings.video.monitor_index - 1 != i)
|
settings->video.monitor_index - 1 != i)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
drm->connector = drmModeGetConnector(fd, drm->resources->connectors[i]);
|
drm->connector = drmModeGetConnector(fd, drm->resources->connectors[i]);
|
||||||
@ -716,16 +717,17 @@ static void exynos_close(struct exynos_data *pdata)
|
|||||||
static int exynos_init(struct exynos_data *pdata, unsigned bpp)
|
static int exynos_init(struct exynos_data *pdata, unsigned bpp)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
int fd = pdata->fd;
|
||||||
struct exynos_drm *drm = pdata->drm;
|
struct exynos_drm *drm = pdata->drm;
|
||||||
int fd = pdata->fd;
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (g_settings.video.fullscreen_x != 0 &&
|
if (settings->video.fullscreen_x != 0 &&
|
||||||
g_settings.video.fullscreen_y != 0)
|
settings->video.fullscreen_y != 0)
|
||||||
{
|
{
|
||||||
for (i = 0; i < drm->connector->count_modes; i++)
|
for (i = 0; i < drm->connector->count_modes; i++)
|
||||||
{
|
{
|
||||||
if (drm->connector->modes[i].hdisplay == g_settings.video.fullscreen_x &&
|
if (drm->connector->modes[i].hdisplay == settings->video.fullscreen_x &&
|
||||||
drm->connector->modes[i].vdisplay == g_settings.video.fullscreen_y)
|
drm->connector->modes[i].vdisplay == settings->video.fullscreen_y)
|
||||||
{
|
{
|
||||||
drm->mode = &drm->connector->modes[i];
|
drm->mode = &drm->connector->modes[i];
|
||||||
break;
|
break;
|
||||||
@ -735,7 +737,7 @@ static int exynos_init(struct exynos_data *pdata, unsigned bpp)
|
|||||||
if (drm->mode == NULL)
|
if (drm->mode == NULL)
|
||||||
{
|
{
|
||||||
RARCH_ERR("video_exynos: requested resolution (%ux%u) not available\n",
|
RARCH_ERR("video_exynos: requested resolution (%ux%u) not available\n",
|
||||||
g_settings.video.fullscreen_x, g_settings.video.fullscreen_y);
|
settings->video.fullscreen_x, settings->video.fullscreen_y);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1177,21 +1179,22 @@ struct exynos_video
|
|||||||
static int exynos_init_font(struct exynos_video *vid)
|
static int exynos_init_font(struct exynos_video *vid)
|
||||||
{
|
{
|
||||||
struct exynos_data *pdata = vid->data;
|
struct exynos_data *pdata = vid->data;
|
||||||
struct g2d_image *src = pdata->src[EXYNOS_IMAGE_FONT];
|
struct g2d_image *src = pdata->src[EXYNOS_IMAGE_FONT];
|
||||||
const unsigned buf_height = defaults[EXYNOS_IMAGE_FONT].height;
|
const unsigned buf_height = defaults[EXYNOS_IMAGE_FONT].height;
|
||||||
const unsigned buf_width = align_common(pdata->aspect * (float)buf_height, 16);
|
const unsigned buf_width = align_common(pdata->aspect * (float)buf_height, 16);
|
||||||
const unsigned buf_bpp = defaults[EXYNOS_IMAGE_FONT].bpp;
|
const unsigned buf_bpp = defaults[EXYNOS_IMAGE_FONT].bpp;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!g_settings.video.font_enable)
|
if (!settings->video.font_enable)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (font_renderer_create_default(&vid->font_driver, &vid->font,
|
if (font_renderer_create_default(&vid->font_driver, &vid->font,
|
||||||
*g_settings.video.font_path ? g_settings.video.font_path : NULL,
|
*settings->video.font_path ? settings->video.font_path : NULL,
|
||||||
g_settings.video.font_size))
|
settings->video.font_size))
|
||||||
{
|
{
|
||||||
const int r = g_settings.video.msg_color_r * 15;
|
const int r = settings->video.msg_color_r * 15;
|
||||||
const int g = g_settings.video.msg_color_g * 15;
|
const int g = settings->video.msg_color_g * 15;
|
||||||
const int b = g_settings.video.msg_color_b * 15;
|
const int b = settings->video.msg_color_b * 15;
|
||||||
|
|
||||||
vid->font_color = ((b < 0 ? 0 : (b > 15 ? 15 : b)) << 0) |
|
vid->font_color = ((b < 0 ? 0 : (b > 15 ? 15 : b)) << 0) |
|
||||||
((g < 0 ? 0 : (g > 15 ? 15 : g)) << 4) |
|
((g < 0 ? 0 : (g > 15 ? 15 : g)) << 4) |
|
||||||
@ -1227,9 +1230,10 @@ static int exynos_render_msg(struct exynos_video *vid,
|
|||||||
{
|
{
|
||||||
const struct font_atlas *atlas;
|
const struct font_atlas *atlas;
|
||||||
struct exynos_data *pdata = vid->data;
|
struct exynos_data *pdata = vid->data;
|
||||||
struct g2d_image *dst = pdata->src[EXYNOS_IMAGE_FONT];
|
struct g2d_image *dst = pdata->src[EXYNOS_IMAGE_FONT];
|
||||||
int msg_base_x = g_settings.video.msg_pos_x * dst->width;
|
settings_t *settings = config_get_ptr();
|
||||||
int msg_base_y = (1.0f - g_settings.video.msg_pos_y) * dst->height;
|
int msg_base_x = settings->video.msg_pos_x * dst->width;
|
||||||
|
int msg_base_y = (1.0f - settings->video.msg_pos_y) * dst->height;
|
||||||
|
|
||||||
if (vid->font == NULL || vid->font_driver == NULL)
|
if (vid->font == NULL || vid->font_driver == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
@ -1409,6 +1413,7 @@ static bool exynos_gfx_frame(void *data, const void *frame, unsigned width,
|
|||||||
{
|
{
|
||||||
struct exynos_video *vid = data;
|
struct exynos_video *vid = data;
|
||||||
struct exynos_page *page = NULL;
|
struct exynos_page *page = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
/* Check if neither menu nor core framebuffer is to be displayed. */
|
/* Check if neither menu nor core framebuffer is to be displayed. */
|
||||||
if (!vid->menu_active && frame == NULL)
|
if (!vid->menu_active && frame == NULL)
|
||||||
@ -1436,11 +1441,11 @@ static bool exynos_gfx_frame(void *data, const void *frame, unsigned width,
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
{
|
{
|
||||||
char buffer[128], buffer_fps[128];
|
char buffer[128], buffer_fps[128];
|
||||||
video_monitor_get_fps(buffer, sizeof(buffer),
|
video_monitor_get_fps(buffer, sizeof(buffer),
|
||||||
g_settings.fps_show ? buffer_fps : NULL, sizeof(buffer_fps));
|
settings->fps_show ? buffer_fps : NULL, sizeof(buffer_fps));
|
||||||
rarch_main_msg_queue_push(buffer_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buffer_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,8 +206,9 @@ static bool gl_shader_init(gl_t *gl)
|
|||||||
enum rarch_shader_type type;
|
enum rarch_shader_type type;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
const shader_backend_t *backend = NULL;
|
const shader_backend_t *backend = NULL;
|
||||||
const char *shader_path = (g_settings.video.shader_enable && *g_settings.video.shader_path) ?
|
settings_t *settings = config_get_ptr();
|
||||||
g_settings.video.shader_path : NULL;
|
const char *shader_path = (settings->video.shader_enable && *settings->video.shader_path) ?
|
||||||
|
settings->video.shader_path : NULL;
|
||||||
|
|
||||||
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
@ -422,37 +423,43 @@ static void gl_compute_fbo_geometry(gl_t *gl, unsigned width, unsigned height,
|
|||||||
static void gl_create_fbo_textures(gl_t *gl)
|
static void gl_create_fbo_textures(gl_t *gl)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
GLuint base_filt = g_settings.video.smooth ? GL_LINEAR : GL_NEAREST;
|
settings_t *settings = config_get_ptr();
|
||||||
GLuint base_mip_filt = g_settings.video.smooth ?
|
GLuint base_filt = settings->video.smooth ? GL_LINEAR : GL_NEAREST;
|
||||||
|
GLuint base_mip_filt = settings->video.smooth ?
|
||||||
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST;
|
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST;
|
||||||
|
|
||||||
glGenTextures(gl->fbo_pass, gl->fbo_texture);
|
glGenTextures(gl->fbo_pass, gl->fbo_texture);
|
||||||
|
|
||||||
for (i = 0; i < gl->fbo_pass; i++)
|
for (i = 0; i < gl->fbo_pass; i++)
|
||||||
{
|
{
|
||||||
|
enum gfx_wrap_type wrap;
|
||||||
|
GLenum min_filter, mag_filter, wrap_enum;
|
||||||
|
bool mipmapped = false;
|
||||||
|
bool smooth = false;
|
||||||
|
bool fp_fbo, srgb_fbo;
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]);
|
glBindTexture(GL_TEXTURE_2D, gl->fbo_texture[i]);
|
||||||
|
|
||||||
bool mipmapped = gl->shader->mipmap_input(i + 2);
|
mipmapped = gl->shader->mipmap_input(i + 2);
|
||||||
|
|
||||||
GLenum min_filter = mipmapped ? base_mip_filt : base_filt;
|
min_filter = mipmapped ? base_mip_filt : base_filt;
|
||||||
bool smooth = false;
|
|
||||||
if (gl->shader->filter_type(i + 2, &smooth))
|
if (gl->shader->filter_type(i + 2, &smooth))
|
||||||
min_filter = mipmapped ? (smooth ?
|
min_filter = mipmapped ? (smooth ?
|
||||||
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST)
|
GL_LINEAR_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST)
|
||||||
: (smooth ? GL_LINEAR : GL_NEAREST);
|
: (smooth ? GL_LINEAR : GL_NEAREST);
|
||||||
|
|
||||||
GLenum mag_filter = min_filter_to_mag(min_filter);
|
mag_filter = min_filter_to_mag(min_filter);
|
||||||
|
|
||||||
enum gfx_wrap_type wrap = gl->shader->wrap_type(i + 2);
|
wrap = gl->shader->wrap_type(i + 2);
|
||||||
GLenum wrap_enum = gl_wrap_type_to_enum(wrap);
|
wrap_enum = gl_wrap_type_to_enum(wrap);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_enum);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_enum);
|
||||||
|
|
||||||
bool fp_fbo = gl->fbo_scale[i].fp_fbo;
|
fp_fbo = gl->fbo_scale[i].fp_fbo;
|
||||||
bool srgb_fbo = gl->fbo_scale[i].srgb_fbo;
|
srgb_fbo = gl->fbo_scale[i].srgb_fbo;
|
||||||
|
|
||||||
if (fp_fbo)
|
if (fp_fbo)
|
||||||
{
|
{
|
||||||
@ -465,7 +472,7 @@ static void gl_create_fbo_textures(gl_t *gl)
|
|||||||
RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n");
|
RARCH_ERR("[GL]: sRGB FBO was requested, but it is not supported. Falling back to UNORM. Result may have banding!\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings.video.force_srgb_disable)
|
if (settings->video.force_srgb_disable)
|
||||||
srgb_fbo = false;
|
srgb_fbo = false;
|
||||||
|
|
||||||
#ifndef HAVE_OPENGLES2
|
#ifndef HAVE_OPENGLES2
|
||||||
@ -763,13 +770,14 @@ void gl_set_viewport(gl_t *gl, unsigned width,
|
|||||||
unsigned height, bool force_full, bool allow_rotate)
|
unsigned height, bool force_full, bool allow_rotate)
|
||||||
{
|
{
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
float device_aspect = (float)width / height;
|
float device_aspect = (float)width / height;
|
||||||
struct gl_ortho ortho = {0, 1, 0, 1, -1, 1};
|
struct gl_ortho ortho = {0, 1, 0, 1, -1, 1};
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (gl->ctx_driver->translate_aspect)
|
if (gl->ctx_driver->translate_aspect)
|
||||||
device_aspect = gl->ctx_driver->translate_aspect(gl, width, height);
|
device_aspect = gl->ctx_driver->translate_aspect(gl, width, height);
|
||||||
|
|
||||||
if (g_settings.video.scale_integer && !force_full)
|
if (settings->video.scale_integer && !force_full)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&gl->vp, width, height,
|
video_viewport_get_scaled_integer(&gl->vp, width, height,
|
||||||
g_extern.system.aspect_ratio, gl->keep_aspect);
|
g_extern.system.aspect_ratio, gl->keep_aspect);
|
||||||
@ -782,7 +790,7 @@ void gl_set_viewport(gl_t *gl, unsigned width,
|
|||||||
float desired_aspect = g_extern.system.aspect_ratio;
|
float desired_aspect = g_extern.system.aspect_ratio;
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
#if defined(HAVE_MENU)
|
||||||
if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
const struct video_viewport *custom = &g_extern.console.screen.viewports.custom_vp;
|
const struct video_viewport *custom = &g_extern.console.screen.viewports.custom_vp;
|
||||||
|
|
||||||
@ -1465,8 +1473,9 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
unsigned width, unsigned height, unsigned pitch, const char *msg)
|
unsigned width, unsigned height, unsigned pitch, const char *msg)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
gl_t *gl = (gl_t*)data;
|
||||||
runloop_t *runloop = rarch_main_get_ptr();
|
runloop_t *runloop = rarch_main_get_ptr();
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
RARCH_PERFORMANCE_INIT(frame_run);
|
RARCH_PERFORMANCE_INIT(frame_run);
|
||||||
RARCH_PERFORMANCE_START(frame_run);
|
RARCH_PERFORMANCE_START(frame_run);
|
||||||
@ -1650,7 +1659,7 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
#endif
|
#endif
|
||||||
/* Disable BFI during fast forward, slow-motion,
|
/* Disable BFI during fast forward, slow-motion,
|
||||||
* and pause to prevent flicker. */
|
* and pause to prevent flicker. */
|
||||||
if (g_settings.video.black_frame_insertion &&
|
if (settings->video.black_frame_insertion &&
|
||||||
!driver->nonblock_state && !runloop->is_slowmotion
|
!driver->nonblock_state && !runloop->is_slowmotion
|
||||||
&& !runloop->is_paused)
|
&& !runloop->is_paused)
|
||||||
{
|
{
|
||||||
@ -1661,7 +1670,7 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
gl->ctx_driver->swap_buffers(gl);
|
gl->ctx_driver->swap_buffers(gl);
|
||||||
|
|
||||||
#ifdef HAVE_GL_SYNC
|
#ifdef HAVE_GL_SYNC
|
||||||
if (g_settings.video.hard_sync && gl->have_sync)
|
if (settings->video.hard_sync && gl->have_sync)
|
||||||
{
|
{
|
||||||
RARCH_PERFORMANCE_INIT(gl_fence);
|
RARCH_PERFORMANCE_INIT(gl_fence);
|
||||||
RARCH_PERFORMANCE_START(gl_fence);
|
RARCH_PERFORMANCE_START(gl_fence);
|
||||||
@ -1669,7 +1678,7 @@ static bool gl_frame(void *data, const void *frame,
|
|||||||
gl->fences[gl->fence_count++] =
|
gl->fences[gl->fence_count++] =
|
||||||
glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
|
||||||
|
|
||||||
while (gl->fence_count > g_settings.video.hard_sync_frames)
|
while (gl->fence_count > settings->video.hard_sync_frames)
|
||||||
{
|
{
|
||||||
glClientWaitSync(gl->fences[0],
|
glClientWaitSync(gl->fences[0],
|
||||||
GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000);
|
GL_SYNC_FLUSH_COMMANDS_BIT, 1000000000);
|
||||||
@ -1794,7 +1803,8 @@ static void gl_free(void *data)
|
|||||||
|
|
||||||
static void gl_set_nonblock_state(void *data, bool state)
|
static void gl_set_nonblock_state(void *data, bool state)
|
||||||
{
|
{
|
||||||
gl_t *gl = (gl_t*)data;
|
gl_t *gl = (gl_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
@ -1803,13 +1813,14 @@ static void gl_set_nonblock_state(void *data, bool state)
|
|||||||
|
|
||||||
context_bind_hw_render(gl, false);
|
context_bind_hw_render(gl, false);
|
||||||
gl->ctx_driver->swap_interval(gl,
|
gl->ctx_driver->swap_interval(gl,
|
||||||
state ? 0 : g_settings.video.swap_interval);
|
state ? 0 : settings->video.swap_interval);
|
||||||
context_bind_hw_render(gl, true);
|
context_bind_hw_render(gl, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool resolve_extensions(gl_t *gl)
|
static bool resolve_extensions(gl_t *gl)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
#ifndef HAVE_OPENGLES
|
#ifndef HAVE_OPENGLES
|
||||||
const char *vendor = NULL;
|
const char *vendor = NULL;
|
||||||
const char *renderer = NULL;
|
const char *renderer = NULL;
|
||||||
@ -1845,7 +1856,7 @@ static bool resolve_extensions(gl_t *gl)
|
|||||||
|
|
||||||
#ifdef HAVE_GL_SYNC
|
#ifdef HAVE_GL_SYNC
|
||||||
gl->have_sync = check_sync_proc(gl);
|
gl->have_sync = check_sync_proc(gl);
|
||||||
if (gl->have_sync && g_settings.video.hard_sync)
|
if (gl->have_sync && settings->video.hard_sync)
|
||||||
RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n");
|
RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1899,7 +1910,7 @@ static bool resolve_extensions(gl_t *gl)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_FBO
|
#ifdef HAVE_FBO
|
||||||
if (g_settings.video.force_srgb_disable)
|
if (settings->video.force_srgb_disable)
|
||||||
gl->has_srgb_fbo = false;
|
gl->has_srgb_fbo = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1976,6 +1987,7 @@ static void gl_init_pbo_readback(gl_t *gl)
|
|||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
struct scaler_ctx *scaler = NULL;
|
struct scaler_ctx *scaler = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)scaler;
|
(void)scaler;
|
||||||
/* Only bother with this if we're doing GPU recording.
|
/* Only bother with this if we're doing GPU recording.
|
||||||
@ -1983,7 +1995,7 @@ static void gl_init_pbo_readback(gl_t *gl)
|
|||||||
* driver.recording_data, because recording is
|
* driver.recording_data, because recording is
|
||||||
* not initialized yet.
|
* not initialized yet.
|
||||||
*/
|
*/
|
||||||
gl->pbo_readback_enable = g_settings.video.gpu_record
|
gl->pbo_readback_enable = settings->video.gpu_record
|
||||||
&& g_extern.record.enable;
|
&& g_extern.record.enable;
|
||||||
if (!gl->pbo_readback_enable)
|
if (!gl->pbo_readback_enable)
|
||||||
return;
|
return;
|
||||||
@ -2029,6 +2041,7 @@ static const gfx_ctx_driver_t *gl_get_context(gl_t *gl)
|
|||||||
&g_extern.system.hw_render_callback;
|
&g_extern.system.hw_render_callback;
|
||||||
unsigned major = cb->version_major;
|
unsigned major = cb->version_major;
|
||||||
unsigned minor = cb->version_minor;
|
unsigned minor = cb->version_minor;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
#ifdef HAVE_OPENGLES
|
#ifdef HAVE_OPENGLES
|
||||||
enum gfx_ctx_api api = GFX_CTX_OPENGL_ES_API;
|
enum gfx_ctx_api api = GFX_CTX_OPENGL_ES_API;
|
||||||
const char *api_name = "OpenGL ES 2.0";
|
const char *api_name = "OpenGL ES 2.0";
|
||||||
@ -2049,10 +2062,10 @@ static const gfx_ctx_driver_t *gl_get_context(gl_t *gl)
|
|||||||
|
|
||||||
(void)api_name;
|
(void)api_name;
|
||||||
|
|
||||||
gl->shared_context_use = g_settings.video.shared_context
|
gl->shared_context_use = settings->video.shared_context
|
||||||
&& cb->context_type != RETRO_HW_CONTEXT_NONE;
|
&& cb->context_type != RETRO_HW_CONTEXT_NONE;
|
||||||
|
|
||||||
return gfx_ctx_init_first(gl, g_settings.video.context_driver,
|
return gfx_ctx_init_first(gl, settings->video.context_driver,
|
||||||
api, major, minor, gl->shared_context_use);
|
api, major, minor, gl->shared_context_use);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2202,6 +2215,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
const char *renderer = NULL;
|
const char *renderer = NULL;
|
||||||
const char *version = NULL;
|
const char *version = NULL;
|
||||||
struct retro_hw_render_callback *hw_render = NULL;
|
struct retro_hw_render_callback *hw_render = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
gfx_set_dwm();
|
gfx_set_dwm();
|
||||||
#endif
|
#endif
|
||||||
@ -2226,7 +2240,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
RARCH_LOG("Detecting screen resolution %ux%u.\n", gl->full_x, gl->full_y);
|
RARCH_LOG("Detecting screen resolution %ux%u.\n", gl->full_x, gl->full_y);
|
||||||
|
|
||||||
gl->ctx_driver->swap_interval(gl,
|
gl->ctx_driver->swap_interval(gl,
|
||||||
video->vsync ? g_settings.video.swap_interval : 0);
|
video->vsync ? settings->video.swap_interval : 0);
|
||||||
|
|
||||||
win_width = video->width;
|
win_width = video->width;
|
||||||
win_height = video->height;
|
win_height = video->height;
|
||||||
@ -2414,11 +2428,11 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
if (input && input_data)
|
if (input && input_data)
|
||||||
gl->ctx_driver->input_driver(gl, input, input_data);
|
gl->ctx_driver->input_driver(gl, input, input_data);
|
||||||
|
|
||||||
if (g_settings.video.font_enable)
|
if (settings->video.font_enable)
|
||||||
{
|
{
|
||||||
if (!gl_font_init_first(&gl->font_driver, &gl->font_handle,
|
if (!gl_font_init_first(&gl->font_driver, &gl->font_handle,
|
||||||
gl, *g_settings.video.font_path
|
gl, *settings->video.font_path
|
||||||
? g_settings.video.font_path : NULL, g_settings.video.font_size))
|
? settings->video.font_path : NULL, settings->video.font_size))
|
||||||
RARCH_ERR("[GL]: Failed to initialize font renderer.\n");
|
RARCH_ERR("[GL]: Failed to initialize font renderer.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2491,6 +2505,7 @@ static void gl_update_tex_filter_frame(gl_t *gl)
|
|||||||
GLenum wrap_mode;
|
GLenum wrap_mode;
|
||||||
GLuint new_filt;
|
GLuint new_filt;
|
||||||
bool smooth = false;
|
bool smooth = false;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!gl)
|
if (!gl)
|
||||||
return;
|
return;
|
||||||
@ -2498,7 +2513,7 @@ static void gl_update_tex_filter_frame(gl_t *gl)
|
|||||||
context_bind_hw_render(gl, false);
|
context_bind_hw_render(gl, false);
|
||||||
|
|
||||||
if (!gl->shader->filter_type(1, &smooth))
|
if (!gl->shader->filter_type(1, &smooth))
|
||||||
smooth = g_settings.video.smooth;
|
smooth = settings->video.smooth;
|
||||||
|
|
||||||
wrap_mode = gl_wrap_type_to_enum(gl->shader->wrap_type(1));
|
wrap_mode = gl_wrap_type_to_enum(gl->shader->wrap_type(1));
|
||||||
gl->tex_mipmap = gl->shader->mipmap_input(1);
|
gl->tex_mipmap = gl->shader->mipmap_input(1);
|
||||||
|
@ -230,11 +230,12 @@ static void gx_free_overlay(gx_video_t *gx)
|
|||||||
static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||||
bool fullscreen)
|
bool fullscreen)
|
||||||
{
|
{
|
||||||
|
bool progressive;
|
||||||
unsigned modetype, level, viHeightMultiplier, viWidth, tvmode,
|
unsigned modetype, level, viHeightMultiplier, viWidth, tvmode,
|
||||||
max_width, max_height, i;
|
max_width, max_height, i;
|
||||||
bool progressive;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
menu_handle_t *menu = menu_driver_resolve();
|
||||||
menu_handle_t *menu = menu_driver_resolve();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)level;
|
(void)level;
|
||||||
|
|
||||||
@ -242,7 +243,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
|||||||
VISetBlack(true);
|
VISetBlack(true);
|
||||||
VIFlush();
|
VIFlush();
|
||||||
viHeightMultiplier = 1;
|
viHeightMultiplier = 1;
|
||||||
viWidth = g_settings.video.viwidth;
|
viWidth = settings->video.viwidth;
|
||||||
#if defined(HW_RVL)
|
#if defined(HW_RVL)
|
||||||
progressive = CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable();
|
progressive = CONF_GetProgressiveScan() > 0 && VIDEO_HaveComponentCable();
|
||||||
switch (CONF_GetVideo())
|
switch (CONF_GetVideo())
|
||||||
@ -376,7 +377,7 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
|||||||
GX_SetDispCopyDst(xfbWidth, xfbHeight);
|
GX_SetDispCopyDst(xfbWidth, xfbHeight);
|
||||||
|
|
||||||
GX_SetCopyFilter(gx_mode.aa, gx_mode.sample_pattern,
|
GX_SetCopyFilter(gx_mode.aa, gx_mode.sample_pattern,
|
||||||
(gx_mode.xfbMode == VI_XFBMODE_SF) ? GX_FALSE : g_settings.video.vfilter,
|
(gx_mode.xfbMode == VI_XFBMODE_SF) ? GX_FALSE : settings->video.vfilter,
|
||||||
gx_mode.vfilter);
|
gx_mode.vfilter);
|
||||||
GXColor color = { 0, 0, 0, 0xff };
|
GXColor color = { 0, 0, 0, 0xff };
|
||||||
GX_SetCopyClear(color, GX_MAX_Z24);
|
GX_SetCopyClear(color, GX_MAX_Z24);
|
||||||
@ -476,11 +477,12 @@ static void init_texture(void *data, unsigned width, unsigned height)
|
|||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
struct __gx_texobj *fb_ptr = (struct __gx_texobj*)&g_tex.obj;
|
struct __gx_texobj *fb_ptr = (struct __gx_texobj*)&g_tex.obj;
|
||||||
struct __gx_texobj *menu_ptr = (struct __gx_texobj*)&menu_tex.obj;
|
struct __gx_texobj *menu_ptr = (struct __gx_texobj*)&menu_tex.obj;
|
||||||
menu_handle_t *menu = menu_driver_resolve();
|
menu_handle_t *menu = menu_driver_resolve();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
width &= ~3;
|
width &= ~3;
|
||||||
height &= ~3;
|
height &= ~3;
|
||||||
g_filter = g_settings.video.smooth ? GX_LINEAR : GX_NEAR;
|
g_filter = settings->video.smooth ? GX_LINEAR : GX_NEAR;
|
||||||
menu_w = 320;
|
menu_w = 320;
|
||||||
menu_h = 240;
|
menu_h = 240;
|
||||||
|
|
||||||
@ -828,9 +830,9 @@ static void convert_texture32(const uint32_t *_src, uint32_t *_dst,
|
|||||||
static void gx_resize(void *data)
|
static void gx_resize(void *data)
|
||||||
{
|
{
|
||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
|
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
unsigned width = gx->vp.full_width, height = gx->vp.full_height;
|
unsigned width = gx->vp.full_width, height = gx->vp.full_height;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
#ifdef HW_RVL
|
#ifdef HW_RVL
|
||||||
VIDEO_SetTrapFilter(g_extern.console.softfilter_enable);
|
VIDEO_SetTrapFilter(g_extern.console.softfilter_enable);
|
||||||
@ -854,7 +856,7 @@ static void gx_resize(void *data)
|
|||||||
float delta;
|
float delta;
|
||||||
|
|
||||||
#ifdef RARCH_CONSOLE
|
#ifdef RARCH_CONSOLE
|
||||||
if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
if (!g_extern.console.screen.viewports.custom_vp.width ||
|
if (!g_extern.console.screen.viewports.custom_vp.width ||
|
||||||
!g_extern.console.screen.viewports.custom_vp.height)
|
!g_extern.console.screen.viewports.custom_vp.height)
|
||||||
@ -1029,6 +1031,7 @@ static bool gx_frame(void *data, const void *frame,
|
|||||||
gx_video_t *gx = (gx_video_t*)data;
|
gx_video_t *gx = (gx_video_t*)data;
|
||||||
struct __gx_regdef *__gx = (struct __gx_regdef*)__gxregs;
|
struct __gx_regdef *__gx = (struct __gx_regdef*)__gxregs;
|
||||||
u8 clear_efb = GX_FALSE;
|
u8 clear_efb = GX_FALSE;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
RARCH_PERFORMANCE_INIT(gx_frame);
|
RARCH_PERFORMANCE_INIT(gx_frame);
|
||||||
RARCH_PERFORMANCE_START(gx_frame);
|
RARCH_PERFORMANCE_START(gx_frame);
|
||||||
@ -1117,7 +1120,7 @@ static bool gx_frame(void *data, const void *frame,
|
|||||||
video_monitor_get_fps(fps_txt, sizeof(fps_txt),
|
video_monitor_get_fps(fps_txt, sizeof(fps_txt),
|
||||||
fps_text_buf, sizeof(fps_text_buf));
|
fps_text_buf, sizeof(fps_text_buf));
|
||||||
|
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
{
|
{
|
||||||
char mem1_txt[128];
|
char mem1_txt[128];
|
||||||
unsigned x = 15;
|
unsigned x = 15;
|
||||||
|
@ -86,7 +86,8 @@ typedef struct omapfb_data
|
|||||||
static const char *get_fb_device(void)
|
static const char *get_fb_device(void)
|
||||||
{
|
{
|
||||||
static char fbname[12];
|
static char fbname[12];
|
||||||
const int fbidx = g_settings.video.monitor_index;
|
settings_t *settings = config_get_ptr();
|
||||||
|
const int fbidx = settings->video.monitor_index;
|
||||||
|
|
||||||
if (fbidx == 0)
|
if (fbidx == 0)
|
||||||
return "/dev/fb0";
|
return "/dev/fb0";
|
||||||
@ -555,6 +556,7 @@ static int omapfb_init(omapfb_data_t *pdata, unsigned bpp)
|
|||||||
{
|
{
|
||||||
const char *fbname = get_fb_device();
|
const char *fbname = get_fb_device();
|
||||||
int fd = open(fbname, O_RDWR);
|
int fd = open(fbname, O_RDWR);
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
{
|
{
|
||||||
@ -579,7 +581,7 @@ static int omapfb_init(omapfb_data_t *pdata, unsigned bpp)
|
|||||||
pdata->bpp = bpp;
|
pdata->bpp = bpp;
|
||||||
pdata->num_pages = 3;
|
pdata->num_pages = 3;
|
||||||
|
|
||||||
pdata->sync = g_settings.video.vsync;
|
pdata->sync = settings->video.vsync;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -807,21 +809,22 @@ static void omap_gfx_free(void *data)
|
|||||||
static void omap_init_font(omap_video_t *vid, const char *font_path, unsigned font_size)
|
static void omap_init_font(omap_video_t *vid, const char *font_path, unsigned font_size)
|
||||||
{
|
{
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!g_settings.video.font_enable)
|
if (!settings->video.font_enable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!(font_renderer_create_default(&vid->font_driver, &vid->font,
|
if (!(font_renderer_create_default(&vid->font_driver, &vid->font,
|
||||||
*g_settings.video.font_path ? g_settings.video.font_path : NULL, g_settings.video.font_size)))
|
*settings->video.font_path ? settings->video.font_path : NULL, settings->video.font_size)))
|
||||||
{
|
{
|
||||||
RARCH_LOG("video_omap: font init failed\n");
|
RARCH_LOG("video_omap: font init failed\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
r = g_settings.video.msg_color_r * 255;
|
r = settings->video.msg_color_r * 255;
|
||||||
g = g_settings.video.msg_color_g * 255;
|
g = settings->video.msg_color_g * 255;
|
||||||
b = g_settings.video.msg_color_b * 255;
|
b = settings->video.msg_color_b * 255;
|
||||||
|
|
||||||
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
||||||
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
||||||
@ -836,8 +839,9 @@ static void omap_init_font(omap_video_t *vid, const char *font_path, unsigned fo
|
|||||||
static void omap_render_msg(omap_video_t *vid, const char *msg)
|
static void omap_render_msg(omap_video_t *vid, const char *msg)
|
||||||
{
|
{
|
||||||
const struct font_atlas *atlas = NULL;
|
const struct font_atlas *atlas = NULL;
|
||||||
int msg_base_x = g_settings.video.msg_pos_x * vid->width;
|
settings_t *settings = config_get_ptr();
|
||||||
int msg_base_y = (1.0 - g_settings.video.msg_pos_y) * vid->height;
|
int msg_base_x = settings->video.msg_pos_x * vid->width;
|
||||||
|
int msg_base_y = (1.0 - settings->video.msg_pos_y) * vid->height;
|
||||||
|
|
||||||
if (!vid->font)
|
if (!vid->font)
|
||||||
return;
|
return;
|
||||||
@ -911,6 +915,7 @@ static void *omap_gfx_init(const video_info_t *video,
|
|||||||
const input_driver_t **input, void **input_data)
|
const input_driver_t **input, void **input_data)
|
||||||
{
|
{
|
||||||
omap_video_t *vid = NULL;
|
omap_video_t *vid = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
/* Don't support filters at the moment since they make estimations *
|
/* Don't support filters at the moment since they make estimations *
|
||||||
* on the maximum used resolution difficult. */
|
* on the maximum used resolution difficult. */
|
||||||
@ -948,7 +953,7 @@ static void *omap_gfx_init(const video_info_t *video,
|
|||||||
if (input && input_data)
|
if (input && input_data)
|
||||||
*input = NULL;
|
*input = NULL;
|
||||||
|
|
||||||
omap_init_font(vid, g_settings.video.font_path, g_settings.video.font_size);
|
omap_init_font(vid, settings->video.font_path, settings->video.font_size);
|
||||||
|
|
||||||
vid->menu.frame = calloc(vid->width * vid->height, vid->bytes_per_pixel);
|
vid->menu.frame = calloc(vid->width * vid->height, vid->bytes_per_pixel);
|
||||||
if (vid->menu.frame == NULL)
|
if (vid->menu.frame == NULL)
|
||||||
|
@ -470,7 +470,7 @@ static bool psp_frame(void *data, const void *frame,
|
|||||||
{
|
{
|
||||||
static char fps_txt[128], fps_text_buf[128];
|
static char fps_txt[128], fps_text_buf[128];
|
||||||
psp1_video_t *psp = (psp1_video_t*)data;
|
psp1_video_t *psp = (psp1_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
#ifdef DISPLAY_FPS
|
#ifdef DISPLAY_FPS
|
||||||
static uint64_t currentTick,lastTick;
|
static uint64_t currentTick,lastTick;
|
||||||
static float fps=0.0;
|
static float fps=0.0;
|
||||||
@ -493,10 +493,10 @@ static bool psp_frame(void *data, const void *frame,
|
|||||||
pspDebugScreenSetXY(0,0);
|
pspDebugScreenSetXY(0,0);
|
||||||
|
|
||||||
video_monitor_get_fps(fps_txt, sizeof(fps_txt),
|
video_monitor_get_fps(fps_txt, sizeof(fps_txt),
|
||||||
g_settings.fps_show ? fps_text_buf : NULL,
|
settings->fps_show ? fps_text_buf : NULL,
|
||||||
g_settings.fps_show ? sizeof(fps_text_buf) : 0);
|
settings->fps_show ? sizeof(fps_text_buf) : 0);
|
||||||
|
|
||||||
if(g_settings.fps_show)
|
if(settings->fps_show)
|
||||||
{
|
{
|
||||||
pspDebugScreenSetXY(68 - strlen(fps_text_buf) - 1,0);
|
pspDebugScreenSetXY(68 - strlen(fps_text_buf) - 1,0);
|
||||||
pspDebugScreenPuts(fps_text_buf);
|
pspDebugScreenPuts(fps_text_buf);
|
||||||
@ -692,13 +692,14 @@ static void psp_set_texture_enable(void *data, bool state, bool full_screen)
|
|||||||
|
|
||||||
static void psp_update_viewport(psp1_video_t* psp)
|
static void psp_update_viewport(psp1_video_t* psp)
|
||||||
{
|
{
|
||||||
|
int x = 0;
|
||||||
|
int y = 0;
|
||||||
float device_aspect = ((float)SCEGU_SCR_WIDTH) / SCEGU_SCR_HEIGHT;
|
float device_aspect = ((float)SCEGU_SCR_WIDTH) / SCEGU_SCR_HEIGHT;
|
||||||
float width = SCEGU_SCR_WIDTH;
|
float width = SCEGU_SCR_WIDTH;
|
||||||
float height = SCEGU_SCR_HEIGHT;
|
float height = SCEGU_SCR_HEIGHT;
|
||||||
int x = 0;
|
settings_t *settings = config_get_ptr();
|
||||||
int y = 0;
|
|
||||||
|
|
||||||
if (g_settings.video.scale_integer)
|
if (settings->video.scale_integer)
|
||||||
{
|
{
|
||||||
video_viewport_get_scaled_integer(&psp->vp, SCEGU_SCR_WIDTH,
|
video_viewport_get_scaled_integer(&psp->vp, SCEGU_SCR_WIDTH,
|
||||||
SCEGU_SCR_HEIGHT, g_extern.system.aspect_ratio, psp->keep_aspect);
|
SCEGU_SCR_HEIGHT, g_extern.system.aspect_ratio, psp->keep_aspect);
|
||||||
@ -711,7 +712,7 @@ static void psp_update_viewport(psp1_video_t* psp)
|
|||||||
float desired_aspect = g_extern.system.aspect_ratio;
|
float desired_aspect = g_extern.system.aspect_ratio;
|
||||||
|
|
||||||
#if defined(HAVE_MENU)
|
#if defined(HAVE_MENU)
|
||||||
if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
const struct video_viewport *custom =
|
const struct video_viewport *custom =
|
||||||
&g_extern.console.screen.viewports.custom_vp;
|
&g_extern.console.screen.viewports.custom_vp;
|
||||||
|
@ -99,8 +99,9 @@ static void sdl2_init_font(sdl2_video_t *vid, const char *font_path,
|
|||||||
SDL_Surface *tmp;
|
SDL_Surface *tmp;
|
||||||
SDL_Palette *pal = NULL;
|
SDL_Palette *pal = NULL;
|
||||||
const struct font_atlas *atlas = NULL;
|
const struct font_atlas *atlas = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!g_settings.video.font_enable)
|
if (!settings->video.font_enable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!font_renderer_create_default(&vid->font_driver, &vid->font_data,
|
if (!font_renderer_create_default(&vid->font_driver, &vid->font_data,
|
||||||
@ -110,9 +111,9 @@ static void sdl2_init_font(sdl2_video_t *vid, const char *font_path,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = g_settings.video.msg_color_r * 255;
|
r = settings->video.msg_color_r * 255;
|
||||||
g = g_settings.video.msg_color_g * 255;
|
g = settings->video.msg_color_g * 255;
|
||||||
b = g_settings.video.msg_color_b * 255;
|
b = settings->video.msg_color_b * 255;
|
||||||
|
|
||||||
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
||||||
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
||||||
@ -161,12 +162,13 @@ static void sdl2_render_msg(sdl2_video_t *vid, const char *msg)
|
|||||||
int x, y, delta_x, delta_y;
|
int x, y, delta_x, delta_y;
|
||||||
unsigned width = vid->vp.width;
|
unsigned width = vid->vp.width;
|
||||||
unsigned height = vid->vp.height;
|
unsigned height = vid->vp.height;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!vid->font_data)
|
if (!vid->font_data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
x = g_settings.video.msg_pos_x * width;
|
x = settings->video.msg_pos_x * width;
|
||||||
y = (1.0f - g_settings.video.msg_pos_y) * height;
|
y = (1.0f - settings->video.msg_pos_y) * height;
|
||||||
delta_x = 0;
|
delta_x = 0;
|
||||||
delta_y = 0;
|
delta_y = 0;
|
||||||
|
|
||||||
@ -263,6 +265,7 @@ static void sdl_refresh_renderer(sdl2_video_t *vid)
|
|||||||
static void sdl_refresh_viewport(sdl2_video_t *vid)
|
static void sdl_refresh_viewport(sdl2_video_t *vid)
|
||||||
{
|
{
|
||||||
int win_w, win_h;
|
int win_w, win_h;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
SDL_GetWindowSize(vid->window, &win_w, &win_h);
|
SDL_GetWindowSize(vid->window, &win_w, &win_h);
|
||||||
|
|
||||||
@ -273,10 +276,10 @@ static void sdl_refresh_viewport(sdl2_video_t *vid)
|
|||||||
vid->vp.full_width = win_w;
|
vid->vp.full_width = win_w;
|
||||||
vid->vp.full_height = win_h;
|
vid->vp.full_height = win_h;
|
||||||
|
|
||||||
if (g_settings.video.scale_integer)
|
if (settings->video.scale_integer)
|
||||||
video_viewport_get_scaled_integer(&vid->vp, win_w, win_h, g_extern.system.aspect_ratio,
|
video_viewport_get_scaled_integer(&vid->vp, win_w, win_h, g_extern.system.aspect_ratio,
|
||||||
vid->video.force_aspect);
|
vid->video.force_aspect);
|
||||||
else if (g_settings.video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
else if (settings->video.aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
|
||||||
{
|
{
|
||||||
const struct video_viewport *custom = &g_extern.console.screen.viewports.custom_vp;
|
const struct video_viewport *custom = &g_extern.console.screen.viewports.custom_vp;
|
||||||
|
|
||||||
@ -370,6 +373,8 @@ static void *sdl2_gfx_init(const video_info_t *video, const input_driver_t **inp
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
gfx_set_dwm();
|
gfx_set_dwm();
|
||||||
#endif
|
#endif
|
||||||
@ -417,9 +422,7 @@ static void *sdl2_gfx_init(const video_info_t *video, const input_driver_t **inp
|
|||||||
|
|
||||||
|
|
||||||
if (video->fullscreen)
|
if (video->fullscreen)
|
||||||
{
|
flags = settings->video.windowed_fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN;
|
||||||
flags = g_settings.video.windowed_fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : SDL_WINDOW_FULLSCREEN;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
flags = SDL_WINDOW_RESIZABLE;
|
flags = SDL_WINDOW_RESIZABLE;
|
||||||
|
|
||||||
@ -433,7 +436,7 @@ static void *sdl2_gfx_init(const video_info_t *video, const input_driver_t **inp
|
|||||||
}
|
}
|
||||||
|
|
||||||
vid->video = *video;
|
vid->video = *video;
|
||||||
vid->video.smooth = g_settings.video.smooth;
|
vid->video.smooth = settings->video.smooth;
|
||||||
vid->should_resize = true;
|
vid->should_resize = true;
|
||||||
|
|
||||||
sdl_tex_zero(&vid->frame);
|
sdl_tex_zero(&vid->frame);
|
||||||
@ -443,7 +446,7 @@ static void *sdl2_gfx_init(const video_info_t *video, const input_driver_t **inp
|
|||||||
SDL_ShowCursor(SDL_DISABLE);
|
SDL_ShowCursor(SDL_DISABLE);
|
||||||
|
|
||||||
sdl2_init_renderer(vid);
|
sdl2_init_renderer(vid);
|
||||||
sdl2_init_font(vid, g_settings.video.font_path, g_settings.video.font_size);
|
sdl2_init_font(vid, settings->video.font_path, settings->video.font_size);
|
||||||
|
|
||||||
sdl2_gfx_set_handles(vid);
|
sdl2_gfx_set_handles(vid);
|
||||||
|
|
||||||
|
@ -111,20 +111,22 @@ static void sdl_update_scaler(SDL_Surface *surf, struct scaler_ctx *scaler,
|
|||||||
static void sdl_init_font(sdl_video_t *vid, const char *font_path, unsigned font_size)
|
static void sdl_init_font(sdl_video_t *vid, const char *font_path, unsigned font_size)
|
||||||
{
|
{
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
if (!g_settings.video.font_enable)
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (!settings->video.font_enable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!font_renderer_create_default(&vid->font_driver, &vid->font,
|
if (!font_renderer_create_default(&vid->font_driver, &vid->font,
|
||||||
*g_settings.video.font_path ? g_settings.video.font_path : NULL,
|
*settings->video.font_path ? settings->video.font_path : NULL,
|
||||||
g_settings.video.font_size))
|
settings->video.font_size))
|
||||||
{
|
{
|
||||||
RARCH_LOG("[SDL]: Could not initialize fonts.\n");
|
RARCH_LOG("[SDL]: Could not initialize fonts.\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = g_settings.video.msg_color_r * 255;
|
r = settings->video.msg_color_r * 255;
|
||||||
g = g_settings.video.msg_color_g * 255;
|
g = settings->video.msg_color_g * 255;
|
||||||
b = g_settings.video.msg_color_b * 255;
|
b = settings->video.msg_color_b * 255;
|
||||||
|
|
||||||
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
r = (r < 0) ? 0 : (r > 255 ? 255 : r);
|
||||||
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
g = (g < 0) ? 0 : (g > 255 ? 255 : g);
|
||||||
@ -140,14 +142,16 @@ static void sdl_render_msg(sdl_video_t *vid, SDL_Surface *buffer,
|
|||||||
{
|
{
|
||||||
int x, y, msg_base_x, msg_base_y;
|
int x, y, msg_base_x, msg_base_y;
|
||||||
unsigned rshift, gshift, bshift;
|
unsigned rshift, gshift, bshift;
|
||||||
|
const struct font_atlas *atlas = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!vid->font)
|
if (!vid->font)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const struct font_atlas *atlas = vid->font_driver->get_atlas(vid->font);
|
atlas = vid->font_driver->get_atlas(vid->font);
|
||||||
|
|
||||||
msg_base_x = g_settings.video.msg_pos_x * width;
|
msg_base_x = settings->video.msg_pos_x * width;
|
||||||
msg_base_y = (1.0f - g_settings.video.msg_pos_y) * height;
|
msg_base_y = (1.0f - settings->video.msg_pos_y) * height;
|
||||||
|
|
||||||
rshift = fmt->Rshift;
|
rshift = fmt->Rshift;
|
||||||
gshift = fmt->Gshift;
|
gshift = fmt->Gshift;
|
||||||
@ -244,6 +248,8 @@ static void *sdl_gfx_init(const video_info_t *video, const input_driver_t **inpu
|
|||||||
{
|
{
|
||||||
unsigned full_x, full_y;
|
unsigned full_x, full_y;
|
||||||
sdl_video_t *vid = NULL;
|
sdl_video_t *vid = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
gfx_set_dwm();
|
gfx_set_dwm();
|
||||||
#endif
|
#endif
|
||||||
@ -307,7 +313,7 @@ static void *sdl_gfx_init(const video_info_t *video, const input_driver_t **inpu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sdl_init_font(vid, g_settings.video.font_path, g_settings.video.font_size);
|
sdl_init_font(vid, settings->video.font_path, settings->video.font_size);
|
||||||
|
|
||||||
vid->scaler.scaler_type = video->smooth ? SCALER_TYPE_BILINEAR : SCALER_TYPE_POINT;
|
vid->scaler.scaler_type = video->smooth ? SCALER_TYPE_BILINEAR : SCALER_TYPE_POINT;
|
||||||
vid->scaler.in_fmt = video->rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565;
|
vid->scaler.in_fmt = video->rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565;
|
||||||
|
@ -1323,8 +1323,9 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width,
|
|||||||
if (_dispvars->src_width != width || _dispvars->src_height != height)
|
if (_dispvars->src_width != width || _dispvars->src_height != height)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned inc_yoffset, xpos, visible_width;
|
|
||||||
float aspect;
|
float aspect;
|
||||||
|
unsigned inc_yoffset, xpos, visible_width;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
/* Sanity check on new dimensions */
|
/* Sanity check on new dimensions */
|
||||||
if (width == 0 || height == 0)
|
if (width == 0 || height == 0)
|
||||||
@ -1349,7 +1350,7 @@ static bool sunxi_gfx_frame(void *data, const void *frame, unsigned width,
|
|||||||
for (i = 0; i < _dispvars->numpages; i++)
|
for (i = 0; i < _dispvars->numpages; i++)
|
||||||
_dispvars->pages[i].yoffset = i * inc_yoffset;
|
_dispvars->pages[i].yoffset = i * inc_yoffset;
|
||||||
|
|
||||||
switch (g_settings.video.aspect_ratio_idx)
|
switch (settings->video.aspect_ratio_idx)
|
||||||
{
|
{
|
||||||
case ASPECT_RATIO_4_3:
|
case ASPECT_RATIO_4_3:
|
||||||
aspect = (float)4 / (float)3;
|
aspect = (float)4 / (float)3;
|
||||||
|
@ -84,11 +84,14 @@ static INLINE bool vg_query_extension(const char *ext)
|
|||||||
|
|
||||||
static void *vg_init(const video_info_t *video, const input_driver_t **input, void **input_data)
|
static void *vg_init(const video_info_t *video, const input_driver_t **input, void **input_data)
|
||||||
{
|
{
|
||||||
vg_t *vg = (vg_t*)calloc(1, sizeof(vg_t));
|
VGfloat clearColor[4] = {0, 0, 0, 1};
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
vg_t *vg = (vg_t*)calloc(1, sizeof(vg_t));
|
||||||
|
|
||||||
if (!vg)
|
if (!vg)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
vg->driver = gfx_ctx_init_first(vg, g_settings.video.context_driver,
|
vg->driver = gfx_ctx_init_first(vg, settings->video.context_driver,
|
||||||
GFX_CTX_OPENVG_API, 0, 0, false);
|
GFX_CTX_OPENVG_API, 0, 0, false);
|
||||||
|
|
||||||
if (!vg->driver)
|
if (!vg->driver)
|
||||||
@ -129,7 +132,6 @@ static void *vg_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
else
|
else
|
||||||
vg->mScreenAspect = (float)vg->mScreenWidth / vg->mScreenHeight;
|
vg->mScreenAspect = (float)vg->mScreenWidth / vg->mScreenHeight;
|
||||||
|
|
||||||
VGfloat clearColor[4] = {0, 0, 0, 1};
|
|
||||||
vgSetfv(VG_CLEAR_COLOR, 4, clearColor);
|
vgSetfv(VG_CLEAR_COLOR, 4, clearColor);
|
||||||
|
|
||||||
vg->mTextureWidth = vg->mTextureHeight = video->input_scale * RARCH_SCALE_BASE;
|
vg->mTextureWidth = vg->mTextureHeight = video->input_scale * RARCH_SCALE_BASE;
|
||||||
@ -139,8 +141,8 @@ static void *vg_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
|
|
||||||
vg->driver->input_driver(vg, input, input_data);
|
vg->driver->input_driver(vg, input, input_data);
|
||||||
|
|
||||||
if (g_settings.video.font_enable && font_renderer_create_default(&vg->font_driver, &vg->mFontRenderer,
|
if (settings->video.font_enable && font_renderer_create_default(&vg->font_driver, &vg->mFontRenderer,
|
||||||
*g_settings.video.font_path ? g_settings.video.font_path : NULL, g_settings.video.font_size))
|
*settings->video.font_path ? settings->video.font_path : NULL, settings->video.font_size))
|
||||||
{
|
{
|
||||||
vg->mFont = vgCreateFont(0);
|
vg->mFont = vgCreateFont(0);
|
||||||
|
|
||||||
@ -148,12 +150,12 @@ static void *vg_init(const video_info_t *video, const input_driver_t **input, vo
|
|||||||
{
|
{
|
||||||
vg->mFontsOn = true;
|
vg->mFontsOn = true;
|
||||||
|
|
||||||
vg->mFontHeight = g_settings.video.font_size;
|
vg->mFontHeight = settings->video.font_size;
|
||||||
|
|
||||||
vg->mPaintFg = vgCreatePaint();
|
vg->mPaintFg = vgCreatePaint();
|
||||||
vg->mPaintBg = vgCreatePaint();
|
vg->mPaintBg = vgCreatePaint();
|
||||||
VGfloat paintFg[] = { g_settings.video.msg_color_r, g_settings.video.msg_color_g, g_settings.video.msg_color_b, 1.0f };
|
VGfloat paintFg[] = { settings->video.msg_color_r, settings->video.msg_color_g, settings->video.msg_color_b, 1.0f };
|
||||||
VGfloat paintBg[] = { g_settings.video.msg_color_r / 2.0f, g_settings.video.msg_color_g / 2.0f, g_settings.video.msg_color_b / 2.0f, 0.5f };
|
VGfloat paintBg[] = { settings->video.msg_color_r / 2.0f, settings->video.msg_color_g / 2.0f, settings->video.msg_color_b / 2.0f, 0.5f };
|
||||||
|
|
||||||
vgSetParameteri(vg->mPaintFg, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR);
|
vgSetParameteri(vg->mPaintFg, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR);
|
||||||
vgSetParameterfv(vg->mPaintFg, VG_PAINT_COLOR, 4, paintFg);
|
vgSetParameterfv(vg->mPaintFg, VG_PAINT_COLOR, 4, paintFg);
|
||||||
@ -257,6 +259,8 @@ static void vg_render_message(vg_t *vg, const char *msg)
|
|||||||
|
|
||||||
static void vg_draw_message(vg_t *vg, const char *msg)
|
static void vg_draw_message(vg_t *vg, const char *msg)
|
||||||
{
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!vg->mLastMsg || strcmp(vg->mLastMsg, msg))
|
if (!vg->mLastMsg || strcmp(vg->mLastMsg, msg))
|
||||||
vg_render_message(vg, msg);
|
vg_render_message(vg, msg);
|
||||||
|
|
||||||
@ -264,8 +268,8 @@ static void vg_draw_message(vg_t *vg, const char *msg)
|
|||||||
vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_STENCIL);
|
vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_STENCIL);
|
||||||
|
|
||||||
VGfloat origins[] = {
|
VGfloat origins[] = {
|
||||||
vg->mScreenWidth * g_settings.video.msg_pos_x - 2.0f,
|
vg->mScreenWidth * settings->video.msg_pos_x - 2.0f,
|
||||||
vg->mScreenHeight * g_settings.video.msg_pos_y - 2.0f,
|
vg->mScreenHeight * settings->video.msg_pos_y - 2.0f,
|
||||||
};
|
};
|
||||||
|
|
||||||
vgSetfv(VG_GLYPH_ORIGIN, 2, origins);
|
vgSetfv(VG_GLYPH_ORIGIN, 2, origins);
|
||||||
|
@ -128,19 +128,21 @@ static void init_yuv_tables(xv_t *xv)
|
|||||||
|
|
||||||
static void xv_init_font(xv_t *xv, const char *font_path, unsigned font_size)
|
static void xv_init_font(xv_t *xv, const char *font_path, unsigned font_size)
|
||||||
{
|
{
|
||||||
if (!g_settings.video.font_enable)
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (!settings->video.font_enable)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (font_renderer_create_default(&xv->font_driver,
|
if (font_renderer_create_default(&xv->font_driver,
|
||||||
&xv->font, *g_settings.video.font_path
|
&xv->font, *settings->video.font_path
|
||||||
? g_settings.video.font_path : NULL, g_settings.video.font_size))
|
? settings->video.font_path : NULL, settings->video.font_size))
|
||||||
{
|
{
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
r = g_settings.video.msg_color_r * 255;
|
r = settings->video.msg_color_r * 255;
|
||||||
r = (r < 0 ? 0 : (r > 255 ? 255 : r));
|
r = (r < 0 ? 0 : (r > 255 ? 255 : r));
|
||||||
g = g_settings.video.msg_color_g * 255;
|
g = settings->video.msg_color_g * 255;
|
||||||
g = (g < 0 ? 0 : (g > 255 ? 255 : g));
|
g = (g < 0 ? 0 : (g > 255 ? 255 : g));
|
||||||
b = g_settings.video.msg_color_b * 255;
|
b = settings->video.msg_color_b * 255;
|
||||||
b = (b < 0 ? 0 : (b > 255 ? 255 : b));
|
b = (b < 0 ? 0 : (b > 255 ? 255 : b));
|
||||||
|
|
||||||
calculate_yuv(&xv->font_y, &xv->font_u, &xv->font_v,
|
calculate_yuv(&xv->font_y, &xv->font_u, &xv->font_v,
|
||||||
@ -354,13 +356,13 @@ static bool adaptor_set_format(xv_t *xv, Display *dpy,
|
|||||||
static void calc_out_rect(bool keep_aspect, struct video_viewport *vp,
|
static void calc_out_rect(bool keep_aspect, struct video_viewport *vp,
|
||||||
unsigned vp_width, unsigned vp_height)
|
unsigned vp_width, unsigned vp_height)
|
||||||
{
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
vp->full_width = vp_width;
|
vp->full_width = vp_width;
|
||||||
vp->full_height = vp_height;
|
vp->full_height = vp_height;
|
||||||
|
|
||||||
if (g_settings.video.scale_integer)
|
if (settings->video.scale_integer)
|
||||||
{
|
|
||||||
video_viewport_get_scaled_integer(vp, vp_width, vp_height, g_extern.system.aspect_ratio, keep_aspect);
|
video_viewport_get_scaled_integer(vp, vp_width, vp_height, g_extern.system.aspect_ratio, keep_aspect);
|
||||||
}
|
|
||||||
else if (!keep_aspect)
|
else if (!keep_aspect)
|
||||||
{
|
{
|
||||||
vp->x = 0; vp->y = 0;
|
vp->x = 0; vp->y = 0;
|
||||||
@ -415,8 +417,10 @@ static void *xv_init(const video_info_t *video,
|
|||||||
void *xinput = NULL;
|
void *xinput = NULL;
|
||||||
XVisualInfo *visualinfo = NULL;
|
XVisualInfo *visualinfo = NULL;
|
||||||
XVisualInfo visualtemplate = {0};
|
XVisualInfo visualtemplate = {0};
|
||||||
|
XvAdaptorInfo *adaptor_info = NULL;
|
||||||
const struct retro_game_geometry *geom = NULL;
|
const struct retro_game_geometry *geom = NULL;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
xv_t *xv = (xv_t*)calloc(1, sizeof(*xv));
|
xv_t *xv = (xv_t*)calloc(1, sizeof(*xv));
|
||||||
if (!xv)
|
if (!xv)
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -436,7 +440,6 @@ static void *xv_init(const video_info_t *video,
|
|||||||
|
|
||||||
/* Find an appropriate Xv port. */
|
/* Find an appropriate Xv port. */
|
||||||
xv->port = 0;
|
xv->port = 0;
|
||||||
XvAdaptorInfo *adaptor_info;
|
|
||||||
XvQueryAdaptors(xv->display,
|
XvQueryAdaptors(xv->display,
|
||||||
DefaultRootWindow(xv->display), &adaptor_count, &adaptor_info);
|
DefaultRootWindow(xv->display), &adaptor_count, &adaptor_info);
|
||||||
|
|
||||||
@ -473,7 +476,7 @@ static void *xv_init(const video_info_t *video,
|
|||||||
visualtemplate.screen = DefaultScreen(xv->display);
|
visualtemplate.screen = DefaultScreen(xv->display);
|
||||||
visualtemplate.depth = xv->depth;
|
visualtemplate.depth = xv->depth;
|
||||||
visualtemplate.visual = 0;
|
visualtemplate.visual = 0;
|
||||||
visualinfo = XGetVisualInfo(xv->display, VisualIDMask |
|
visualinfo = XGetVisualInfo(xv->display, VisualIDMask |
|
||||||
VisualScreenMask | VisualDepthMask, &visualtemplate, &visualmatches);
|
VisualScreenMask | VisualDepthMask, &visualtemplate, &visualmatches);
|
||||||
|
|
||||||
if (visualmatches < 1 || !visualinfo->visual)
|
if (visualmatches < 1 || !visualinfo->visual)
|
||||||
@ -576,7 +579,7 @@ static void *xv_init(const video_info_t *video,
|
|||||||
}
|
}
|
||||||
|
|
||||||
init_yuv_tables(xv);
|
init_yuv_tables(xv);
|
||||||
xv_init_font(xv, g_settings.video.font_path, g_settings.video.font_size);
|
xv_init_font(xv, settings->video.font_path, settings->video.font_size);
|
||||||
|
|
||||||
if (!x11_create_input_context(xv->display, xv->window, &xv->xim, &xv->xic))
|
if (!x11_create_input_context(xv->display, xv->window, &xv->xim, &xv->xic))
|
||||||
goto error;
|
goto error;
|
||||||
@ -644,22 +647,27 @@ static bool check_resize(xv_t *xv, unsigned width, unsigned height)
|
|||||||
static void xv_render_msg(xv_t *xv, const char *msg,
|
static void xv_render_msg(xv_t *xv, const char *msg,
|
||||||
unsigned width, unsigned height)
|
unsigned width, unsigned height)
|
||||||
{
|
{
|
||||||
|
int x, y, msg_base_x, msg_base_y;
|
||||||
|
unsigned i, luma_index[2], pitch;
|
||||||
|
unsigned chroma_u_index, chroma_v_index;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
const struct font_atlas *atlas = NULL;
|
||||||
|
|
||||||
if (!xv->font)
|
if (!xv->font)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int x, y;
|
atlas = xv->font_driver->get_atlas(xv->font);
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
const struct font_atlas *atlas = xv->font_driver->get_atlas(xv->font);
|
msg_base_x = settings->video.msg_pos_x * width;
|
||||||
|
msg_base_y = height * (1.0f - settings->video.msg_pos_y);
|
||||||
|
|
||||||
int msg_base_x = g_settings.video.msg_pos_x * width;
|
luma_index[0] = xv->luma_index[0];
|
||||||
int msg_base_y = height * (1.0f - g_settings.video.msg_pos_y);
|
luma_index[1] = xv->luma_index[1];
|
||||||
|
|
||||||
unsigned luma_index[2] = { xv->luma_index[0], xv->luma_index[1] };
|
chroma_u_index = xv->chroma_u_index;
|
||||||
unsigned chroma_u_index = xv->chroma_u_index;
|
chroma_v_index = xv->chroma_v_index;
|
||||||
unsigned chroma_v_index = xv->chroma_v_index;
|
|
||||||
|
|
||||||
unsigned pitch = width << 1; /* YUV formats used are 16 bpp. */
|
pitch = width << 1; /* YUV formats used are 16 bpp. */
|
||||||
|
|
||||||
for (; *msg; msg++)
|
for (; *msg; msg++)
|
||||||
{
|
{
|
||||||
|
@ -278,10 +278,11 @@ static void android_gfx_ctx_set_resize(void *data,
|
|||||||
static void android_gfx_ctx_update_window_title(void *data)
|
static void android_gfx_ctx_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -353,12 +353,13 @@ static void gfx_ctx_qnx_set_resize(void *data, unsigned width, unsigned height)
|
|||||||
static void gfx_ctx_qnx_update_window_title(void *data)
|
static void gfx_ctx_qnx_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,8 @@ static void d3d_resize(void *data, unsigned new_width, unsigned new_height)
|
|||||||
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
||||||
WPARAM wParam, LPARAM lParam)
|
WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
@ -101,7 +102,7 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
if (g_settings.ui.menubar_enable)
|
if (settings->ui.menubar_enable)
|
||||||
{
|
{
|
||||||
d3d_video_t *d3d = (d3d_video_t*)driver->video_data;
|
d3d_video_t *d3d = (d3d_video_t*)driver->video_data;
|
||||||
HWND d3dr = d3d->hWnd;
|
HWND d3dr = d3d->hWnd;
|
||||||
@ -126,8 +127,9 @@ static void gfx_ctx_d3d_swap_buffers(void *data)
|
|||||||
|
|
||||||
static void gfx_ctx_d3d_update_title(void *data)
|
static void gfx_ctx_d3d_update_title(void *data)
|
||||||
{
|
{
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
|
||||||
char buf[128], buffer_fps[128];
|
char buf[128], buffer_fps[128];
|
||||||
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (video_monitor_get_fps(buf, sizeof(buf),
|
if (video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buffer_fps, sizeof(buffer_fps)))
|
buffer_fps, sizeof(buffer_fps)))
|
||||||
@ -137,7 +139,7 @@ static void gfx_ctx_d3d_update_title(void *data)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
{
|
{
|
||||||
#ifdef _XBOX
|
#ifdef _XBOX
|
||||||
char mem[128];
|
char mem[128];
|
||||||
@ -165,20 +167,21 @@ static void gfx_ctx_d3d_show_mouse(void *data, bool state)
|
|||||||
|
|
||||||
void d3d_make_d3dpp(void *data, const video_info_t *info, D3DPRESENT_PARAMETERS *d3dpp)
|
void d3d_make_d3dpp(void *data, const video_info_t *info, D3DPRESENT_PARAMETERS *d3dpp)
|
||||||
{
|
{
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
d3d_video_t *d3d =(d3d_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
memset(d3dpp, 0, sizeof(*d3dpp));
|
memset(d3dpp, 0, sizeof(*d3dpp));
|
||||||
|
|
||||||
#ifdef _XBOX
|
#ifdef _XBOX
|
||||||
d3dpp->Windowed = false;
|
d3dpp->Windowed = false;
|
||||||
#else
|
#else
|
||||||
d3dpp->Windowed = g_settings.video.windowed_fullscreen || !info->fullscreen;
|
d3dpp->Windowed = settings->video.windowed_fullscreen || !info->fullscreen;
|
||||||
#endif
|
#endif
|
||||||
d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||||
|
|
||||||
if (info->vsync)
|
if (info->vsync)
|
||||||
{
|
{
|
||||||
switch (g_settings.video.swap_interval)
|
switch (settings->video.swap_interval)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -269,10 +269,11 @@ static void gfx_ctx_drm_egl_set_resize(void *data,
|
|||||||
static void gfx_ctx_drm_egl_update_window_title(void *data)
|
static void gfx_ctx_drm_egl_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push( buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push( buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,8 +392,9 @@ static bool gfx_ctx_drm_egl_init(void *data)
|
|||||||
int i;
|
int i;
|
||||||
unsigned monitor_index;
|
unsigned monitor_index;
|
||||||
unsigned gpu_index = 0;
|
unsigned gpu_index = 0;
|
||||||
unsigned monitor = max(g_settings.video.monitor_index, 1);
|
|
||||||
struct string_list *gpu_descriptors = NULL;
|
struct string_list *gpu_descriptors = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
unsigned monitor = max(settings->video.monitor_index, 1);
|
||||||
|
|
||||||
gfx_ctx_drm_egl_data_t *drm = (gfx_ctx_drm_egl_data_t*)calloc(1, sizeof(gfx_ctx_drm_egl_data_t));
|
gfx_ctx_drm_egl_data_t *drm = (gfx_ctx_drm_egl_data_t*)calloc(1, sizeof(gfx_ctx_drm_egl_data_t));
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
@ -694,7 +696,8 @@ static bool gfx_ctx_drm_egl_set_video_mode(void *data,
|
|||||||
int i, ret = 0;
|
int i, ret = 0;
|
||||||
struct sigaction sa = {{0}};
|
struct sigaction sa = {{0}};
|
||||||
struct drm_fb *fb = NULL;
|
struct drm_fb *fb = NULL;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_drm_egl_data_t *drm = (gfx_ctx_drm_egl_data_t*)
|
gfx_ctx_drm_egl_data_t *drm = (gfx_ctx_drm_egl_data_t*)
|
||||||
driver->video_context_data;
|
driver->video_context_data;
|
||||||
|
|
||||||
@ -729,7 +732,7 @@ static bool gfx_ctx_drm_egl_set_video_mode(void *data,
|
|||||||
|
|
||||||
/* If we use black frame insertion,
|
/* If we use black frame insertion,
|
||||||
* we fake a 60 Hz monitor for 120 Hz one, etc, so try to match that. */
|
* we fake a 60 Hz monitor for 120 Hz one, etc, so try to match that. */
|
||||||
refresh_mod = g_settings.video.black_frame_insertion ? 0.5f : 1.0f;
|
refresh_mod = settings->video.black_frame_insertion ? 0.5f : 1.0f;
|
||||||
|
|
||||||
/* Find desired video mode, and use that.
|
/* Find desired video mode, and use that.
|
||||||
* If not fullscreen, we get desired windowed size,
|
* If not fullscreen, we get desired windowed size,
|
||||||
@ -738,7 +741,7 @@ static bool gfx_ctx_drm_egl_set_video_mode(void *data,
|
|||||||
drm->g_drm_mode = &drm->g_connector->modes[0];
|
drm->g_drm_mode = &drm->g_connector->modes[0];
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Try to match g_settings.video.refresh_rate as closely as possible.
|
/* Try to match settings->video.refresh_rate as closely as possible.
|
||||||
* Lower resolutions tend to have multiple supported
|
* Lower resolutions tend to have multiple supported
|
||||||
* refresh rates as well.
|
* refresh rates as well.
|
||||||
*/
|
*/
|
||||||
@ -752,7 +755,7 @@ static bool gfx_ctx_drm_egl_set_video_mode(void *data,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
float diff = fabsf(refresh_mod *
|
float diff = fabsf(refresh_mod *
|
||||||
drm->g_connector->modes[i].vrefresh - g_settings.video.refresh_rate);
|
drm->g_connector->modes[i].vrefresh - settings->video.refresh_rate);
|
||||||
if (!drm->g_drm_mode || diff < minimum_fps_diff)
|
if (!drm->g_drm_mode || diff < minimum_fps_diff)
|
||||||
{
|
{
|
||||||
drm->g_drm_mode = &drm->g_connector->modes[i];
|
drm->g_drm_mode = &drm->g_connector->modes[i];
|
||||||
|
@ -87,12 +87,13 @@ static void gfx_ctx_emscripten_set_resize(void *data,
|
|||||||
static void gfx_ctx_emscripten_update_window_title(void *data)
|
static void gfx_ctx_emscripten_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,13 +207,14 @@ static void gfx_ctx_glx_set_resize(void *data,
|
|||||||
static void gfx_ctx_glx_update_window_title(void *data)
|
static void gfx_ctx_glx_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_glx_data_t *glx = (gfx_ctx_glx_data_t*)driver->video_context_data;
|
gfx_ctx_glx_data_t *glx = (gfx_ctx_glx_data_t*)driver->video_context_data;
|
||||||
|
|
||||||
if (video_monitor_get_fps(buf, sizeof(buf),
|
if (video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps)))
|
buf_fps, sizeof(buf_fps)))
|
||||||
XStoreName(glx->g_dpy, glx->g_win, buf);
|
XStoreName(glx->g_dpy, glx->g_win, buf);
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,6 +422,7 @@ static bool gfx_ctx_glx_set_video_mode(void *data,
|
|||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
gfx_ctx_glx_data_t *glx = (gfx_ctx_glx_data_t*)driver->video_context_data;
|
gfx_ctx_glx_data_t *glx = (gfx_ctx_glx_data_t*)driver->video_context_data;
|
||||||
struct sigaction sa = {{0}};
|
struct sigaction sa = {{0}};
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
sa.sa_handler = glx_sighandler;
|
sa.sa_handler = glx_sighandler;
|
||||||
sa.sa_flags = SA_RESTART;
|
sa.sa_flags = SA_RESTART;
|
||||||
@ -431,7 +433,7 @@ static bool gfx_ctx_glx_set_video_mode(void *data,
|
|||||||
if (!glx)
|
if (!glx)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
windowed_full = g_settings.video.windowed_fullscreen;
|
windowed_full = settings->video.windowed_fullscreen;
|
||||||
true_full = false;
|
true_full = false;
|
||||||
|
|
||||||
vi = glXGetVisualFromFBConfig(glx->g_dpy, glx->g_fbc);
|
vi = glXGetVisualFromFBConfig(glx->g_dpy, glx->g_fbc);
|
||||||
@ -455,8 +457,8 @@ static bool gfx_ctx_glx_set_video_mode(void *data,
|
|||||||
RARCH_ERR("[GLX]: Entering true fullscreen failed. Will attempt windowed mode.\n");
|
RARCH_ERR("[GLX]: Entering true fullscreen failed. Will attempt windowed mode.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings.video.monitor_index)
|
if (settings->video.monitor_index)
|
||||||
glx->g_screen = g_settings.video.monitor_index - 1;
|
glx->g_screen = settings->video.monitor_index - 1;
|
||||||
|
|
||||||
#ifdef HAVE_XINERAMA
|
#ifdef HAVE_XINERAMA
|
||||||
if (fullscreen || glx->g_screen != 0)
|
if (fullscreen || glx->g_screen != 0)
|
||||||
|
@ -199,12 +199,13 @@ static void gfx_ctx_mali_fbdev_set_resize(void *data,
|
|||||||
static void gfx_ctx_mali_fbdev_update_window_title(void *data)
|
static void gfx_ctx_mali_fbdev_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,12 +216,14 @@ static void gfx_ctx_ps3_set_resize(void *data,
|
|||||||
|
|
||||||
static void gfx_ctx_ps3_update_window_title(void *data)
|
static void gfx_ctx_ps3_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
(void)data;
|
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +173,8 @@ static bool sdl_ctx_set_video_mode(void *data, unsigned width, unsigned height,
|
|||||||
bool fullscreen)
|
bool fullscreen)
|
||||||
{
|
{
|
||||||
unsigned fsflag = 0;
|
unsigned fsflag = 0;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
@ -185,7 +186,7 @@ static bool sdl_ctx_set_video_mode(void *data, unsigned width, unsigned height,
|
|||||||
|
|
||||||
if (fullscreen)
|
if (fullscreen)
|
||||||
{
|
{
|
||||||
if (g_settings.video.windowed_fullscreen)
|
if (settings->video.windowed_fullscreen)
|
||||||
fsflag = SDL_WINDOW_FULLSCREEN_DESKTOP;
|
fsflag = SDL_WINDOW_FULLSCREEN_DESKTOP;
|
||||||
else
|
else
|
||||||
fsflag = SDL_WINDOW_FULLSCREEN;
|
fsflag = SDL_WINDOW_FULLSCREEN;
|
||||||
@ -200,7 +201,7 @@ static bool sdl_ctx_set_video_mode(void *data, unsigned width, unsigned height,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unsigned display = g_settings.video.monitor_index;
|
unsigned display = settings->video.monitor_index;
|
||||||
|
|
||||||
sdl->g_win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
|
sdl->g_win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
|
||||||
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
|
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
|
||||||
@ -242,7 +243,8 @@ error:
|
|||||||
static void sdl_ctx_get_video_size(void *data,
|
static void sdl_ctx_get_video_size(void *data,
|
||||||
unsigned *width, unsigned *height)
|
unsigned *width, unsigned *height)
|
||||||
{
|
{
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
||||||
|
|
||||||
if (!sdl)
|
if (!sdl)
|
||||||
@ -253,7 +255,7 @@ static void sdl_ctx_get_video_size(void *data,
|
|||||||
|
|
||||||
if (!sdl->g_win)
|
if (!sdl->g_win)
|
||||||
{
|
{
|
||||||
int i = g_settings.video.monitor_index;
|
int i = settings->video.monitor_index;
|
||||||
|
|
||||||
#ifdef HAVE_SDL2
|
#ifdef HAVE_SDL2
|
||||||
SDL_DisplayMode mode = {0};
|
SDL_DisplayMode mode = {0};
|
||||||
@ -280,7 +282,8 @@ static void sdl_ctx_get_video_size(void *data,
|
|||||||
static void sdl_ctx_update_window_title(void *data)
|
static void sdl_ctx_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
gfx_ctx_sdl_data_t *sdl = (gfx_ctx_sdl_data_t*)driver->video_context_data;
|
||||||
|
|
||||||
if (!sdl)
|
if (!sdl)
|
||||||
@ -295,7 +298,7 @@ static void sdl_ctx_update_window_title(void *data)
|
|||||||
SDL_WM_SetCaption(buf, NULL);
|
SDL_WM_SetCaption(buf, NULL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,39 +120,42 @@ static void gfx_ctx_vc_set_resize(void *data, unsigned width, unsigned height)
|
|||||||
static void gfx_ctx_vc_update_window_title(void *data)
|
static void gfx_ctx_vc_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
msg_queue_push(buf_fps, 1, 1, false);
|
msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gfx_ctx_vc_get_video_size(void *data,
|
static void gfx_ctx_vc_get_video_size(void *data,
|
||||||
unsigned *width, unsigned *height)
|
unsigned *width, unsigned *height)
|
||||||
{
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
||||||
if (g_settings.video.fullscreen_x != 0 &&
|
if (settings->video.fullscreen_x != 0 &&
|
||||||
g_settings.video.fullscreen_y != 0)
|
settings->video.fullscreen_y != 0)
|
||||||
{
|
{
|
||||||
// Keep input and output aspect ratio equal.
|
// Keep input and output aspect ratio equal.
|
||||||
// There are other aspect ratio settings which can be used to stretch video output.
|
// There are other aspect ratio settings which can be used to stretch video output.
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
// Calculate source and destination aspect ratios.
|
// Calculate source and destination aspect ratios.
|
||||||
float srcAspect = (float)g_settings.video.fullscreen_x / (float)g_settings.video.fullscreen_y;
|
float srcAspect = (float)settings->video.fullscreen_x / (float)settings->video.fullscreen_y;
|
||||||
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
||||||
// If source and destination aspect ratios are not equal correct source width.
|
// If source and destination aspect ratios are not equal correct source width.
|
||||||
if (srcAspect != dstAspect)
|
if (srcAspect != dstAspect)
|
||||||
{
|
{
|
||||||
*width = (unsigned)(g_settings.video.fullscreen_y * dstAspect);
|
*width = (unsigned)(settings->video.fullscreen_y * dstAspect);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*width = g_settings.video.fullscreen_x;
|
*width = settings->video.fullscreen_x;
|
||||||
}
|
}
|
||||||
*height = g_settings.video.fullscreen_y;
|
*height = settings->video.fullscreen_y;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -190,6 +193,7 @@ static bool gfx_ctx_vc_init(void *data)
|
|||||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||||
EGL_NONE
|
EGL_NONE
|
||||||
};
|
};
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
RARCH_LOG("[VC/EGL]: Initializing...\n");
|
RARCH_LOG("[VC/EGL]: Initializing...\n");
|
||||||
if (g_inited)
|
if (g_inited)
|
||||||
@ -243,25 +247,21 @@ static bool gfx_ctx_vc_init(void *data)
|
|||||||
src_rect.y = 0;
|
src_rect.y = 0;
|
||||||
|
|
||||||
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
||||||
if (g_settings.video.fullscreen_x != 0 &&
|
if (settings->video.fullscreen_x != 0 &&
|
||||||
g_settings.video.fullscreen_y != 0)
|
settings->video.fullscreen_y != 0)
|
||||||
{
|
{
|
||||||
// Keep input and output aspect ratio equal.
|
// Keep input and output aspect ratio equal.
|
||||||
// There are other aspect ratio settings which can be used to stretch video output.
|
// There are other aspect ratio settings which can be used to stretch video output.
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
// Calculate source and destination aspect ratios.
|
// Calculate source and destination aspect ratios.
|
||||||
float srcAspect = (float)g_settings.video.fullscreen_x / (float)g_settings.video.fullscreen_y;
|
float srcAspect = (float)settings->video.fullscreen_x / (float)settings->video.fullscreen_y;
|
||||||
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
||||||
// If source and destination aspect ratios are not equal correct source width.
|
// If source and destination aspect ratios are not equal correct source width.
|
||||||
if (srcAspect != dstAspect)
|
if (srcAspect != dstAspect)
|
||||||
{
|
src_rect.width = (unsigned)(settings->video.fullscreen_y * dstAspect) << 16;
|
||||||
src_rect.width = (unsigned)(g_settings.video.fullscreen_y * dstAspect) << 16;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
src_rect.width = settings->video.fullscreen_x << 16;
|
||||||
src_rect.width = g_settings.video.fullscreen_x << 16;
|
src_rect.height = settings->video.fullscreen_y << 16;
|
||||||
}
|
|
||||||
src_rect.height = g_settings.video.fullscreen_y << 16;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -284,25 +284,21 @@ static bool gfx_ctx_vc_init(void *data)
|
|||||||
|
|
||||||
nativewindow.element = dispman_element;
|
nativewindow.element = dispman_element;
|
||||||
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
// Use dispmanx upscaling if fullscreen_x and fullscreen_y are set.
|
||||||
if (g_settings.video.fullscreen_x != 0 &&
|
if (settings->video.fullscreen_x != 0 &&
|
||||||
g_settings.video.fullscreen_y != 0)
|
settings->video.fullscreen_y != 0)
|
||||||
{
|
{
|
||||||
// Keep input and output aspect ratio equal.
|
// Keep input and output aspect ratio equal.
|
||||||
// There are other aspect ratio settings which can be used to stretch video output.
|
// There are other aspect ratio settings which can be used to stretch video output.
|
||||||
// --------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------
|
||||||
// Calculate source and destination aspect ratios.
|
// Calculate source and destination aspect ratios.
|
||||||
float srcAspect = (float)g_settings.video.fullscreen_x / (float)g_settings.video.fullscreen_y;
|
float srcAspect = (float)settings->video.fullscreen_x / (float)settings->video.fullscreen_y;
|
||||||
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
float dstAspect = (float)g_fb_width / (float)g_fb_height;
|
||||||
// If source and destination aspect ratios are not equal correct source width.
|
// If source and destination aspect ratios are not equal correct source width.
|
||||||
if (srcAspect != dstAspect)
|
if (srcAspect != dstAspect)
|
||||||
{
|
nativewindow.width = (unsigned)(settings->video.fullscreen_y * dstAspect);
|
||||||
nativewindow.width = (unsigned)(g_settings.video.fullscreen_y * dstAspect);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
nativewindow.width = settings->video.fullscreen_x;
|
||||||
nativewindow.width = g_settings.video.fullscreen_x;
|
nativewindow.height = settings->video.fullscreen_y;
|
||||||
}
|
|
||||||
nativewindow.height = g_settings.video.fullscreen_y;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -188,12 +188,13 @@ static void gfx_ctx_vivante_set_resize(void *data,
|
|||||||
static void gfx_ctx_vivante_update_window_title(void *data)
|
static void gfx_ctx_vivante_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
video_monitor_get_fps(buf, sizeof(buf),
|
video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps));
|
buf_fps, sizeof(buf_fps));
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,7 +338,8 @@ static void gfx_ctx_wl_set_resize(void *data, unsigned width, unsigned height)
|
|||||||
static void gfx_ctx_wl_update_window_title(void *data)
|
static void gfx_ctx_wl_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)
|
gfx_ctx_wayland_data_t *wl = (gfx_ctx_wayland_data_t*)
|
||||||
driver->video_context_data;
|
driver->video_context_data;
|
||||||
|
|
||||||
@ -348,7 +349,7 @@ static void gfx_ctx_wl_update_window_title(void *data)
|
|||||||
buf_fps, sizeof(buf_fps)))
|
buf_fps, sizeof(buf_fps)))
|
||||||
wl_shell_surface_set_title(wl->g_shell_surf, buf);
|
wl_shell_surface_set_title(wl->g_shell_surf, buf);
|
||||||
|
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -234,6 +234,8 @@ static void *dinput_wgl;
|
|||||||
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
||||||
WPARAM wparam, LPARAM lparam)
|
WPARAM wparam, LPARAM lparam)
|
||||||
{
|
{
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
case WM_SYSCOMMAND:
|
case WM_SYSCOMMAND:
|
||||||
@ -278,7 +280,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
if (g_settings.ui.menubar_enable)
|
if (settings->ui.menubar_enable)
|
||||||
{
|
{
|
||||||
LRESULT ret = win32_menu_loop(g_hwnd, wparam);
|
LRESULT ret = win32_menu_loop(g_hwnd, wparam);
|
||||||
}
|
}
|
||||||
@ -347,13 +349,14 @@ static void gfx_ctx_wgl_set_resize(void *data,
|
|||||||
static void gfx_ctx_wgl_update_window_title(void *data)
|
static void gfx_ctx_wgl_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
if (video_monitor_get_fps(buf, sizeof(buf),
|
if (video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps)))
|
buf_fps, sizeof(buf_fps)))
|
||||||
SetWindowText(g_hwnd, buf);
|
SetWindowText(g_hwnd, buf);
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,12 +445,13 @@ static void show_cursor(bool show)
|
|||||||
static void monitor_info(MONITORINFOEX *mon, HMONITOR *hm_to_use)
|
static void monitor_info(MONITORINFOEX *mon, HMONITOR *hm_to_use)
|
||||||
{
|
{
|
||||||
unsigned fs_monitor;
|
unsigned fs_monitor;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!g_last_hm)
|
if (!g_last_hm)
|
||||||
g_last_hm = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
|
g_last_hm = MonitorFromWindow(GetDesktopWindow(), MONITOR_DEFAULTTONEAREST);
|
||||||
*hm_to_use = g_last_hm;
|
*hm_to_use = g_last_hm;
|
||||||
|
|
||||||
fs_monitor = g_settings.video.monitor_index;
|
fs_monitor = settings->video.monitor_index;
|
||||||
if (fs_monitor && fs_monitor <= g_num_mons && g_all_hms[fs_monitor - 1])
|
if (fs_monitor && fs_monitor <= g_num_mons && g_all_hms[fs_monitor - 1])
|
||||||
*hm_to_use = g_all_hms[fs_monitor - 1];
|
*hm_to_use = g_all_hms[fs_monitor - 1];
|
||||||
|
|
||||||
@ -467,15 +471,15 @@ static bool gfx_ctx_wgl_set_video_mode(void *data,
|
|||||||
bool windowed_full;
|
bool windowed_full;
|
||||||
RECT rect = {0};
|
RECT rect = {0};
|
||||||
HMONITOR hm_to_use = NULL;
|
HMONITOR hm_to_use = NULL;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
monitor_info(¤t_mon, &hm_to_use);
|
monitor_info(¤t_mon, &hm_to_use);
|
||||||
mon_rect = current_mon.rcMonitor;
|
|
||||||
|
|
||||||
|
mon_rect = current_mon.rcMonitor;
|
||||||
g_resize_width = width;
|
g_resize_width = width;
|
||||||
g_resize_height = height;
|
g_resize_height = height;
|
||||||
|
windowed_full = settings->video.windowed_fullscreen;
|
||||||
windowed_full = g_settings.video.windowed_fullscreen;
|
|
||||||
|
|
||||||
if (fullscreen)
|
if (fullscreen)
|
||||||
{
|
{
|
||||||
@ -519,7 +523,7 @@ static bool gfx_ctx_wgl_set_video_mode(void *data,
|
|||||||
|
|
||||||
if (!fullscreen || windowed_full)
|
if (!fullscreen || windowed_full)
|
||||||
{
|
{
|
||||||
if (!fullscreen && g_settings.ui.menubar_enable)
|
if (!fullscreen && settings->ui.menubar_enable)
|
||||||
{
|
{
|
||||||
RECT rc_temp = {0, 0, height, 0x7FFF};
|
RECT rc_temp = {0, 0, height, 0x7FFF};
|
||||||
SetMenu(g_hwnd, LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU)));
|
SetMenu(g_hwnd, LoadMenu(GetModuleHandle(NULL),MAKEINTRESOURCE(IDR_MENU)));
|
||||||
|
@ -66,10 +66,12 @@ static bool gfx_init_dwm(void)
|
|||||||
void gfx_set_dwm(void)
|
void gfx_set_dwm(void)
|
||||||
{
|
{
|
||||||
HRESULT ret;
|
HRESULT ret;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!gfx_init_dwm())
|
if (!gfx_init_dwm())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (g_settings.video.disable_composition == dwm_composition_disabled)
|
if (settings->video.disable_composition == dwm_composition_disabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HRESULT (WINAPI *composition_enable)(UINT) =
|
HRESULT (WINAPI *composition_enable)(UINT) =
|
||||||
@ -80,9 +82,9 @@ void gfx_set_dwm(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = composition_enable(!g_settings.video.disable_composition);
|
ret = composition_enable(!settings->video.disable_composition);
|
||||||
if (FAILED(ret))
|
if (FAILED(ret))
|
||||||
RARCH_ERR("Failed to set composition state ...\n");
|
RARCH_ERR("Failed to set composition state ...\n");
|
||||||
dwm_composition_disabled = g_settings.video.disable_composition;
|
dwm_composition_disabled = settings->video.disable_composition;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -145,6 +145,7 @@ static bool get_video_mode(Display *dpy, unsigned width, unsigned height,
|
|||||||
bool ret = false;
|
bool ret = false;
|
||||||
float minimum_fps_diff = 0.0f;
|
float minimum_fps_diff = 0.0f;
|
||||||
XF86VidModeModeInfo **modes = NULL;
|
XF86VidModeModeInfo **modes = NULL;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
XF86VidModeGetAllModeLines(dpy, DefaultScreen(dpy), &num_modes, &modes);
|
XF86VidModeGetAllModeLines(dpy, DefaultScreen(dpy), &num_modes, &modes);
|
||||||
|
|
||||||
@ -158,7 +159,7 @@ static bool get_video_mode(Display *dpy, unsigned width, unsigned height,
|
|||||||
|
|
||||||
/* If we use black frame insertion, we fake a 60 Hz monitor
|
/* If we use black frame insertion, we fake a 60 Hz monitor
|
||||||
* for 120 Hz one, etc, so try to match that. */
|
* for 120 Hz one, etc, so try to match that. */
|
||||||
refresh_mod = g_settings.video.black_frame_insertion ? 0.5f : 1.0f;
|
refresh_mod = settings->video.black_frame_insertion ? 0.5f : 1.0f;
|
||||||
|
|
||||||
for (i = 0; i < num_modes; i++)
|
for (i = 0; i < num_modes; i++)
|
||||||
{
|
{
|
||||||
@ -174,7 +175,7 @@ static bool get_video_mode(Display *dpy, unsigned width, unsigned height,
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
refresh = refresh_mod * m->dotclock * 1000.0f / (m->htotal * m->vtotal);
|
refresh = refresh_mod * m->dotclock * 1000.0f / (m->htotal * m->vtotal);
|
||||||
diff = fabsf(refresh - g_settings.video.refresh_rate);
|
diff = fabsf(refresh - settings->video.refresh_rate);
|
||||||
|
|
||||||
if (!ret || diff < minimum_fps_diff)
|
if (!ret || diff < minimum_fps_diff)
|
||||||
{
|
{
|
||||||
|
@ -222,13 +222,14 @@ static void gfx_ctx_xegl_set_resize(void *data,
|
|||||||
static void gfx_ctx_xegl_update_window_title(void *data)
|
static void gfx_ctx_xegl_update_window_title(void *data)
|
||||||
{
|
{
|
||||||
char buf[128], buf_fps[128];
|
char buf[128], buf_fps[128];
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
if (video_monitor_get_fps(buf, sizeof(buf),
|
if (video_monitor_get_fps(buf, sizeof(buf),
|
||||||
buf_fps, sizeof(buf_fps)))
|
buf_fps, sizeof(buf_fps)))
|
||||||
XStoreName(g_dpy, g_win, buf);
|
XStoreName(g_dpy, g_win, buf);
|
||||||
if (g_settings.fps_show)
|
if (settings->fps_show)
|
||||||
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
rarch_main_msg_queue_push(buf_fps, 1, 1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -454,7 +455,8 @@ static bool gfx_ctx_xegl_set_video_mode(void *data,
|
|||||||
XVisualInfo temp = {0};
|
XVisualInfo temp = {0};
|
||||||
XSetWindowAttributes swa = {0};
|
XSetWindowAttributes swa = {0};
|
||||||
XVisualInfo *vi = NULL;
|
XVisualInfo *vi = NULL;
|
||||||
driver_t *driver = driver_get_ptr();
|
driver_t *driver = driver_get_ptr();
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
sa.sa_handler = egl_sighandler;
|
sa.sa_handler = egl_sighandler;
|
||||||
sa.sa_flags = SA_RESTART;
|
sa.sa_flags = SA_RESTART;
|
||||||
@ -462,7 +464,7 @@ static bool gfx_ctx_xegl_set_video_mode(void *data,
|
|||||||
sigaction(SIGINT, &sa, NULL);
|
sigaction(SIGINT, &sa, NULL);
|
||||||
sigaction(SIGTERM, &sa, NULL);
|
sigaction(SIGTERM, &sa, NULL);
|
||||||
|
|
||||||
windowed_full = g_settings.video.windowed_fullscreen;
|
windowed_full = settings->video.windowed_fullscreen;
|
||||||
true_full = false;
|
true_full = false;
|
||||||
|
|
||||||
int (*old_handler)(Display*, XErrorEvent*) = NULL;
|
int (*old_handler)(Display*, XErrorEvent*) = NULL;
|
||||||
@ -495,8 +497,8 @@ static bool gfx_ctx_xegl_set_video_mode(void *data,
|
|||||||
RARCH_ERR("[X/EGL]: Entering true fullscreen failed. Will attempt windowed mode.\n");
|
RARCH_ERR("[X/EGL]: Entering true fullscreen failed. Will attempt windowed mode.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_settings.video.monitor_index)
|
if (settings->video.monitor_index)
|
||||||
g_screen = g_settings.video.monitor_index - 1;
|
g_screen = settings->video.monitor_index - 1;
|
||||||
|
|
||||||
#ifdef HAVE_XINERAMA
|
#ifdef HAVE_XINERAMA
|
||||||
if (fullscreen || g_screen != 0)
|
if (fullscreen || g_screen != 0)
|
||||||
|
@ -25,6 +25,7 @@ static bool d3dfonts_w32_init_font(void *data,
|
|||||||
{
|
{
|
||||||
uint32_t r, g, b;
|
uint32_t r, g, b;
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
D3DXFONT_DESC desc = {
|
D3DXFONT_DESC desc = {
|
||||||
static_cast<int>(font_size), 0, 400, 0,
|
static_cast<int>(font_size), 0, 400, 0,
|
||||||
false, DEFAULT_CHARSET,
|
false, DEFAULT_CHARSET,
|
||||||
@ -36,9 +37,9 @@ static bool d3dfonts_w32_init_font(void *data,
|
|||||||
|
|
||||||
(void)font_path;
|
(void)font_path;
|
||||||
|
|
||||||
r = static_cast<uint32_t>(g_settings.video.msg_color_r * 255) & 0xff;
|
r = static_cast<uint32_t>(settings->video.msg_color_r * 255) & 0xff;
|
||||||
g = static_cast<uint32_t>(g_settings.video.msg_color_g * 255) & 0xff;
|
g = static_cast<uint32_t>(settings->video.msg_color_g * 255) & 0xff;
|
||||||
b = static_cast<uint32_t>(g_settings.video.msg_color_b * 255) & 0xff;
|
b = static_cast<uint32_t>(settings->video.msg_color_b * 255) & 0xff;
|
||||||
|
|
||||||
d3d->font_color = D3DCOLOR_XRGB(r, g, b);
|
d3d->font_color = D3DCOLOR_XRGB(r, g, b);
|
||||||
|
|
||||||
|
@ -248,6 +248,7 @@ static void gl_raster_font_render_msg(void *data, const char *msg,
|
|||||||
bool align_right;
|
bool align_right;
|
||||||
gl_t *gl = NULL;
|
gl_t *gl = NULL;
|
||||||
gl_raster_t *font = (gl_raster_t*)data;
|
gl_raster_t *font = (gl_raster_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (!font)
|
if (!font)
|
||||||
return;
|
return;
|
||||||
@ -256,19 +257,19 @@ static void gl_raster_font_render_msg(void *data, const char *msg,
|
|||||||
|
|
||||||
if (params)
|
if (params)
|
||||||
{
|
{
|
||||||
x = params->x;
|
x = params->x;
|
||||||
y = params->y;
|
y = params->y;
|
||||||
scale = params->scale;
|
scale = params->scale;
|
||||||
full_screen = params->full_screen;
|
full_screen = params->full_screen;
|
||||||
align_right = params->align_right;
|
align_right = params->align_right;
|
||||||
drop_x = params->drop_x;
|
drop_x = params->drop_x;
|
||||||
drop_y = params->drop_y;
|
drop_y = params->drop_y;
|
||||||
drop_mod = params->drop_mod;
|
drop_mod = params->drop_mod;
|
||||||
|
|
||||||
color[0] = FONT_COLOR_GET_RED(params->color) / 255.0f;
|
color[0] = FONT_COLOR_GET_RED(params->color) / 255.0f;
|
||||||
color[1] = FONT_COLOR_GET_GREEN(params->color) / 255.0f;
|
color[1] = FONT_COLOR_GET_GREEN(params->color) / 255.0f;
|
||||||
color[2] = FONT_COLOR_GET_BLUE(params->color) / 255.0f;
|
color[2] = FONT_COLOR_GET_BLUE(params->color) / 255.0f;
|
||||||
color[3] = FONT_COLOR_GET_ALPHA(params->color) / 255.0f;
|
color[3] = FONT_COLOR_GET_ALPHA(params->color) / 255.0f;
|
||||||
|
|
||||||
/* If alpha is 0.0f, turn it into default 1.0f */
|
/* If alpha is 0.0f, turn it into default 1.0f */
|
||||||
if (color[3] <= 0.0f)
|
if (color[3] <= 0.0f)
|
||||||
@ -276,15 +277,15 @@ static void gl_raster_font_render_msg(void *data, const char *msg,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = g_settings.video.msg_pos_x;
|
x = settings->video.msg_pos_x;
|
||||||
y = g_settings.video.msg_pos_y;
|
y = settings->video.msg_pos_y;
|
||||||
scale = 1.0f;
|
scale = 1.0f;
|
||||||
full_screen = false;
|
full_screen = false;
|
||||||
align_right = false;
|
align_right = false;
|
||||||
|
|
||||||
color[0] = g_settings.video.msg_color_r;
|
color[0] = settings->video.msg_color_r;
|
||||||
color[1] = g_settings.video.msg_color_g;
|
color[1] = settings->video.msg_color_g;
|
||||||
color[2] = g_settings.video.msg_color_b;
|
color[2] = settings->video.msg_color_b;
|
||||||
color[3] = 1.0f;
|
color[3] = 1.0f;
|
||||||
|
|
||||||
drop_x = -2;
|
drop_x = -2;
|
||||||
|
@ -65,20 +65,21 @@ static void libdbg_font_render_msg(void *data, const char *msg,
|
|||||||
{
|
{
|
||||||
float x, y, scale;
|
float x, y, scale;
|
||||||
unsigned color;
|
unsigned color;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
if (params)
|
if (params)
|
||||||
{
|
{
|
||||||
x = params->x;
|
x = params->x;
|
||||||
y = params->y;
|
y = params->y;
|
||||||
scale = params->scale;
|
scale = params->scale;
|
||||||
color = params->color;
|
color = params->color;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = g_settings.video.msg_pos_x;
|
x = settings->video.msg_pos_x;
|
||||||
y = 0.90f;
|
y = 0.90f;
|
||||||
scale = 1.04f;
|
scale = 1.04f;
|
||||||
color = SILVER;
|
color = SILVER;
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,10 @@ static void xfonts_deinit_font(void *data)
|
|||||||
static void xfonts_render_msg(void *data, const char *msg,
|
static void xfonts_render_msg(void *data, const char *msg,
|
||||||
const struct font_params *params)
|
const struct font_params *params)
|
||||||
{
|
{
|
||||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
|
||||||
wchar_t str[PATH_MAX_LENGTH];
|
wchar_t str[PATH_MAX_LENGTH];
|
||||||
float x, y;
|
float x, y;
|
||||||
|
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
if (params)
|
if (params)
|
||||||
{
|
{
|
||||||
@ -56,8 +57,8 @@ static void xfonts_render_msg(void *data, const char *msg,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = g_settings.video.msg_pos_x;
|
x = settings->video.msg_pos_x;
|
||||||
y = g_settings.video.msg_pos_y;
|
y = settings->video.msg_pos_y;
|
||||||
}
|
}
|
||||||
|
|
||||||
d3d->dev->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &pFrontBuffer);
|
d3d->dev->GetBackBuffer(-1, D3DBACKBUFFER_TYPE_MONO, &pFrontBuffer);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user