diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index cc458831..8feaacf9 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -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(); diff --git a/src/drivers/sdl/gui.h b/src/drivers/sdl/gui.h index 13ad108f..aa6c8b5e 100644 --- a/src/drivers/sdl/gui.h +++ b/src/drivers/sdl/gui.h @@ -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(); diff --git a/src/drivers/sdl/sdl-video.cpp b/src/drivers/sdl/sdl-video.cpp index 1edb7af9..c4bc3e82 100644 --- a/src/drivers/sdl/sdl-video.cpp +++ b/src/drivers/sdl/sdl-video.cpp @@ -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;