Changed sdl video resize logic to ensure that it is always syncd to the size of the drawing area.
This commit is contained in:
parent
a2fbb33d68
commit
33c5b328b2
|
@ -83,8 +83,6 @@ bool menuTogglingEnabled = false;
|
|||
static int buttonConfigStatus = 0;
|
||||
|
||||
enum videoDriver_t videoDriver = VIDEO_NONE;
|
||||
//static char useCairoDraw = 0;
|
||||
//static int drawAreaGL = 0;
|
||||
unsigned int gtk_draw_area_width = NES_WIDTH;
|
||||
unsigned int gtk_draw_area_height = NES_HEIGHT;
|
||||
static GtkTreeStore *hotkey_store = NULL;
|
||||
|
@ -967,7 +965,7 @@ static void setVideoDriver (GtkWidget * w, gpointer p)
|
|||
g_config->save ();
|
||||
}
|
||||
|
||||
void setRegion (GtkWidget * w, gpointer p)
|
||||
static void setRegion (GtkWidget * w, gpointer p)
|
||||
{
|
||||
int region = gtk_combo_box_get_active (GTK_COMBO_BOX (w));
|
||||
g_config->setOption ("SDL.PAL", region);
|
||||
|
@ -977,7 +975,7 @@ void setRegion (GtkWidget * w, gpointer p)
|
|||
|
||||
}
|
||||
|
||||
int setXscale (GtkWidget * w, gpointer p)
|
||||
static int setXscale (GtkWidget * w, gpointer p)
|
||||
{
|
||||
double v = gtk_spin_button_get_value (GTK_SPIN_BUTTON (w));
|
||||
g_config->setOption ("SDL.XScale", v);
|
||||
|
@ -986,7 +984,7 @@ int setXscale (GtkWidget * w, gpointer p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int setYscale (GtkWidget * w, gpointer p)
|
||||
static int setYscale (GtkWidget * w, gpointer p)
|
||||
{
|
||||
double v = gtk_spin_button_get_value (GTK_SPIN_BUTTON (w));
|
||||
g_config->setOption ("SDL.YScale", v);
|
||||
|
@ -995,26 +993,7 @@ int setYscale (GtkWidget * w, gpointer p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef OPENGL
|
||||
void setGl (GtkWidget * w, gpointer p)
|
||||
{
|
||||
int scaler;
|
||||
int opengl = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w));
|
||||
g_config->getOption ("SDL.SpecialFilter", &scaler);
|
||||
if (scaler && opengl)
|
||||
{
|
||||
FCEUD_PrintError ("Scalers not supported in OpenGL mode.");
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), 0);
|
||||
return;
|
||||
}
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
|
||||
g_config->setOption ("SDL.OpenGL", 1);
|
||||
else
|
||||
g_config->setOption ("SDL.OpenGL", 0);
|
||||
g_config->save ();
|
||||
}
|
||||
|
||||
void setDoubleBuffering (GtkWidget * w, gpointer p)
|
||||
static void setDoubleBuffering (GtkWidget * w, gpointer p)
|
||||
{
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w)))
|
||||
g_config->setOption ("SDL.DoubleBuffering", 1);
|
||||
|
@ -1022,7 +1001,6 @@ void setDoubleBuffering (GtkWidget * w, gpointer p)
|
|||
g_config->setOption ("SDL.DoubleBuffering", 0);
|
||||
g_config->save ();
|
||||
}
|
||||
#endif
|
||||
|
||||
void openVideoConfig (void)
|
||||
{
|
||||
|
@ -1032,7 +1010,6 @@ void openVideoConfig (void)
|
|||
GtkWidget *hbox1;
|
||||
GtkWidget *scalerLbl;
|
||||
GtkWidget *DriverCombo;
|
||||
//GtkWidget *glChk;
|
||||
GtkWidget *linearChk;
|
||||
GtkWidget *dbChk;
|
||||
GtkWidget *palHbox;
|
||||
|
@ -1081,11 +1058,6 @@ void openVideoConfig (void)
|
|||
g_signal_connect (DriverCombo, "changed", G_CALLBACK (setVideoDriver), NULL);
|
||||
gtk_box_pack_start (GTK_BOX (hbox1), scalerLbl, FALSE, FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (hbox1), DriverCombo, FALSE, FALSE, 5);
|
||||
#ifdef OPENGL
|
||||
// openGL check
|
||||
//glChk = gtk_check_button_new_with_label ("Enable OpenGL");
|
||||
//g_signal_connect (glChk, "clicked", G_CALLBACK (setGl), NULL);
|
||||
//setCheckbox (glChk, "SDL.OpenGL");
|
||||
|
||||
// openGL linear filter check
|
||||
linearChk =
|
||||
|
@ -1099,7 +1071,6 @@ void openVideoConfig (void)
|
|||
g_signal_connect (dbChk, "clicked", G_CALLBACK (setDoubleBuffering),
|
||||
NULL);
|
||||
setCheckbox (dbChk, "SDL.DoubleBuffering");
|
||||
#endif
|
||||
|
||||
// Region (NTSC/PAL/Dendy)
|
||||
palHbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 3);
|
||||
|
@ -1176,11 +1147,10 @@ void openVideoConfig (void)
|
|||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), lbl, FALSE, FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox1, FALSE, FALSE, 5);
|
||||
#ifdef OPENGL
|
||||
//gtk_box_pack_start (GTK_BOX (vbox), glChk, FALSE, FALSE, 5);
|
||||
//#ifdef OPENGL
|
||||
gtk_box_pack_start (GTK_BOX (vbox), linearChk, FALSE, FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), dbChk, FALSE, FALSE, 5);
|
||||
#endif
|
||||
//#endif
|
||||
gtk_box_pack_start (GTK_BOX (vbox), palHbox, FALSE, FALSE, 5);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), ppuChk, FALSE, FALSE, 5);
|
||||
#ifdef FRAMESKIP
|
||||
|
@ -3447,8 +3417,6 @@ int init_gui_video( videoDriver_t videoDriverSelect )
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
//drawAreaGL = use_openGL;
|
||||
//useCairoDraw = !drawAreaGL;
|
||||
|
||||
destroy_gui_video();
|
||||
|
||||
|
|
|
@ -50,11 +50,6 @@ void openGamepadConfig();
|
|||
|
||||
void resizeGtkWindow();
|
||||
|
||||
#ifdef OPENGL
|
||||
void setGl(GtkWidget* w, gpointer p);
|
||||
void setDoubleBuffering(GtkWidget* w, gpointer p);
|
||||
#endif
|
||||
|
||||
void setStateMenuItem( int i );
|
||||
|
||||
void openVideoConfig();
|
||||
|
|
|
@ -84,6 +84,8 @@ extern bool MaxSpeed;
|
|||
extern unsigned int gtk_draw_area_width;
|
||||
extern unsigned int gtk_draw_area_height;
|
||||
|
||||
static int sdl_win_width = 0;
|
||||
static int sdl_win_height = 0;
|
||||
static SDL_Window *sdlWindow = NULL;
|
||||
static SDL_Renderer *sdlRenderer = NULL;
|
||||
static SDL_Texture *sdlTexture = NULL;
|
||||
|
@ -467,6 +469,7 @@ int init_gtk3_sdl_video( void )
|
|||
{
|
||||
GdkWindow *gdkWin = gtk_widget_get_window(evbox);
|
||||
Window win;
|
||||
int sdlRendW, sdlRendH;
|
||||
int vsyncEnabled=0;
|
||||
|
||||
if ( gdkWin == NULL )
|
||||
|
@ -508,9 +511,9 @@ int init_gtk3_sdl_video( void )
|
|||
}
|
||||
}
|
||||
|
||||
//SDL_GetRendererOutputSize( sdlRenderer, &sdlRendW, &sdlRendH );
|
||||
SDL_GetRendererOutputSize( sdlRenderer, &sdlRendW, &sdlRendH );
|
||||
|
||||
//printf("[SDL] Renderer Output Size: %i x %i \n", sdlRendW, sdlRendH );
|
||||
printf("[SDL] Renderer Output Size: %i x %i \n", sdlRendW, sdlRendH );
|
||||
|
||||
sdlTexture = SDL_CreateTexture(sdlRenderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, GLX_NES_WIDTH, GLX_NES_HEIGHT);
|
||||
|
||||
|
@ -519,6 +522,10 @@ int init_gtk3_sdl_video( void )
|
|||
printf("[SDL] Failed to create texture: %i x %i", GLX_NES_WIDTH, GLX_NES_HEIGHT );
|
||||
return -1;
|
||||
}
|
||||
|
||||
sdl_win_width = sdlRendW;
|
||||
sdl_win_height = sdlRendH;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -555,6 +562,11 @@ int gtk3_sdl_render(void)
|
|||
int nesWidth = GLX_NES_WIDTH;
|
||||
int nesHeight = GLX_NES_HEIGHT;
|
||||
|
||||
if ( (sdl_win_width != gtk_draw_area_width) || (sdl_win_height != gtk_draw_area_height) )
|
||||
{
|
||||
gtk3_sdl_resize();
|
||||
}
|
||||
|
||||
if ( glx_shm != NULL )
|
||||
{
|
||||
nesWidth = glx_shm->ncol;
|
||||
|
|
Loading…
Reference in New Issue