static void video_exit(void) { int i; /* stop recording any movie */ record_movie_stop(); /* free all the graphics elements */ for (i = 0; i < MAX_GFX_ELEMENTS; i++) { freegfx(Machine->gfx[i]); Machine->gfx[i] = 0; } #if defined(MAME_DEBUG) && !defined(NEW_DEBUGGER) /* free the font elements */ if (Machine->debugger_font) { freegfx(Machine->debugger_font); Machine->debugger_font = NULL; } #endif /* close down the OSD layer's display */ osd_close_display(); }
static void vh_close(void) { int i; for (i = 0;i < MAX_GFX_ELEMENTS;i++) { freegfx(Machine->gfx[i]); Machine->gfx[i] = 0; } freegfx(Machine->uifont); Machine->uifont = 0; osd_close_display(); if (Machine->scrbitmap) { bitmap_free(Machine->scrbitmap); Machine->scrbitmap = NULL; } palette_stop(); if (drv->video_attributes & VIDEO_BUFFERS_SPRITERAM) { if (buffered_spriteram) free(buffered_spriteram); if (buffered_spriteram_2) free(buffered_spriteram_2); buffered_spriteram=NULL; buffered_spriteram_2=NULL; } }
void vh_close(void) { int i; for (i = 0;i < MAX_GFX_ELEMENTS;i++) freegfx(Machine->gfx[i]); osd_close_display(); }
/* set the actual display screen but don't allocate the screen bitmap */ int osd_set_display(int width,int height,int depth,int attributes,int orientation) { int i; if (!gfx_height || !gfx_width) { printf("Please specify height AND width (e.g. -640x480)\n"); return 0; } /* Mark the dirty buffers as dirty */ if (use_dirty) { if (vector_game) /* vector games only use one dirty buffer */ init_dirty (0); else init_dirty(1); swap_dirty(); init_dirty(1); } if (dirtycolor) { for (i = 0;i < screen_colors;i++) dirtycolor[i] = 1; dirtypalette = 1; } /* Set video mode */ wiz_set_video_mode(depth,gfx_width,gfx_height); vsync_frame_rate = video_fps; if (video_sync) { TICKER a,b; float rate; /* wait some time to let everything stabilize */ for (i = 0;i < 60;i++) { vsync(); a = ticker(); } /* small delay for really really fast machines */ for (i = 0;i < 100000;i++) ; vsync(); b = ticker(); rate = ((float)TICKS_PER_SEC)/(b-a); logerror("target frame rate = %ffps, video frame rate = %3.2fHz\n",video_fps,rate); /* don't allow more than 8% difference between target and actual frame rate */ while (rate > video_fps * 108 / 100) rate /= 2; if (rate < video_fps * 92 / 100) { osd_close_display(); logerror("-vsync option cannot be used with this display mode:\n" "video refresh frequency = %dHz, target frame rate = %ffps\n", (int)(TICKS_PER_SEC/(b-a)),video_fps); return 0; } logerror("adjusted video frame rate = %3.2fHz\n",rate); vsync_frame_rate = rate; if (Machine->sample_rate) { Machine->sample_rate = Machine->sample_rate * video_fps / rate; logerror("sample rate adjusted to match video freq: %d\n",Machine->sample_rate); } } return 1; }