summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/render.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/render.c')
-rw-r--r--src/emu/render.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/emu/render.c b/src/emu/render.c
index 186bd59f2d6..03c90811bbc 100644
--- a/src/emu/render.c
+++ b/src/emu/render.c
@@ -470,6 +470,7 @@ INLINE void free_render_ref(render_ref *ref)
void render_init(running_machine *machine)
{
+ int numscreens = video_screen_count(machine->config);
int scrnum;
/* make sure we clean up after ourselves */
@@ -490,15 +491,14 @@ void render_init(running_machine *machine)
ui_container = render_container_alloc();
/* create a container for each screen and determine its orientation */
- for (scrnum = 0; scrnum < MAX_SCREENS; scrnum++)
- if (Machine->config->screen[scrnum].tag != NULL)
- {
- screen_container[scrnum] = render_container_alloc();
- render_container_set_orientation(screen_container[scrnum], Machine->gamedrv->flags & ORIENTATION_MASK);
- render_container_set_brightness(screen_container[scrnum], options_get_float(mame_options(), OPTION_BRIGHTNESS));
- render_container_set_contrast(screen_container[scrnum], options_get_float(mame_options(), OPTION_CONTRAST));
- render_container_set_gamma(screen_container[scrnum], options_get_float(mame_options(), OPTION_GAMMA));
- }
+ for (scrnum = 0; scrnum < numscreens; scrnum++)
+ {
+ screen_container[scrnum] = render_container_alloc();
+ render_container_set_orientation(screen_container[scrnum], Machine->gamedrv->flags & ORIENTATION_MASK);
+ render_container_set_brightness(screen_container[scrnum], options_get_float(mame_options(), OPTION_BRIGHTNESS));
+ render_container_set_contrast(screen_container[scrnum], options_get_float(mame_options(), OPTION_CONTRAST));
+ render_container_set_gamma(screen_container[scrnum], options_get_float(mame_options(), OPTION_GAMMA));
+ }
/* register callbacks */
config_register("video", render_load, render_save);
@@ -1366,19 +1366,20 @@ void render_target_get_minimum_size(render_target *target, INT32 *minwidth, INT3
for (item = target->curview->itemlist[layer]; item != NULL; item = item->next)
if (item->element == NULL)
{
+ const screen_config *scrconfig = device_list_find_by_index(Machine->config->devicelist, VIDEO_SCREEN, item->index)->inline_config;
const rectangle vectorvis = { 0, 639, 0, 479 };
- const rectangle *visarea;
+ const rectangle *visarea = NULL;
render_container *container = screen_container[item->index];
render_bounds bounds;
float xscale, yscale;
/* we may be called very early, before Machine->visible_area is initialized; handle that case */
- if ((Machine->config->video_attributes & VIDEO_TYPE_VECTOR) != 0)
+ if (scrconfig->type == SCREEN_TYPE_VECTOR)
visarea = &vectorvis;
else if (Machine->screen[item->index].visarea.max_x > Machine->screen[item->index].visarea.min_x)
visarea = &Machine->screen[item->index].visarea;
else
- visarea = &Machine->config->screen[item->index].defstate.visarea;
+ visarea = &scrconfig->defstate.visarea;
/* apply target orientation to the bounds */
bounds = item->bounds;
@@ -1619,7 +1620,7 @@ static int load_layout_files(render_target *target, const char *layoutfile, int
}
/* now do the built-in layouts for single-screen games */
- if (Machine->config->screen[0].tag != NULL && Machine->config->screen[1].tag == NULL)
+ if (video_screen_count(Machine->config) == 1)
{
if (Machine->gamedrv->flags & ORIENTATION_SWAP_XY)
*nextfile = layout_file_load(NULL, layout_vertical);