Merge pull request #385 from PCSX2/gtk3_compilation_fix

Gtk3 port (require wx built against GTK3).
This commit is contained in:
Gregory Hainaut 2014-12-11 09:54:45 +01:00
commit 534b7041f4
14 changed files with 244 additions and 218 deletions

View File

@ -41,6 +41,7 @@ for ARG in "$@"; do
--asan ) flags+=(-DUSE_ASAN=TRUE) ;;
--wx28 ) flags+=(-DWX28_API=TRUE) ;;
--wx30 ) flags+=(-DWX28_API=FALSE) ;;
--gtk3 ) flags+=(-DGTK3_API=TRUE) ;;
--64-bit-dont-work ) flags+=(-D64BIT_BUILD_DONT_WORK=TRUE) ;;
--no-simd ) flags+=(-DDISABLE_ADVANCE_SIMD=TRUE) ;;
-D* ) flags+=($ARG) ;;
@ -51,21 +52,25 @@ for ARG in "$@"; do
echo "--dev / --devel : Build PCSX2 as a Development build."
echo "--debug : Build PCSX2 as a Debug build."
echo "--release : Build PCSX2 as a Release build."
echo
echo "--clean : Do a clean build."
echo "--extra : Build all plugins"
echo
echo "** Developper option **"
echo "--clang : Build with Clang/llvm"
echo "--extra : Build all plugins"
echo "--asan : Enable with Address sanitizer"
echo "--asan : Enable Address sanitizer"
echo
echo "--wx28 : Force wxWidget 2.8"
echo "--wx30 : Allow to use wxWidget 3.0"
echo "--glsl : Replace CG backend of ZZogl by GLSL"
echo "--egl : Replace GLX by EGL (ZZogl plugins only)"
echo "--sdl2 : Build with SDL2 (crash if wx is linked to SDL1)"
echo "--gles : Replace openGL backend of GSdx by openGLES3"
echo "--gles : Replace openGL backend of GSdx by openGLES3.1"
echo
echo "** Hardcode Developper option **"
echo "--64-bit-dont-work : Don't use it!"
echo "--no-simd : Only allow sse2"
echo "--gtk3 : replace GTK2 by GTK3"
exit 1
esac
done

View File

@ -34,6 +34,7 @@ option(XDG_STD "Use XDG standard path instead of the standard PCSX2 path")
option(EXTRA_PLUGINS "Build various 'extra' plugins")
option(SDL2_API "Use SDL2 on spu2x and onepad")
option(WX28_API "Force wxWidget 2.8 lib")
option(GTK3_API "Use GTK3 api")
if(PACKAGE_MODE)
if(NOT DEFINED PLUGIN_DIR)
@ -239,6 +240,7 @@ else()
set(ASAN_FLAG "")
endif()
# Note: -DGTK_DISABLE_DEPRECATED can be used to test a build without gtk deprecated feature. It could be useful to port to a newer API
set(DEFAULT_GCC_FLAG "${ARCH_FLAG} ${COMMON_FLAG} ${DEFAULT_WARNINGS} ${HARDENING_FLAG} ${DEBUG_FLAG} ${ASAN_FLAG}")
# c++ only flags
set(DEFAULT_CPP_FLAG "${DEFAULT_GCC_FLAG} -Wno-invalid-offsetof")

View File

@ -29,7 +29,11 @@ macro(check_lib var lib)
include_directories(${${var}_INCLUDE})
_internal_message("-- ${lib} found")
set(${var}_FOUND 1 CACHE INTERNAL "")
else()
elseif(${var}_LIBRARIES)
_internal_message("-- ${lib} not found (miss include)")
elseif(${var}_INCLUDE)
_internal_message("-- ${lib} not found (miss lib)")
else()
_internal_message("-- ${lib} not found")
endif()
endif()

View File

@ -1,12 +1,6 @@
#-------------------------------------------------------------------------------
# Search all libraries on the system
#-------------------------------------------------------------------------------
if(Linux)
# Most plugins (if not all) and PCSX2 core need gtk2, so set the required flags
find_package(GTK2 REQUIRED gtk)
find_package(X11)
endif()
## Use cmake package to find module
find_package(ALSA)
find_package(BZip2)
@ -50,12 +44,26 @@ else()
find_package(SDL)
endif()
if (Linux)
find_package(X11)
# Most plugins (if not all) and PCSX2 core need gtk2, so set the required flags
if (GTK3_API)
check_lib(GTK3 gtk+-3.0 gtk/gtk.h)
else()
find_package(GTK2 REQUIRED gtk)
endif()
endif()
#----------------------------------------
# Use system include
#----------------------------------------
if(Linux)
if(GTK2_FOUND)
include_directories(${GTK2_INCLUDE_DIRS})
elseif(GTK3_FOUND)
include_directories(${GTK3_INCLUDE_DIRS})
# A lazy solution
set(GTK2_LIBRARIES ${GTK3_LIBRARIES})
endif()
if(X11_FOUND)

View File

@ -184,42 +184,33 @@ static void SysMessage(const char *fmt, ...)
gtk_widget_destroy (dialog);
}
static bool loggingValue = false;
static void __forceinline set_logging(GtkToggleButton *check)
static void __forceinline set_logging(GtkToggleButton *check, int& log)
{
loggingValue = gtk_toggle_button_get_active(check);
}
static void __forceinline send_ok(GtkDialog *dialog)
{
int ret = (loggingValue) ? 1 : 0;
gtk_dialog_response (dialog, ret);
log = gtk_toggle_button_get_active(check);
}
static void __forceinline PluginNullConfigure(std::string desc, int &log)
{
GtkWidget *dialog, *label, *okay_button, *check_box;
GtkWidget *dialog, *label, *check_box;
/* Create the widgets */
dialog = gtk_dialog_new();
label = gtk_label_new (desc.c_str());
okay_button = gtk_button_new_with_label("Ok");
check_box = gtk_check_button_new_with_label("Logging");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_box), (log != 0));
/* Ensure that the dialog box is destroyed when the user clicks ok, and that we get the check box value. */
g_signal_connect_swapped(GTK_OBJECT (okay_button), "clicked", G_CALLBACK(send_ok), dialog);
g_signal_connect_swapped(GTK_OBJECT (check_box), "toggled", G_CALLBACK(set_logging), check_box);
g_signal_connect(check_box, "toggled", G_CALLBACK(set_logging), &log);
/* Add all our widgets, and show everything we've added to the dialog. */
gtk_container_add (GTK_CONTAINER (gtk_dialog_get_action_area(GTK_DIALOG(dialog))), okay_button);
gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), label);
gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area(GTK_DIALOG(dialog))), check_box);
gtk_dialog_add_button(GTK_DIALOG(dialog), "Ok", 0);
gtk_widget_show_all (dialog);
log = gtk_dialog_run (GTK_DIALOG (dialog));
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}

View File

@ -17,11 +17,6 @@
#include "ConsoleLogger.h"
#include <gdk/gdkkeysyms.h>
#if (GTK_MAJOR_VERSION > 2)
// All those GDK_<key> defines are now GDK_KEY_<key>, as of around Gtk+ 2.22. This include gets brought in automatically until Gtk 3.0,
// But we want to bring it in after that, too, until we're ready to break compatability prior to Gtk+ 2.22.
#include <gdk/gdkkeysyms-compat.h>
#endif
void NTFS_CompressFile( const wxString& file, bool compressStatus ) {}
@ -33,229 +28,229 @@ int TranslateGDKtoWXK( u32 keysym )
switch ( keysym )
{
// Shift, Control and Alt don't generate the CHAR events at all
case GDK_Shift_L:
case GDK_Shift_R:
case GDK_KEY_Shift_L:
case GDK_KEY_Shift_R:
key_code = WXK_SHIFT;
break;
case GDK_Control_L:
case GDK_Control_R:
case GDK_KEY_Control_L:
case GDK_KEY_Control_R:
key_code = WXK_CONTROL;
break;
case GDK_Meta_L:
case GDK_Meta_R:
case GDK_Alt_L:
case GDK_Alt_R:
case GDK_Super_L:
case GDK_Super_R:
case GDK_KEY_Meta_L:
case GDK_KEY_Meta_R:
case GDK_KEY_Alt_L:
case GDK_KEY_Alt_R:
case GDK_KEY_Super_L:
case GDK_KEY_Super_R:
key_code = WXK_ALT;
break;
// neither do the toggle modifies
case GDK_Scroll_Lock:
case GDK_KEY_Scroll_Lock:
key_code = WXK_SCROLL;
break;
case GDK_Caps_Lock:
case GDK_KEY_Caps_Lock:
key_code = WXK_CAPITAL;
break;
case GDK_Num_Lock:
case GDK_KEY_Num_Lock:
key_code = WXK_NUMLOCK;
break;
// various other special keys
case GDK_Menu:
case GDK_KEY_Menu:
key_code = WXK_MENU;
break;
case GDK_Help:
case GDK_KEY_Help:
key_code = WXK_HELP;
break;
case GDK_BackSpace:
case GDK_KEY_BackSpace:
key_code = WXK_BACK;
break;
case GDK_ISO_Left_Tab:
case GDK_Tab:
case GDK_KEY_ISO_Left_Tab:
case GDK_KEY_Tab:
key_code = WXK_TAB;
break;
case GDK_Linefeed:
case GDK_Return:
case GDK_KEY_Linefeed:
case GDK_KEY_Return:
key_code = WXK_RETURN;
break;
case GDK_Clear:
case GDK_KEY_Clear:
key_code = WXK_CLEAR;
break;
case GDK_Pause:
case GDK_KEY_Pause:
key_code = WXK_PAUSE;
break;
case GDK_Select:
case GDK_KEY_Select:
key_code = WXK_SELECT;
break;
case GDK_Print:
case GDK_KEY_Print:
key_code = WXK_PRINT;
break;
case GDK_Execute:
case GDK_KEY_Execute:
key_code = WXK_EXECUTE;
break;
case GDK_Escape:
case GDK_KEY_Escape:
key_code = WXK_ESCAPE;
break;
// cursor and other extended keyboard keys
case GDK_Delete:
case GDK_KEY_Delete:
key_code = WXK_DELETE;
break;
case GDK_Home:
case GDK_KEY_Home:
key_code = WXK_HOME;
break;
case GDK_Left:
case GDK_KEY_Left:
key_code = WXK_LEFT;
break;
case GDK_Up:
case GDK_KEY_Up:
key_code = WXK_UP;
break;
case GDK_Right:
case GDK_KEY_Right:
key_code = WXK_RIGHT;
break;
case GDK_Down:
case GDK_KEY_Down:
key_code = WXK_DOWN;
break;
case GDK_Prior: // == GDK_Page_Up
case GDK_KEY_Prior: // == GDK_KEY_Page_Up
key_code = WXK_PAGEUP;
break;
case GDK_Next: // == GDK_Page_Down
case GDK_KEY_Next: // == GDK_KEY_Page_Down
key_code = WXK_PAGEDOWN;
break;
case GDK_End:
case GDK_KEY_End:
key_code = WXK_END;
break;
case GDK_Begin:
case GDK_KEY_Begin:
key_code = WXK_HOME;
break;
case GDK_Insert:
case GDK_KEY_Insert:
key_code = WXK_INSERT;
break;
// numpad keys
case GDK_KP_0:
case GDK_KP_1:
case GDK_KP_2:
case GDK_KP_3:
case GDK_KP_4:
case GDK_KP_5:
case GDK_KP_6:
case GDK_KP_7:
case GDK_KP_8:
case GDK_KP_9:
key_code = WXK_NUMPAD0 + keysym - GDK_KP_0;
case GDK_KEY_KP_0:
case GDK_KEY_KP_1:
case GDK_KEY_KP_2:
case GDK_KEY_KP_3:
case GDK_KEY_KP_4:
case GDK_KEY_KP_5:
case GDK_KEY_KP_6:
case GDK_KEY_KP_7:
case GDK_KEY_KP_8:
case GDK_KEY_KP_9:
key_code = WXK_NUMPAD0 + keysym - GDK_KEY_KP_0;
break;
case GDK_KP_Space:
case GDK_KEY_KP_Space:
key_code = WXK_NUMPAD_SPACE;
break;
case GDK_KP_Tab:
case GDK_KEY_KP_Tab:
key_code = WXK_NUMPAD_TAB;
break;
case GDK_KP_Enter:
case GDK_KEY_KP_Enter:
key_code = WXK_NUMPAD_ENTER;
break;
case GDK_KP_F1:
case GDK_KEY_KP_F1:
key_code = WXK_NUMPAD_F1;
break;
case GDK_KP_F2:
case GDK_KEY_KP_F2:
key_code = WXK_NUMPAD_F2;
break;
case GDK_KP_F3:
case GDK_KEY_KP_F3:
key_code = WXK_NUMPAD_F3;
break;
case GDK_KP_F4:
case GDK_KEY_KP_F4:
key_code = WXK_NUMPAD_F4;
break;
case GDK_KP_Home:
case GDK_KEY_KP_Home:
key_code = WXK_NUMPAD_HOME;
break;
case GDK_KP_Left:
case GDK_KEY_KP_Left:
key_code = WXK_NUMPAD_LEFT;
break;
case GDK_KP_Up:
case GDK_KEY_KP_Up:
key_code = WXK_NUMPAD_UP;
break;
case GDK_KP_Right:
case GDK_KEY_KP_Right:
key_code = WXK_NUMPAD_RIGHT;
break;
case GDK_KP_Down:
case GDK_KEY_KP_Down:
key_code = WXK_NUMPAD_DOWN;
break;
case GDK_KP_Prior: // == GDK_KP_Page_Up
case GDK_KEY_KP_Prior: // == GDK_KEY_KP_Page_Up
key_code = WXK_NUMPAD_PAGEUP;
break;
case GDK_KP_Next: // == GDK_KP_Page_Down
case GDK_KEY_KP_Next: // == GDK_KEY_KP_Page_Down
key_code = WXK_NUMPAD_PAGEDOWN;
break;
case GDK_KP_End:
case GDK_KEY_KP_End:
key_code = WXK_NUMPAD_END;
break;
case GDK_KP_Begin:
case GDK_KEY_KP_Begin:
key_code = WXK_NUMPAD_BEGIN;
break;
case GDK_KP_Insert:
case GDK_KEY_KP_Insert:
key_code = WXK_NUMPAD_INSERT;
break;
case GDK_KP_Delete:
case GDK_KEY_KP_Delete:
key_code = WXK_NUMPAD_DELETE;
break;
case GDK_KP_Equal:
case GDK_KEY_KP_Equal:
key_code = WXK_NUMPAD_EQUAL;
break;
case GDK_KP_Multiply:
case GDK_KEY_KP_Multiply:
key_code = WXK_NUMPAD_MULTIPLY;
break;
case GDK_KP_Add:
case GDK_KEY_KP_Add:
key_code = WXK_NUMPAD_ADD;
break;
case GDK_KP_Separator:
case GDK_KEY_KP_Separator:
// FIXME: what is this?
//
// Some numeric keyboards have a comma on them. I believe this is the symbol
@ -264,33 +259,33 @@ int TranslateGDKtoWXK( u32 keysym )
key_code = WXK_NUMPAD_SEPARATOR;
break;
case GDK_KP_Subtract:
case GDK_KEY_KP_Subtract:
key_code = WXK_NUMPAD_SUBTRACT;
break;
case GDK_KP_Decimal:
case GDK_KEY_KP_Decimal:
key_code = WXK_NUMPAD_DECIMAL;
break;
case GDK_KP_Divide:
case GDK_KEY_KP_Divide:
key_code = WXK_NUMPAD_DIVIDE;
break;
// function keys
case GDK_F1:
case GDK_F2:
case GDK_F3:
case GDK_F4:
case GDK_F5:
case GDK_F6:
case GDK_F7:
case GDK_F8:
case GDK_F9:
case GDK_F10:
case GDK_F11:
case GDK_F12:
key_code = WXK_F1 + keysym - GDK_F1;
case GDK_KEY_F1:
case GDK_KEY_F2:
case GDK_KEY_F3:
case GDK_KEY_F4:
case GDK_KEY_F5:
case GDK_KEY_F6:
case GDK_KEY_F7:
case GDK_KEY_F8:
case GDK_KEY_F9:
case GDK_KEY_F10:
case GDK_KEY_F11:
case GDK_KEY_F12:
key_code = WXK_F1 + keysym - GDK_KEY_F1;
break;
default:

View File

@ -906,7 +906,11 @@ void Pcsx2App::OpenGsPanel()
GdkWindow* draw_window = gtk_widget_get_window(child_window);
#endif
#if GTK_MAJOR_VERSION < 3
Window Xwindow = GDK_WINDOW_XWINDOW(draw_window);
#else
Window Xwindow = GDK_WINDOW_XID(draw_window);
#endif
Display* XDisplay = GDK_WINDOW_XDISPLAY(draw_window);
pDsp[0] = (uptr)XDisplay;

View File

@ -29,7 +29,7 @@ GtkWidget* CreateRenderComboBox()
GtkWidget *render_combo_box;
int renderer_box_position = 0;
render_combo_box = gtk_combo_box_new_text ();
render_combo_box = gtk_combo_box_text_new ();
for(auto s = theApp.m_gs_renderers.begin(); s != theApp.m_gs_renderers.end(); s++)
{
@ -56,7 +56,7 @@ GtkWidget* CreateRenderComboBox()
continue;
}
gtk_combo_box_append_text(GTK_COMBO_BOX(render_combo_box), label.c_str());
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(render_combo_box), label.c_str());
}
switch (theApp.GetConfig("renderer", 0)) {
@ -78,7 +78,7 @@ GtkWidget* CreateRenderComboBox()
GtkWidget* CreateInterlaceComboBox()
{
GtkWidget *combo_box;
combo_box = gtk_combo_box_new_text ();
combo_box = gtk_combo_box_text_new ();
for(size_t i = 0; i < theApp.m_gs_interlace.size(); i++)
{
@ -88,7 +88,7 @@ GtkWidget* CreateInterlaceComboBox()
if(!s.note.empty()) label += format(" (%s)", s.note.c_str());
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), label.c_str());
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), label.c_str());
}
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), theApp.GetConfig("interlace", 0));
@ -98,15 +98,15 @@ GtkWidget* CreateInterlaceComboBox()
GtkWidget* CreateMsaaComboBox()
{
GtkWidget *combo_box;
combo_box = gtk_combo_box_new_text ();
combo_box = gtk_combo_box_text_new ();
// For now, let's just put in the same vaues that show up in the windows combo box.
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "Custom");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "2x");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "3x");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "4x");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "5x");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "6x");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "Custom");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "2x");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "3x");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "4x");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "5x");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "6x");
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), theApp.GetConfig("upscale_multiplier", 2)-1);
return combo_box;
@ -115,11 +115,11 @@ GtkWidget* CreateMsaaComboBox()
GtkWidget* CreateFilterComboBox()
{
GtkWidget *combo_box;
combo_box = gtk_combo_box_new_text ();
combo_box = gtk_combo_box_text_new ();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "Off");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "Normal");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box), "Forced");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "Off");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "Normal");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), "Forced");
gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), theApp.GetConfig("filter", 0));
return combo_box;
@ -143,11 +143,11 @@ int get_hex_entry(GtkWidget *text_box) {
GtkWidget* CreateGlComboBox(const char* option)
{
GtkWidget* combo;
combo = gtk_combo_box_new_text();
combo = gtk_combo_box_text_new();
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Auto");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Force-Disabled");
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Force-Enabled");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Auto");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Force-Disabled");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), "Force-Enabled");
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), theApp.GetConfig(option, -1) + 1);
return combo;
@ -185,10 +185,8 @@ bool RunLinuxDialog()
"GSdx Config",
NULL, /* parent window*/
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
"OK", GTK_RESPONSE_ACCEPT,
"Cancel", GTK_RESPONSE_REJECT,
NULL);
// The main area for the whole dialog box.
@ -350,17 +348,29 @@ bool RunLinuxDialog()
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hack_logz_check), theApp.GetConfig("logz", 1));
// Shadeboost scale
#if GTK_MAJOR_VERSION < 3
sb_brightness = gtk_hscale_new_with_range(0, 200, 10);
#else
sb_brightness = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 200, 10);
#endif
GtkWidget* sb_brightness_label = gtk_label_new("Shade Boost Brightness");
gtk_scale_set_value_pos(GTK_SCALE(sb_brightness), GTK_POS_RIGHT);
gtk_range_set_value(GTK_RANGE(sb_brightness), theApp.GetConfig("ShadeBoost_Brightness", 50));
#if GTK_MAJOR_VERSION < 3
sb_contrast = gtk_hscale_new_with_range(0, 200, 10);
#else
sb_contrast = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 200, 10);
#endif
GtkWidget* sb_contrast_label = gtk_label_new("Shade Boost Contrast");
gtk_scale_set_value_pos(GTK_SCALE(sb_contrast), GTK_POS_RIGHT);
gtk_range_set_value(GTK_RANGE(sb_contrast), theApp.GetConfig("ShadeBoost_Contrast", 50));
#if GTK_MAJOR_VERSION < 3
sb_saturation = gtk_hscale_new_with_range(0, 200, 10);
#else
sb_saturation = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 200, 10);
#endif
GtkWidget* sb_saturation_label = gtk_label_new("Shade Boost Saturation");
gtk_scale_set_value_pos(GTK_SCALE(sb_saturation), GTK_POS_RIGHT);
gtk_range_set_value(GTK_RANGE(sb_saturation), theApp.GetConfig("ShadeBoost_Saturation", 50));

View File

@ -29,7 +29,7 @@ void on_conf_key(GtkButton *button, gpointer user_data);
void on_toggle_option(GtkToggleButton *togglebutton, gpointer user_data);
static int current_pad = 0;
static GtkComboBox *joy_choose_cbox;
static GtkComboBoxText *joy_choose_cbox;
const char* s_pGuiKeyMap[] =
{
@ -240,12 +240,12 @@ class keys_tree
};
keys_tree *key_tree_manager;
void populate_new_joysticks(GtkComboBox *box)
void populate_new_joysticks(GtkComboBoxText *box)
{
char str[255];
JoystickInfo::EnumerateJoysticks(s_vjoysticks);
gtk_combo_box_append_text(box, "Keyboard/mouse only");
gtk_combo_box_text_append_text(box, "Keyboard/mouse only");
vector<JoystickInfo*>::iterator it = s_vjoysticks.begin();
@ -254,7 +254,7 @@ void populate_new_joysticks(GtkComboBox *box)
{
sprintf(str, "Keyboard/mouse and %s - but: %d, axes: %d, hats: %d", (*it)->GetName().c_str(),
(*it)->GetNumButtons(), (*it)->GetNumAxes(), (*it)->GetNumHats());
gtk_combo_box_append_text(box, str);
gtk_combo_box_text_append_text(box, str);
it++;
}
}
@ -264,9 +264,9 @@ void set_current_joy()
u32 joyid = conf->get_joyid(current_pad);
if (JoystickIdWithinBounds(joyid))
// 0 is special case for no gamepad. So you must increase of 1.
gtk_combo_box_set_active(joy_choose_cbox, joyid+1);
gtk_combo_box_set_active(GTK_COMBO_BOX(joy_choose_cbox), joyid+1);
else
gtk_combo_box_set_active(joy_choose_cbox, 0);
gtk_combo_box_set_active(GTK_COMBO_BOX(joy_choose_cbox), 0);
}
typedef struct
@ -280,7 +280,7 @@ typedef struct
gtk_fixed_put(fix, widget, x, y);
gtk_widget_set_size_request(widget, 64, 24);
g_signal_connect(GTK_OBJECT (widget), "clicked", G_CALLBACK(on_conf_key), this);
g_signal_connect(widget, "clicked", G_CALLBACK(on_conf_key), this);
}
} dialog_buttons;
@ -295,7 +295,7 @@ typedef struct
gtk_fixed_put(GTK_FIXED(area), widget, x, y);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), mask & conf->options);
g_signal_connect(GTK_OBJECT (widget), "toggled", G_CALLBACK(on_toggle_option), this);
g_signal_connect(widget, "toggled", G_CALLBACK(on_toggle_option), this);
}
} dialog_checkbox;
@ -398,9 +398,9 @@ void on_toggle_option(GtkToggleButton *togglebutton, gpointer user_data)
conf->options &= ~checkbox->mask;
}
void joy_changed(GtkComboBox *box, gpointer user_data)
void joy_changed(GtkComboBoxText *box, gpointer user_data)
{
int joyid = gtk_combo_box_get_active(box);
int joyid = gtk_combo_box_get_active(GTK_COMBO_BOX(box));
// Note position 0 of the combo box is no gamepad
joyid--;
@ -417,7 +417,7 @@ void joy_changed(GtkComboBox *box, gpointer user_data)
conf->set_joyid(current_pad, joyid);
}
void pad_changed(GtkNotebook *notebook, GtkNotebookPage *notebook_page, int page, void *data)
void pad_changed(GtkNotebook *notebook, void *notebook_page, int page, void *data)
{
current_pad = page;
key_tree_manager->set_show_pad(current_pad&1);
@ -515,10 +515,10 @@ GtkWidget *create_notebook_page_dialog(int page, dialog_buttons btn[MAX_KEYS], d
GtkWidget *keys_static_frame, *keys_static_box;
GtkWidget *keys_static_area;
joy_choose_cbox = GTK_COMBO_BOX(gtk_combo_box_new_text());
joy_choose_cbox = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new());
populate_new_joysticks(joy_choose_cbox);
set_current_joy();
g_signal_connect(GTK_OBJECT (joy_choose_cbox), "changed", G_CALLBACK(joy_changed), NULL);
g_signal_connect(joy_choose_cbox, "changed", G_CALLBACK(joy_changed), NULL);
keys_tree_scroll = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(keys_tree_scroll), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@ -526,24 +526,24 @@ GtkWidget *create_notebook_page_dialog(int page, dialog_buttons btn[MAX_KEYS], d
gtk_widget_set_size_request(keys_tree_scroll, 300, 500);
keys_tree_clear_btn = gtk_button_new_with_label("Clear All");
g_signal_connect(GTK_OBJECT (keys_tree_clear_btn), "clicked", G_CALLBACK(on_clear_clicked), NULL);
g_signal_connect(keys_tree_clear_btn, "clicked", G_CALLBACK(on_clear_clicked), NULL);
gtk_widget_set_size_request(keys_tree_clear_btn, 70, 24);
keys_tree_remove_btn = gtk_button_new_with_label("Remove");
g_signal_connect(GTK_OBJECT (keys_tree_remove_btn), "clicked", G_CALLBACK(on_remove_clicked), NULL);
g_signal_connect(keys_tree_remove_btn, "clicked", G_CALLBACK(on_remove_clicked), NULL);
gtk_widget_set_size_request(keys_tree_remove_btn, 70, 24);
keys_tree_modify_btn = gtk_button_new_with_label("Modify");
g_signal_connect(GTK_OBJECT (keys_tree_modify_btn), "clicked", G_CALLBACK(on_modify_clicked), NULL);
g_signal_connect(keys_tree_modify_btn, "clicked", G_CALLBACK(on_modify_clicked), NULL);
gtk_widget_set_size_request(keys_tree_modify_btn, 70, 24);
keys_tree_show_joy_btn = gtk_check_button_new_with_label("Show joy");
g_signal_connect(GTK_OBJECT (keys_tree_show_joy_btn), "toggled", G_CALLBACK(on_view_joy_clicked), NULL);
g_signal_connect(keys_tree_show_joy_btn, "toggled", G_CALLBACK(on_view_joy_clicked), NULL);
gtk_widget_set_size_request(keys_tree_show_joy_btn, 100, 24);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keys_tree_show_joy_btn), true);
keys_tree_show_key_btn = gtk_check_button_new_with_label("Show key");
g_signal_connect(GTK_OBJECT (keys_tree_show_key_btn), "toggled", G_CALLBACK(on_view_key_clicked), NULL);
g_signal_connect(keys_tree_show_key_btn, "toggled", G_CALLBACK(on_view_key_clicked), NULL);
gtk_widget_set_size_request(keys_tree_show_key_btn, 100, 24);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(keys_tree_show_key_btn), true);
@ -619,12 +619,9 @@ void DisplayDialog()
"OnePAD Config",
NULL, /* parent window*/
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
GTK_STOCK_APPLY,
GTK_RESPONSE_APPLY,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
"_OK", GTK_RESPONSE_ACCEPT,
"_Apply", GTK_RESPONSE_APPLY,
"_Cancel", GTK_RESPONSE_REJECT,
NULL);
notebook = gtk_notebook_new();
@ -635,7 +632,7 @@ void DisplayDialog()
page[i] = create_notebook_page_dialog(i, btn[i], checkbox[i]);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), page[i], page_label[i]);
}
g_signal_connect(GTK_OBJECT (notebook), "switch-page", G_CALLBACK(pad_changed), NULL);
g_signal_connect(notebook, "switch-page", G_CALLBACK(pad_changed), NULL);
gtk_container_add (GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), notebook);

View File

@ -233,7 +233,7 @@ bool PollX11KeyboardMouseEvent(u32 &pkey)
if (ev != NULL)
{
if (ev->type == GDK_KEY_PRESS) {
pkey = ev->key.keyval != GDK_Escape ? ev->key.keyval : 0;
pkey = ev->key.keyval != GDK_KEY_Escape ? ev->key.keyval : 0;
return true;
} else if(ev->type == GDK_BUTTON_PRESS) {
pkey = ev->button.button;

View File

@ -207,19 +207,17 @@ void DisplayDialog()
"SPU2-X Config",
NULL, /* parent window*/
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
"OK", GTK_RESPONSE_ACCEPT,
"Cancel", GTK_RESPONSE_REJECT,
NULL);
int_label = gtk_label_new ("Interpolation:");
int_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "0 - Nearest (fastest/bad quality)");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "1 - Linear (simple/okay sound)");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "2 - Cubic (artificial highs)");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "3 - Hermite (better highs)");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "4 - Catmull-Rom (PS2-like/slow)");
int_box = gtk_combo_box_text_new ();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "0 - Nearest (fastest/bad quality)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "1 - Linear (simple/okay sound)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "2 - Cubic (artificial highs)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "3 - Hermite (better highs)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "4 - Catmull-Rom (PS2-like/slow)");
gtk_combo_box_set_active(GTK_COMBO_BOX(int_box), Interpolation);
effects_check = gtk_check_button_new_with_label("Disable Effects Processing");
@ -229,30 +227,34 @@ void DisplayDialog()
debug_button = gtk_button_new_with_label("Debug...");
mod_label = gtk_label_new ("Module:");
mod_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(mod_box), "0 - No Sound (emulate SPU2 only)");
gtk_combo_box_append_text(GTK_COMBO_BOX(mod_box), "1 - PortAudio (cross-platform)");
gtk_combo_box_append_text(GTK_COMBO_BOX(mod_box), "2 - SDL Audio (recommended for PulseAudio)");
//gtk_combo_box_append_text(GTK_COMBO_BOX(mod_box), "3 - Alsa (probably doesn't work)");
mod_box = gtk_combo_box_text_new ();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(mod_box), "0 - No Sound (emulate SPU2 only)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(mod_box), "1 - PortAudio (cross-platform)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(mod_box), "2 - SDL Audio (recommended for PulseAudio)");
//gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(mod_box), "3 - Alsa (probably doesn't work)");
gtk_combo_box_set_active(GTK_COMBO_BOX(mod_box), OutputModule);
api_label = gtk_label_new ("PortAudio API:");
api_box = gtk_combo_box_new_text ();
api_box = gtk_combo_box_text_new ();
// In order to keep it the menu light, I only put linux major api
gtk_combo_box_append_text(GTK_COMBO_BOX(api_box), "0 - ALSA (recommended)");
gtk_combo_box_append_text(GTK_COMBO_BOX(api_box), "1 - OSS (legacy)");
gtk_combo_box_append_text(GTK_COMBO_BOX(api_box), "2 - JACK");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(api_box), "0 - ALSA (recommended)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(api_box), "1 - OSS (legacy)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(api_box), "2 - JACK");
gtk_combo_box_set_active(GTK_COMBO_BOX(api_box), OutputAPI);
latency_label = gtk_label_new ("Latency:");
#if GTK_MAJOR_VERSION < 3
latency_slide = gtk_hscale_new_with_range(LATENCY_MIN, LATENCY_MAX, 5);
#else
latency_slide = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, LATENCY_MIN, LATENCY_MAX, 5);
#endif
gtk_range_set_value(GTK_RANGE(latency_slide), SndOutLatencyMS);
sync_label = gtk_label_new ("Synchronization Mode:");
sync_box = gtk_combo_box_new_text ();
gtk_combo_box_append_text(GTK_COMBO_BOX(sync_box), "TimeStretch (Recommended)");
gtk_combo_box_append_text(GTK_COMBO_BOX(sync_box), "Async Mix (Breaks some games!)");
gtk_combo_box_append_text(GTK_COMBO_BOX(sync_box), "None (Audio can skip.)");
sync_box = gtk_combo_box_text_new ();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sync_box), "TimeStretch (Recommended)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sync_box), "Async Mix (Breaks some games!)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(sync_box), "None (Audio can skip.)");
gtk_combo_box_set_active(GTK_COMBO_BOX(sync_box), SynchMode);
advanced_button = gtk_button_new_with_label("Advanced...");
@ -297,8 +299,8 @@ void DisplayDialog()
gtk_container_add (GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), main_frame);
gtk_widget_show_all (dialog);
g_signal_connect_swapped(GTK_OBJECT (advanced_button), "clicked", G_CALLBACK(advanced_dialog), advanced_button);
g_signal_connect_swapped(GTK_OBJECT (debug_button), "clicked", G_CALLBACK(debug_dialog), debug_button);
g_signal_connect_swapped(advanced_button, "clicked", G_CALLBACK(advanced_dialog), advanced_button);
g_signal_connect_swapped(debug_button, "clicked", G_CALLBACK(debug_dialog), debug_button);
return_value = gtk_dialog_run (GTK_DIALOG (dialog));

View File

@ -175,10 +175,8 @@ void DisplayDialog()
"Spu2-X Config",
NULL, // parent window
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
"OK", GTK_RESPONSE_ACCEPT,
"Cancel", GTK_RESPONSE_REJECT,
NULL);
main_box = gtk_hbox_new(false, 5);

View File

@ -94,10 +94,8 @@ namespace SoundtouchCfg
"Advanced Settings",
NULL, /* parent window*/
(GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
GTK_STOCK_OK,
GTK_RESPONSE_ACCEPT,
GTK_STOCK_CANCEL,
GTK_RESPONSE_REJECT,
"OK", GTK_RESPONSE_ACCEPT,
"Cancel", GTK_RESPONSE_REJECT,
NULL);
main_label = gtk_label_new ("These are advanced configuration options fine tuning time stretching behavior. Larger values are better for slowdown, while smaller values are better for speedup (more then 60 fps.). All options are in microseconds.");
@ -106,15 +104,27 @@ namespace SoundtouchCfg
default_button = gtk_button_new_with_label("Reset to Defaults");
seq_label = gtk_label_new("Sequence Length");
#if GTK_MAJOR_VERSION < 3
seq_slide = gtk_hscale_new_with_range(SequenceLen_Min, SequenceLen_Max, 2);
#else
seq_slide = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, SequenceLen_Min, SequenceLen_Max, 2);
#endif
gtk_range_set_value(GTK_RANGE(seq_slide), SequenceLenMS);
seek_label = gtk_label_new("Seek Window Size");
#if GTK_MAJOR_VERSION < 3
seek_slide = gtk_hscale_new_with_range(SeekWindow_Min, SeekWindow_Max, 1);
#else
seek_slide = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, SeekWindow_Min, SeekWindow_Max, 1);
#endif
gtk_range_set_value(GTK_RANGE(seek_slide), SeekWindowMS);
over_label = gtk_label_new("Overlap");
#if GTK_MAJOR_VERSION < 3
over_slide = gtk_hscale_new_with_range(Overlap_Min, Overlap_Max, 1);
#else
over_slide = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, Overlap_Min, Overlap_Max, 1);
#endif
gtk_range_set_value(GTK_RANGE(over_slide), OverlapMS);
main_box = gtk_vbox_new(false, 5);
@ -133,7 +143,7 @@ namespace SoundtouchCfg
gtk_container_add (GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), main_frame);
gtk_widget_show_all (dialog);
g_signal_connect_swapped(GTK_OBJECT (default_button), "clicked", G_CALLBACK(restore_defaults), default_button);
g_signal_connect_swapped(default_button, "clicked", G_CALLBACK(restore_defaults), default_button);
return_value = gtk_dialog_run (GTK_DIALOG (dialog));

View File

@ -288,11 +288,11 @@ void DisplayDialog()
gtk_widget_set_tooltip_text(log_check, "Used for Debugging.");
int_label = gtk_label_new("Interlacing:");
int_box = gtk_combo_box_new_text();
int_box = gtk_combo_box_text_new();
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "No Interlacing");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "Interlace 0");
gtk_combo_box_append_text(GTK_COMBO_BOX(int_box), "Interlace 1");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "No Interlacing");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "Interlace 0");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(int_box), "Interlace 1");
gtk_combo_box_set_active(GTK_COMBO_BOX(int_box), conf.interlace);
gtk_widget_set_tooltip_text(int_box, "Toggled by pressing F5 when running.");
int_holder = gtk_hbox_new(false, 5);
@ -300,11 +300,11 @@ void DisplayDialog()
gtk_box_pack_start(GTK_BOX(int_holder), int_box, false, false, 2);
bilinear_label = gtk_label_new("Bilinear Filtering:");
bilinear_box = gtk_combo_box_new_text();
bilinear_box = gtk_combo_box_text_new();
gtk_combo_box_append_text(GTK_COMBO_BOX(bilinear_box), "Off");
gtk_combo_box_append_text(GTK_COMBO_BOX(bilinear_box), "Normal");
gtk_combo_box_append_text(GTK_COMBO_BOX(bilinear_box), "Forced");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(bilinear_box), "Off");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(bilinear_box), "Normal");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(bilinear_box), "Forced");
gtk_combo_box_set_active(GTK_COMBO_BOX(bilinear_box), conf.bilinear);
gtk_widget_set_tooltip_text(bilinear_box, "Best quality is off. Turn on for speed. Toggled by pressing Shift + F5 when running.");
bilinear_holder = gtk_hbox_new(false, 5);
@ -312,13 +312,13 @@ void DisplayDialog()
gtk_box_pack_start(GTK_BOX(bilinear_holder), bilinear_box, false, false, 2);
aa_label = gtk_label_new("Anti-Aliasing:");
aa_box = gtk_combo_box_new_text();
aa_box = gtk_combo_box_text_new();
gtk_combo_box_append_text(GTK_COMBO_BOX(aa_box), "1X (None)");
gtk_combo_box_append_text(GTK_COMBO_BOX(aa_box), "2X");
gtk_combo_box_append_text(GTK_COMBO_BOX(aa_box), "4X");
gtk_combo_box_append_text(GTK_COMBO_BOX(aa_box), "8X");
gtk_combo_box_append_text(GTK_COMBO_BOX(aa_box), "16X");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aa_box), "1X (None)");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aa_box), "2X");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aa_box), "4X");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aa_box), "8X");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(aa_box), "16X");
gtk_combo_box_set_active(GTK_COMBO_BOX(aa_box), conf.aa);
gtk_widget_set_tooltip_text(aa_box, "Toggled by pressing F6 when running.");
aa_holder = gtk_hbox_new(false, 5);
@ -326,9 +326,9 @@ void DisplayDialog()
gtk_box_pack_start(GTK_BOX(aa_holder), aa_box, false, false, 2);
snap_label = gtk_label_new("Snapshot format:");
snap_box = gtk_combo_box_new_text();
gtk_combo_box_append_text(GTK_COMBO_BOX(snap_box), "JPEG");
gtk_combo_box_append_text(GTK_COMBO_BOX(snap_box), "TIFF");
snap_box = gtk_combo_box_text_new();
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(snap_box), "JPEG");
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(snap_box), "TIFF");
gtk_combo_box_set_active(GTK_COMBO_BOX(snap_box), conf.zz_options.tga_snap);
snap_holder = gtk_hbox_new(false, 5);
gtk_box_pack_start(GTK_BOX(snap_holder), snap_label, false, false, 2);
@ -392,7 +392,7 @@ void DisplayDialog()
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dis_hacks_check), (conf.disableHacks));
gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), main_frame);
g_signal_connect_swapped(GTK_OBJECT (advanced_button), "clicked", G_CALLBACK(DisplayAdvancedDialog), advanced_button);
g_signal_connect_swapped(advanced_button, "clicked", G_CALLBACK(DisplayAdvancedDialog), advanced_button);
tempHacks = conf.hacks;
gtk_widget_show_all(dialog);