mirror of
https://github.com/holub/mame
synced 2025-05-30 17:41:47 +03:00
Fix fullscreen toggle for the accel driver os OSX. [Couriersud]
This commit is contained in:
parent
de6b090917
commit
081cae6919
@ -136,14 +136,31 @@ private:
|
||||
// TEXCOPY FUNCS
|
||||
//============================================================
|
||||
|
||||
enum SDL_TEXFORMAT_E
|
||||
{
|
||||
SDL_TEXFORMAT_ARGB32 = 0,
|
||||
SDL_TEXFORMAT_RGB32,
|
||||
SDL_TEXFORMAT_RGB32_PALETTED,
|
||||
SDL_TEXFORMAT_YUY16,
|
||||
SDL_TEXFORMAT_YUY16_PALETTED,
|
||||
SDL_TEXFORMAT_PALETTE16,
|
||||
SDL_TEXFORMAT_RGB15,
|
||||
SDL_TEXFORMAT_RGB15_PALETTED,
|
||||
SDL_TEXFORMAT_PALETTE16A,
|
||||
SDL_TEXFORMAT_PALETTE16_ARGB1555,
|
||||
SDL_TEXFORMAT_RGB15_ARGB1555,
|
||||
SDL_TEXFORMAT_RGB15_PALETTED_ARGB1555,
|
||||
SDL_TEXFORMAT_LAST = SDL_TEXFORMAT_RGB15_PALETTED_ARGB1555
|
||||
};
|
||||
|
||||
#include "blit13.h"
|
||||
|
||||
/* sdl_info is the information about SDL for the current screen */
|
||||
class sdl_info13 : public osd_renderer
|
||||
{
|
||||
public:
|
||||
sdl_info13(osd_window *w)
|
||||
: osd_renderer(w, FLAG_NONE), m_sdl_renderer(NULL), m_blittimer(0),
|
||||
sdl_info13(osd_window *w, int extra_flags)
|
||||
: osd_renderer(w, extra_flags), m_sdl_renderer(NULL), m_blittimer(0),
|
||||
m_last_hofs(0), m_last_vofs(0),
|
||||
m_width(0), m_height(0),
|
||||
m_blit_dim(0,0),
|
||||
@ -242,7 +259,6 @@ static void drawsdl2_exit(void);
|
||||
// STATIC VARIABLES
|
||||
//============================================================
|
||||
|
||||
#define SDL_TEXFORMAT_LAST SDL_TEXFORMAT_PALETTE16A
|
||||
#define BM_ALL (-1)
|
||||
//( SDL_BLENDMODE_MASK | SDL_BLENDMODE_BLEND | SDL_BLENDMODE_ADD | SDL_BLENDMODE_MOD)
|
||||
|
||||
@ -329,7 +345,8 @@ static copy_info_t blit_info_default[] =
|
||||
{ -1 },
|
||||
};
|
||||
|
||||
static copy_info_t *blit_info[SDL_TEXFORMAT_LAST+1];
|
||||
static copy_info_t *blit_info[SDL_TEXFORMAT_LAST+1] = { NULL };
|
||||
static bool blit_info_initialized = false;
|
||||
|
||||
//============================================================
|
||||
// INLINES
|
||||
@ -512,27 +529,33 @@ static void expand_copy_info(copy_info_t *list)
|
||||
|
||||
static osd_renderer *drawsdl2_create(osd_window *window)
|
||||
{
|
||||
return global_alloc(sdl_info13(window));
|
||||
if (!blit_info_initialized)
|
||||
{
|
||||
/* On OSX, calling this from drawsdl2_init will
|
||||
* prohibit fullscreen toggling. It is than not possible
|
||||
* to toggle from fullscreen to window mode.
|
||||
*/
|
||||
expand_copy_info(blit_info_default);
|
||||
blit_info_initialized = true;
|
||||
|
||||
}
|
||||
return global_alloc(sdl_info13(window, osd_renderer::FLAG_NONE));
|
||||
}
|
||||
|
||||
// FIXME: machine only used to access options.
|
||||
int drawsdl2_init(running_machine &machine, osd_draw_callbacks *callbacks)
|
||||
{
|
||||
const char *stemp;
|
||||
|
||||
// fill in the callbacks
|
||||
callbacks->exit = drawsdl2_exit;
|
||||
callbacks->create = drawsdl2_create;
|
||||
|
||||
osd_printf_verbose("Using SDL native texturing driver (SDL 2.0+)\n");
|
||||
|
||||
expand_copy_info(blit_info_default);
|
||||
|
||||
#if USE_OPENGL
|
||||
// Load the GL library now - else MT will fail
|
||||
stemp = downcast<sdl_options &>(machine.options()).gl_lib();
|
||||
const char *stemp = downcast<sdl_options &>(machine.options()).gl_lib();
|
||||
#else
|
||||
stemp = NULL;
|
||||
const char *stemp = NULL;
|
||||
#endif
|
||||
if (stemp != NULL && strcmp(stemp, OSDOPTVAL_AUTO) == 0)
|
||||
stemp = NULL;
|
||||
@ -555,19 +578,23 @@ static void drawsdl2_exit(void)
|
||||
{
|
||||
int i;
|
||||
copy_info_t *bi, *freeme;
|
||||
for (i = 0; i <= SDL_TEXFORMAT_LAST; i++)
|
||||
if (blit_info_initialized)
|
||||
{
|
||||
for (bi = blit_info[i]; bi != NULL; )
|
||||
for (i = 0; i <= SDL_TEXFORMAT_LAST; i++)
|
||||
{
|
||||
if (bi->pixel_count)
|
||||
osd_printf_verbose("%s -> %s %s blendmode 0x%02x, %d samples: %d KPixel/sec\n", bi->srcname, bi->dstname,
|
||||
bi->blitter->m_is_rot ? "rot" : "norot", bi->bm_mask, bi->samples,
|
||||
(int) bi->perf);
|
||||
freeme = bi;
|
||||
bi = bi->next;
|
||||
global_free(freeme);
|
||||
for (bi = blit_info[i]; bi != NULL; )
|
||||
{
|
||||
if (bi->pixel_count)
|
||||
osd_printf_verbose("%s -> %s %s blendmode 0x%02x, %d samples: %d KPixel/sec\n", bi->srcname, bi->dstname,
|
||||
bi->blitter->m_is_rot ? "rot" : "norot", bi->bm_mask, bi->samples,
|
||||
(int) bi->perf);
|
||||
freeme = bi;
|
||||
bi = bi->next;
|
||||
global_free(freeme);
|
||||
}
|
||||
blit_info[i] = NULL;
|
||||
}
|
||||
blit_info[i] = NULL;
|
||||
blit_info_initialized = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -601,6 +628,36 @@ static void drawsdl2_exit(void)
|
||||
// a
|
||||
//============================================================
|
||||
|
||||
static void drawsdl_show_info(struct SDL_RendererInfo *render_info)
|
||||
{
|
||||
#define RF_ENTRY(x) {x, #x }
|
||||
static struct {
|
||||
int flag;
|
||||
const char *name;
|
||||
} rflist[] =
|
||||
{
|
||||
#if 0
|
||||
RF_ENTRY(SDL_RENDERER_SINGLEBUFFER),
|
||||
RF_ENTRY(SDL_RENDERER_PRESENTCOPY),
|
||||
RF_ENTRY(SDL_RENDERER_PRESENTFLIP2),
|
||||
RF_ENTRY(SDL_RENDERER_PRESENTFLIP3),
|
||||
RF_ENTRY(SDL_RENDERER_PRESENTDISCARD),
|
||||
#endif
|
||||
RF_ENTRY(SDL_RENDERER_SOFTWARE),
|
||||
RF_ENTRY(SDL_RENDERER_PRESENTVSYNC),
|
||||
RF_ENTRY(SDL_RENDERER_ACCELERATED),
|
||||
RF_ENTRY(SDL_RENDERER_TARGETTEXTURE),
|
||||
{-1, NULL}
|
||||
};
|
||||
int i;
|
||||
|
||||
osd_printf_verbose("window: using renderer %s\n", render_info->name ? render_info->name : "<unknown>");
|
||||
for (i = 0; rflist[i].name != NULL; i++)
|
||||
if (render_info->flags & rflist[i].flag)
|
||||
osd_printf_verbose("renderer: flag %s\n", rflist[i].name);
|
||||
}
|
||||
|
||||
|
||||
int sdl_info13::create()
|
||||
{
|
||||
#if (SDLMAME_SDL2)
|
||||
@ -633,9 +690,14 @@ int sdl_info13::create()
|
||||
|
||||
m_blittimer = 3;
|
||||
|
||||
SDL_RenderPresent(m_sdl_renderer);
|
||||
//SDL_RenderPresent(m_sdl_renderer);
|
||||
osd_printf_verbose("Leave sdl_info13::create\n");
|
||||
|
||||
struct SDL_RendererInfo render_info;
|
||||
|
||||
SDL_GetRendererInfo(m_sdl_renderer, &render_info);
|
||||
drawsdl_show_info(&render_info);
|
||||
|
||||
#else
|
||||
|
||||
#endif
|
||||
@ -651,6 +713,7 @@ void sdl_info13::destroy()
|
||||
{
|
||||
destroy_all_textures();
|
||||
SDL_DestroyRenderer(m_sdl_renderer);
|
||||
m_sdl_renderer = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -1108,7 +1171,6 @@ texture_info * sdl_info13::texture_update(const render_primitive &prim)
|
||||
texture = global_alloc(texture_info(this, prim.texture, setup, prim.flags));
|
||||
/* add us to the texture list */
|
||||
m_texlist.prepend(*texture);
|
||||
|
||||
}
|
||||
|
||||
if (texture != NULL)
|
||||
|
@ -166,7 +166,6 @@ enum
|
||||
// MACROS
|
||||
//============================================================
|
||||
|
||||
#ifdef OSD_WINDOWS
|
||||
// texture formats
|
||||
// This used to be an enum, but these are now defines so we can use them as
|
||||
// preprocessor conditionals
|
||||
@ -179,6 +178,7 @@ enum
|
||||
#define SDL_TEXFORMAT_RGB15 (6)
|
||||
#define SDL_TEXFORMAT_RGB15_PALETTED (7)
|
||||
#define SDL_TEXFORMAT_PALETTE16A (8)
|
||||
#if 0
|
||||
// special texture formats for 16bpp texture destination support, do not use
|
||||
// to address the tex properties / tex functions arrays!
|
||||
#define SDL_TEXFORMAT_PALETTE16_ARGB1555 (16)
|
||||
|
@ -508,6 +508,7 @@ void sdl_info::destroy()
|
||||
global_free_array(m_yuv_bitmap);
|
||||
m_yuv_bitmap = NULL;
|
||||
}
|
||||
SDL_DestroyRenderer(m_sdl_renderer);
|
||||
}
|
||||
|
||||
//============================================================
|
||||
|
@ -29,24 +29,6 @@ enum {
|
||||
|
||||
#define VIDEO_SCALE_MODE_NONE (0)
|
||||
|
||||
// texture formats
|
||||
// This used to be an enum, but these are now defines so we can use them as
|
||||
// preprocessor conditionals
|
||||
#define SDL_TEXFORMAT_ARGB32 (0) // non-16-bit textures or specials
|
||||
#define SDL_TEXFORMAT_RGB32 (1)
|
||||
#define SDL_TEXFORMAT_RGB32_PALETTED (2)
|
||||
#define SDL_TEXFORMAT_YUY16 (3)
|
||||
#define SDL_TEXFORMAT_YUY16_PALETTED (4)
|
||||
#define SDL_TEXFORMAT_PALETTE16 (5)
|
||||
#define SDL_TEXFORMAT_RGB15 (6)
|
||||
#define SDL_TEXFORMAT_RGB15_PALETTED (7)
|
||||
#define SDL_TEXFORMAT_PALETTE16A (8)
|
||||
// special texture formats for 16bpp texture destination support, do not use
|
||||
// to address the tex properties / tex functions arrays!
|
||||
#define SDL_TEXFORMAT_PALETTE16_ARGB1555 (16)
|
||||
#define SDL_TEXFORMAT_RGB15_ARGB1555 (17)
|
||||
#define SDL_TEXFORMAT_RGB15_PALETTED_ARGB1555 (18)
|
||||
|
||||
#define GLSL_SHADER_MAX 10
|
||||
|
||||
//============================================================
|
||||
|
Loading…
Reference in New Issue
Block a user