sdl: GTK3! removed more depreciated code and made adjustments so that fceux now compiles with GTK3 (although not by default). Compile by setting GTK3 to 1 in the SConstruct

This commit is contained in:
punkrockguy318 2011-10-18 21:47:41 +00:00
parent 654207e860
commit 8638c95d60
5 changed files with 30 additions and 26 deletions

View File

@ -13,7 +13,7 @@ opts.AddVariables(
BoolVariable('CREATE_AVI', 'Enable avi creation support (SDL only)', 1), BoolVariable('CREATE_AVI', 'Enable avi creation support (SDL only)', 1),
BoolVariable('LOGO', 'Enable a logoscreen when creating avis (SDL only)', '1'), BoolVariable('LOGO', 'Enable a logoscreen when creating avis (SDL only)', '1'),
BoolVariable('GTK', 'Enable GTK2 GUI (SDL only)', 1), BoolVariable('GTK', 'Enable GTK2 GUI (SDL only)', 1),
BoolVariable('GTK3', 'Enable GTK3 GUI (BROKEN/EXPERIMENTAL)', 0), BoolVariable('GTK3', 'Enable GTK3 GUI (SDL only)', 0),
) )
env = Environment(options = opts) env = Environment(options = opts)

View File

@ -1,3 +1,4 @@
18-octo-2011 - prg318 - sdl: GTK3 support is now functional. Set GTK3 to 1 in the SConstruct to try it out.
18-octo-2011 - prg318 - no longer use depreciated gtk2 functions 18-octo-2011 - prg318 - no longer use depreciated gtk2 functions
18-octo-2011 - prg318 - getSDLKey tool added to assist in remapping hotkeys 18-octo-2011 - prg318 - getSDLKey tool added to assist in remapping hotkeys
17-octo-2011 - prg318 - some segfaults fixed, also fixed some build errors 17-octo-2011 - prg318 - some segfaults fixed, also fixed some build errors

View File

@ -1,5 +1,8 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h> #include <gdk/gdkkeysyms.h>
#ifdef _GTK3
#include <gdk/gdkkeysyms-compat.h>
#endif
#include <gdk/gdkx.h> #include <gdk/gdkx.h>
#include <SDL/SDL.h> #include <SDL/SDL.h>
@ -275,8 +278,8 @@ void openPaletteConfig()
gtk_box_pack_start(GTK_BOX(vbox), paletteFrame, FALSE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), paletteFrame, FALSE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(vbox), slidersFrame, FALSE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), slidersFrame, FALSE, TRUE, 5);
g_signal_connect(GTK_OBJECT(win), "delete-event", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "delete-event", G_CALLBACK(closeDialog), NULL);
g_signal_connect(GTK_OBJECT(win), "response", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "response", G_CALLBACK(closeDialog), NULL);
gtk_widget_show_all(win); gtk_widget_show_all(win);
@ -389,8 +392,8 @@ void openNetworkConfig()
gtk_widget_show_all(win); gtk_widget_show_all(win);
g_signal_connect(GTK_OBJECT(win), "delete-event", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "delete-event", G_CALLBACK(closeDialog), NULL);
g_signal_connect(GTK_OBJECT(win), "response", G_CALLBACK(netResponse), NULL); g_signal_connect(win, "response", G_CALLBACK(netResponse), NULL);
} }
// creates and opens hotkey config window // creates and opens hotkey config window
@ -520,7 +523,7 @@ void openGamepadConfig()
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(padNoCombo), "3"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(padNoCombo), "3");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(padNoCombo), "4"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(padNoCombo), "4");
gtk_combo_box_set_active(GTK_COMBO_BOX(padNoCombo), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(padNoCombo), 0);
g_signal_connect(GTK_OBJECT(padNoCombo), "changed", G_CALLBACK(updateGamepadConfig), NULL); g_signal_connect(padNoCombo, "changed", G_CALLBACK(updateGamepadConfig), NULL);
configNoCombo = gtk_combo_box_text_new(); configNoCombo = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "1"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "1");
@ -528,10 +531,10 @@ void openGamepadConfig()
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "3"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "3");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "4"); gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(configNoCombo), "4");
gtk_combo_box_set_active(GTK_COMBO_BOX(configNoCombo), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(configNoCombo), 0);
g_signal_connect(GTK_OBJECT(padNoCombo), "changed", G_CALLBACK(updateGamepadConfig), NULL); g_signal_connect(padNoCombo, "changed", G_CALLBACK(updateGamepadConfig), NULL);
g_signal_connect(GTK_OBJECT(typeCombo), "changed", G_CALLBACK(setInputDevice), g_signal_connect(typeCombo, "changed", G_CALLBACK(setInputDevice),
gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(typeCombo))); gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(typeCombo)));
// sync with config // sync with config
@ -542,7 +545,7 @@ void openGamepadConfig()
else else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fourScoreChk), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(fourScoreChk), 0);
g_signal_connect(GTK_OBJECT(fourScoreChk), "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.FourScore"); g_signal_connect(fourScoreChk, "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.FourScore");
gtk_box_pack_start(GTK_BOX(hboxPadNo), padNoLabel, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(hboxPadNo), padNoLabel, TRUE, TRUE, 5);
gtk_box_pack_start(GTK_BOX(hboxPadNo), padNoCombo, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(hboxPadNo), padNoCombo, TRUE, TRUE, 5);
@ -583,7 +586,7 @@ void openGamepadConfig()
gtk_table_attach(GTK_TABLE(buttonTable), changeButton, 2, 3, i, i+1, gtk_table_attach(GTK_TABLE(buttonTable), changeButton, 2, 3, i, i+1,
(GtkAttachOptions)0, (GtkAttachOptions)0, 0, 0); (GtkAttachOptions)0, (GtkAttachOptions)0, 0, 0);
g_signal_connect(GTK_OBJECT(changeButton), "clicked", G_CALLBACK(configGamepadButton), GINT_TO_POINTER(i)); g_signal_connect(changeButton, "clicked", G_CALLBACK(configGamepadButton), GINT_TO_POINTER(i));
buttonMappings[i] = mappedKey; buttonMappings[i] = mappedKey;
} }
@ -592,8 +595,8 @@ void openGamepadConfig()
gtk_box_pack_start(GTK_BOX(vbox), buttonFrame, TRUE, TRUE, 5); gtk_box_pack_start(GTK_BOX(vbox), buttonFrame, TRUE, TRUE, 5);
g_signal_connect(GTK_OBJECT(win), "delete-event", G_CALLBACK(closeGamepadConfig), NULL); g_signal_connect(win, "delete-event", G_CALLBACK(closeGamepadConfig), NULL);
g_signal_connect(GTK_OBJECT(win), "response", G_CALLBACK(closeGamepadConfig), NULL); g_signal_connect(win, "response", G_CALLBACK(closeGamepadConfig), NULL);
gtk_widget_show_all(win); gtk_widget_show_all(win);
@ -757,13 +760,13 @@ void openVideoConfig()
g_config->getOption("SDL.SpecialFilter", &buf); g_config->getOption("SDL.SpecialFilter", &buf);
gtk_combo_box_set_active(GTK_COMBO_BOX(scalerCombo), buf); gtk_combo_box_set_active(GTK_COMBO_BOX(scalerCombo), buf);
g_signal_connect(GTK_OBJECT(scalerCombo), "changed", G_CALLBACK(setScaler), NULL); g_signal_connect(scalerCombo, "changed", G_CALLBACK(setScaler), NULL);
gtk_box_pack_start(GTK_BOX(hbox1), scalerLbl, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(hbox1), scalerLbl, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(hbox1), scalerCombo, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(hbox1), scalerCombo, FALSE, FALSE, 5);
// openGL check // openGL check
glChk = gtk_check_button_new_with_label("Enable OpenGL"); glChk = gtk_check_button_new_with_label("Enable OpenGL");
g_signal_connect(GTK_OBJECT(glChk), "clicked", G_CALLBACK(setGl), (gpointer)scalerCombo); g_signal_connect(glChk, "clicked", G_CALLBACK(setGl), (gpointer)scalerCombo);
// sync with config // sync with config
buf = 0; buf = 0;
@ -775,7 +778,7 @@ void openVideoConfig()
// openGL linear filter check // openGL linear filter check
linearChk = gtk_check_button_new_with_label("Enable OpenGL linear filter"); linearChk = gtk_check_button_new_with_label("Enable OpenGL linear filter");
g_signal_connect(GTK_OBJECT(linearChk), "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.OpenGLip"); g_signal_connect(linearChk, "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.OpenGLip");
// sync with config // sync with config
buf = 0; buf = 0;
@ -787,7 +790,7 @@ void openVideoConfig()
// PAL check // PAL check
palChk = gtk_check_button_new_with_label("Enable PAL mode"); palChk = gtk_check_button_new_with_label("Enable PAL mode");
g_signal_connect(GTK_OBJECT(palChk), "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.PAL"); g_signal_connect(palChk, "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.PAL");
// sync with config // sync with config
buf = 0; buf = 0;
@ -799,7 +802,7 @@ void openVideoConfig()
// New PPU check // New PPU check
ppuChk = gtk_check_button_new_with_label("Enable new PPU"); ppuChk = gtk_check_button_new_with_label("Enable new PPU");
g_signal_connect(GTK_OBJECT(ppuChk), "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.NewPPU"); g_signal_connect(ppuChk, "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.NewPPU");
// sync with config // sync with config
buf = 0; buf = 0;
@ -811,7 +814,7 @@ void openVideoConfig()
// disable 8 sprite limit check // disable 8 sprite limit check
spriteLimitChk = gtk_check_button_new_with_label("Disable Sprite Limit"); spriteLimitChk = gtk_check_button_new_with_label("Disable Sprite Limit");
g_signal_connect(GTK_OBJECT(spriteLimitChk), "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.DisableSpriteLimit"); g_signal_connect(spriteLimitChk, "clicked", G_CALLBACK(toggleOption), (gpointer)"SDL.DisableSpriteLimit");
// sync with config // sync with config
buf = 0; buf = 0;
@ -856,8 +859,8 @@ void openVideoConfig()
gtk_box_pack_start(GTK_BOX(vbox), xscaleHbox, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), xscaleHbox, FALSE, FALSE, 5);
gtk_box_pack_start(GTK_BOX(vbox), yscaleHbox, FALSE, FALSE, 5); gtk_box_pack_start(GTK_BOX(vbox), yscaleHbox, FALSE, FALSE, 5);
g_signal_connect(GTK_OBJECT(win), "delete-event", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "delete-event", G_CALLBACK(closeDialog), NULL);
g_signal_connect(GTK_OBJECT(win), "response", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "response", G_CALLBACK(closeDialog), NULL);
gtk_widget_show_all(win); gtk_widget_show_all(win);
@ -950,7 +953,7 @@ void openSoundConfig()
else else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(soundChk), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(soundChk), FALSE);
g_signal_connect(GTK_OBJECT(soundChk), "clicked", g_signal_connect(soundChk, "clicked",
G_CALLBACK(toggleSound), NULL); G_CALLBACK(toggleSound), NULL);
@ -964,7 +967,7 @@ void openSoundConfig()
else else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lowpassChk), FALSE); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lowpassChk), FALSE);
g_signal_connect(GTK_OBJECT(lowpassChk), "clicked", G_CALLBACK(toggleLowPass), NULL); g_signal_connect(lowpassChk, "clicked", G_CALLBACK(toggleLowPass), NULL);
// sound quality combo box // sound quality combo box
hbox1 = gtk_hbox_new(FALSE, 3); hbox1 = gtk_hbox_new(FALSE, 3);
@ -1072,8 +1075,8 @@ void openSoundConfig()
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(win))), main_hbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(win))), main_hbox, TRUE, TRUE, 0);
g_signal_connect(GTK_OBJECT(win), "delete-event", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "delete-event", G_CALLBACK(closeDialog), NULL);
g_signal_connect(GTK_OBJECT(win), "response", G_CALLBACK(closeDialog), NULL); g_signal_connect(win, "response", G_CALLBACK(closeDialog), NULL);
gtk_widget_show_all(win); gtk_widget_show_all(win);

View File

@ -829,7 +829,7 @@ ButtonConfigBegin()
char SDL_windowhack[128]; char SDL_windowhack[128];
if(gtk_widget_get_window(evbox)) if(gtk_widget_get_window(evbox))
sprintf(SDL_windowhack, "SDL_WINDOWID=%u", (unsigned int)GDK_WINDOW_XWINDOW(gtk_widget_get_window(evbox))); sprintf(SDL_windowhack, "SDL_WINDOWID=%u", (unsigned int)GDK_WINDOW_XID(gtk_widget_get_window(evbox)));
SDL_putenv(SDL_windowhack); SDL_putenv(SDL_windowhack);
} }
#endif #endif

View File

@ -382,7 +382,7 @@ InitVideo(FCEUGI *gi)
gtk_main_iteration_do(FALSE); gtk_main_iteration_do(FALSE);
char SDL_windowhack[128]; char SDL_windowhack[128];
sprintf(SDL_windowhack, "SDL_WINDOWID=%u", (unsigned int)GDK_WINDOW_XWINDOW(gtk_widget_get_window(evbox))); sprintf(SDL_windowhack, "SDL_WINDOWID=%u", (unsigned int)GDK_WINDOW_XID(gtk_widget_get_window(evbox)));
SDL_putenv(SDL_windowhack); SDL_putenv(SDL_windowhack);
// init SDL video // init SDL video