From 3fdda1aa0655b9472e00bc34751475de6fa071ca Mon Sep 17 00:00:00 2001 From: "Javier S. Pedro" Date: Sun, 27 Sep 2009 21:12:58 +0200 Subject: [PATCH] adding gconf schema for defaults, advanced setting --- Makefile | 28 ++++------ debian/drnoksnes.dirs | 1 + debian/drnoksnes.postrm | 25 +++++++++ debian/rules | 10 +++- gui/Makefile | 12 +++- gui/advanced.c | 109 ++++++++++++++++++++++++++++++++++++ gui/controls.c | 36 ++++-------- gui/drnoksnes.schemas.m4 | 140 ++++++++++++++++++++++++++++++++++++++++++++++ gui/plugin.c | 56 +++++++++++-------- gui/plugin.h | 4 ++ platform/hgw.cpp | 17 +++--- platform/hgw.h | 3 +- platform/sdlv.cpp | 2 +- 13 files changed, 364 insertions(+), 79 deletions(-) create mode 100644 debian/drnoksnes.postrm create mode 100644 gui/advanced.c create mode 100644 gui/drnoksnes.schemas.m4 diff --git a/Makefile b/Makefile index 6910b95..a29066a 100644 --- a/Makefile +++ b/Makefile @@ -5,23 +5,19 @@ LDLIBS := -lz $(shell sdl-config --libs) $(shell pkg-config --libs x11) -lpopt - -include config.mk -# GUI needs this -export DESTDIR - -# Configuration settings -CONF_BUILD_ASM_CPU=0 -CONF_BUILD_ASM_SPC700=0 -CONF_BUILD_ASM_SA1=0 # Still not there -CONF_XSP=0 - -# Sane defaults (override if needed) +# Sane defaults ifeq ($(ARCH),armel) - CONF_BUILD_ASM_CPU=1 - CONF_BUILD_ASM_SPC700=1 - CONF_XSP=1 - CONF_BUILD_MISC_ROUTINES=misc_armel + CONF_BUILD_ASM_CPU?=1 + CONF_BUILD_ASM_SPC700?=1 + CONF_BUILD_ASM_SA1?=0 # Still not there + CONF_XSP?=1 + CONF_BUILD_MISC_ROUTINES?=misc_armel else ifeq ($(ARCH),i386) - CONF_BUILD_MISC_ROUTINES=misc_i386 + CONF_BUILD_ASM_CPU?=0 + CONF_BUILD_ASM_SPC700?=0 + CONF_BUILD_ASM_SA1?=0 # Still not there + CONF_XSP?=0 + CONF_BUILD_MISC_ROUTINES?=misc_i386 endif # SNES stuff @@ -81,7 +77,7 @@ drnoksnes: $(OBJS) install: drnoksnes install drnoksnes $(DESTDIR)/usr/games - $(MAKE) -C gui install + $(MAKE) -C gui install DESTDIR="$(DESTDIR)" deps: $(DEPS) %.d: %.cpp diff --git a/debian/drnoksnes.dirs b/debian/drnoksnes.dirs index 4d8112a..b05d7c6 100644 --- a/debian/drnoksnes.dirs +++ b/debian/drnoksnes.dirs @@ -9,4 +9,5 @@ usr/share/icons/hicolor/26x26/hildon usr/share/icons/hicolor/40x40/hildon usr/share/icons/hicolor/48x48/hildon usr/share/icons/hicolor/scalable/hildon +usr/share/gconf/schemas usr/share/pixmaps diff --git a/debian/drnoksnes.postrm b/debian/drnoksnes.postrm new file mode 100644 index 0000000..b6da993 --- /dev/null +++ b/debian/drnoksnes.postrm @@ -0,0 +1,25 @@ +#!/bin/sh +# postrm script for drnoksnes +# +# see: dh_installdeb(1) + +set -e + +case "$1" in + purge) + gconftool-2 --recursive-unset /apps/maemo/drnoksnes || true + ;; + + remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 + diff --git a/debian/rules b/debian/rules index db3c0d1..2858a19 100755 --- a/debian/rules +++ b/debian/rules @@ -61,6 +61,10 @@ configure-stamp: $(M4) $(M4DEFS) debian/drnoksnes.postinst.m4 > debian/drnoksnes.postinst echo ARCH="$(ARCH)" > config.mk +ifeq ($(shell expr "$(MAEMO_VERSION)" ">" 4), 1) + # Maemo 5 devices do not support Xsp + echo CONF_XSP=0 >> config.mk +endif echo ASFLAGS="$(ASFLAGS)" >> config.mk echo CFLAGS="$(CFLAGS)" >> config.mk echo CXXFLAGS="$(CFLAGS)" >> config.mk @@ -68,6 +72,7 @@ configure-stamp: echo CFLAGS="$(GUI_CFLAGS)" > gui/config.mk echo LDFLAGS="$(GUI_LDFLAGS)" >> gui/config.mk + echo MAEMO_VERSION="$(MAEMO_VERSION)" >> gui/config.mk echo GAME_VERSION="$(GAME_VERSION)" >> gui/config.mk touch configure-stamp @@ -84,14 +89,14 @@ clean: rm -f build-stamp configure-stamp -$(MAKE) clean rm -f config.mk gui/config.mk - dh_clean + dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs - $(MAKE) DESTDIR=$(CURDIR)/debian/drnoksnes install + $(MAKE) DESTDIR=$(CURDIR)/debian/drnoksnes GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install # Build architecture-independent files here. binary-indep: build install @@ -105,6 +110,7 @@ binary-arch: build install # dh_installdocs # dh_installexamples # dh_installman + dh_gconf dh_link dh_strip --dbg-package=drnoksnes-dbg dh_compress diff --git a/gui/Makefile b/gui/Makefile index 35b844f..c52d593 100644 --- a/gui/Makefile +++ b/gui/Makefile @@ -19,11 +19,15 @@ M4:=m4 M4DEFS:= -DGAME_VERSION=$(GAME_VERSION) -DGAME_PLUGIN_PATH=$(GAME_PLUGIN_PATH) M4DEFS+= -DGAME_CONF_PATH=$(GAME_CONF_PATH) -DGAME_BIN_PATH=$(GAME_BIN_PATH) M4DEFS+= -DGAME_GAME_PATH=$(GAME_GAME_PATH) -DGAME_BANNER_PATH=$(GAME_BANNER_PATH) +ifdef MAEMO_VERSION +M4DEFS+= -DMAEMO -DMAEMO_MAJOR=$(MAEMO_VERSION) +endif -OBJS:=plugin.o state.o save.o controls.o cellrendererkey.o about.o +OBJS:=plugin.o state.o save.o controls.o cellrendererkey.o advanced.o about.o DATA_FILES:=drnoksnes.conf drnoksnes.desktop drnoksnes.game DATA_FILES+=drnoksnes.service drnoksnes.startup.service +DATA_FILES+=drnoksnes.schemas all: drnoksnes_plugin.so data @@ -52,6 +56,10 @@ install: all install -m 0644 icons/main_48.png $(DESTDIR)/usr/share/icons/hicolor/48x48/hildon/drnoksnes.png install -m 0644 icons/main_64.png $(DESTDIR)/usr/share/icons/hicolor/scalable/hildon/drnoksnes.png install -m 0644 icons/banner.png $(DESTDIR)$(GAME_BANNER_PATH) - + install -m 0644 drnoksnes.schemas $(DESTDIR)/usr/share/gconf/schemas/ +ifneq ($(GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL),1) + gconftool-2 --makefile-install-rule $(DESTDIR)/usr/share/gconf/schemas/drnoksnes.schemas > /dev/null +endif + .PHONY: all clean data install diff --git a/gui/advanced.c b/gui/advanced.c new file mode 100644 index 0000000..f4f023f --- /dev/null +++ b/gui/advanced.c @@ -0,0 +1,109 @@ +/* +* This file is part of DrNokSnes +* +* Copyright (C) 2009 Javier S. Pedro +* +* This software is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public License +* as published by the Free Software Foundation; either version 2.1 of +* the License, or (at your option) any later version. +* +* This software is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this software; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +* 02110-1301 USA +* +*/ + +#include +#include + +#if MAEMO_VERSION >= 5 +#include +#include +#else +#include +#endif + +#include "../platform/hgw.h" +#include "plugin.h" + +static GtkDialog* dialog; +#if MAEMO_VERSION >= 5 +static HildonCheckButton* accu_check; +#else +#include +static GtkCheckButton* xsp_check; +#endif + +static void load_settings() +{ +#if MAEMO_VERSION >= 5 + hildon_check_button_set_active(accu_check, + gconf_client_get_bool(gcc, kGConfTransparency, NULL)); +#else + gtk_toggle_button_set_active(xsp_check, + gconf_client_get_bool(gcc, kGConfXSP, NULL)); +#endif +} + +static void save_settings() +{ +#if MAEMO_VERSION >= 5 + gconf_client_set_bool(gcc, kGConfTransparency, + hildon_check_button_get_active(accu_check), NULL); +#else + gconf_client_set_bool(gcc, kGConfXSP, + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(xsp_check)), NULL); +#endif +} + +static void cb_dialog_response(GtkWidget * button, gint response, gpointer data) +{ + if (response == GTK_RESPONSE_OK) { + save_settings(); + } + + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +void advanced_dialog(GtkWindow* parent) +{ + dialog = GTK_DIALOG(gtk_dialog_new_with_buttons("Advanced settings", + parent, GTK_DIALOG_MODAL, + GTK_STOCK_OK, GTK_RESPONSE_OK, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL)); + + +#if MAEMO_VERSION >= 5 + accu_check = HILDON_CHECK_BUTTON(hildon_check_button_new( + HILDON_SIZE_FULLSCREEN_WIDTH | HILDON_SIZE_FINGER_HEIGHT)); + gtk_button_set_label(GTK_BUTTON(accu_check), "Accurate graphics"); + gtk_box_pack_start(GTK_BOX(dialog->vbox), GTK_WIDGET(accu_check), FALSE, FALSE, 0); +#else + xsp_check = GTK_CHECK_BUTTON(gtk_check_button_new()); + GtkWidget* xsp_caption = hildon_caption_new(NULL, + "Use hardware scaling", GTK_WIDGET(xsp_check), NULL, + HILDON_CAPTION_OPTIONAL); + gtk_box_pack_start_defaults(GTK_BOX(dialog->vbox), GTK_WIDGET(xsp_caption)); +#endif + + load_settings(); + +#if MAEMO_VERSION >= 5 + gtk_window_resize(GTK_WINDOW(dialog), 800, 300); +#else + gtk_window_resize(GTK_WINDOW(dialog), 400, 200); +#endif + + g_signal_connect(G_OBJECT(dialog), "response", + G_CALLBACK (cb_dialog_response), NULL); + + gtk_widget_show_all(GTK_WIDGET(dialog)); +} + diff --git a/gui/controls.c b/gui/controls.c index a452adb..9face43 100644 --- a/gui/controls.c +++ b/gui/controls.c @@ -236,35 +236,21 @@ static void cb_dialog_response(GtkWidget * button, gpointer data) void controls_setup() { - GConfValue* mapping = gconf_client_get(gcc, kGConfMapping, NULL); int i; - if (!mapping) { - // Key not set; setup defaults - for (i = 0; buttons[i].name; i++) { - gconf_client_set_int(gcc, buttons[i].gconf_key, - buttons[i].default_scancode, NULL); - } + // Check if all the keys exist. If not, fill them with default values. + // XXX Note that not filling a key will cause HGW to crash. - g_debug("Loading default key mappings\n"); + gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + for (i = 0; buttons[i].name; i++) { + GConfValue *mapping = gconf_client_get(gcc, buttons[i].gconf_key, NULL); - gconf_client_set_int(gcc, kGConfMapping, 1, NULL); - } else { - // If this key is set, consider defaults loaded. - gconf_value_free(mapping); - - // We still have to check if all the keys exist - gconf_client_preload(gcc, kGConfKeysPath, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); - for (i = 0; buttons[i].name; i++) { - mapping = gconf_client_get(gcc, buttons[i].gconf_key, NULL); - - if (!mapping) { - // Not set; set to default. - gconf_client_set_int(gcc, buttons[i].gconf_key, - buttons[i].default_scancode, NULL); - } else { - gconf_value_free(mapping); - } + if (!mapping) { + // Not set; set to default. + gconf_client_set_int(gcc, buttons[i].gconf_key, + buttons[i].default_scancode, NULL); + } else { + gconf_value_free(mapping); } } } diff --git a/gui/drnoksnes.schemas.m4 b/gui/drnoksnes.schemas.m4 new file mode 100644 index 0000000..5179c20 --- /dev/null +++ b/gui/drnoksnes.schemas.m4 @@ -0,0 +1,140 @@ + + + + + /schemas/apps/maemo/drnoksnes/display-framerate + /apps/maemo/drnoksnes/display-framerate + drnoksnes + bool + false + + Display framerate + + Display a framerate counter in the lower left corner. + + + + + /schemas/apps/maemo/drnoksnes/display-controls + /apps/maemo/drnoksnes/display-controls + drnoksnes + bool + false + + Display onscreen controls + + Display a grid with the onscreen controls if touchscreen controls + are enabled. + + + + + /schemas/apps/maemo/drnoksnes/frameskip + /apps/maemo/drnoksnes/frameskip + drnoksnes + int + 0 + + Frameskip + + Skip this many frames after rendering one frame (or 0 for auto). + + + + + /schemas/apps/maemo/drnoksnes/mapping + /apps/maemo/drnoksnes/mapping + drnoksnes + int + 1 + + Key mapping setting + + Set to 0 for None, 1 for Keyboard only, etc. + + + + + /schemas/apps/maemo/drnoksnes/rom + /apps/maemo/drnoksnes/rom + drnoksnes + string + + + ROM to load + + Full path to the ROM file to load on next startup. + + + + + /schemas/apps/maemo/drnoksnes/sound + /apps/maemo/drnoksnes/sound + drnoksnes + bool + true + + Enable sound + + Enable emulation and output of sound. + + + +ifelse(eval(MAEMO_MAJOR < 5), 1, `dnl + + /schemas/apps/maemo/drnoksnes/xsp + /apps/maemo/drnoksnes/xsp + drnoksnes + bool + true + + Pixel doubling + + Enable the use of the hardware pixel doubler. Without it, + a slower, lower quality software scaler is used. + + + +', `')dnl + + /schemas/apps/maemo/drnoksnes/speedhacks + /apps/maemo/drnoksnes/speedhacks + drnoksnes + int + 0 + + Speedhacks + + Set to 0 to disable speedhacks, to 1 to enable safe speedhacks, + to 2 to enable all speedhacks. + + + + + /schemas/apps/maemo/drnoksnes/transparency + /apps/maemo/drnoksnes/transparency + drnoksnes + bool + ifelse(eval(MAEMO_MAJOR < 5), 1, `false', `true') + + Transparency + + Enable emulated transparency effects. + + + + + /schemas/apps/maemo/drnoksnes/turbo + /apps/maemo/drnoksnes/turbo + drnoksnes + bool + false + + Turbo mode + + Do not sleep at all between frames. + + + + + diff --git a/gui/plugin.c b/gui/plugin.c index 02378aa..76bb87b 100644 --- a/gui/plugin.c +++ b/gui/plugin.c @@ -73,7 +73,7 @@ gboolean current_rom_file_exists = FALSE; #if MAEMO_VERSION >= 5 static GtkBox* buttons_hbox; static HildonButton* select_rom_btn; -static HildonCheckButton* audio_check; +static HildonCheckButton* sound_check; static HildonPickerButton* framerate_picker; static HildonCheckButton* display_fps_check; static HildonCheckButton* turbo_check; @@ -81,7 +81,7 @@ static HildonCheckButton* turbo_check; #else static GtkButton* select_rom_btn; static GtkLabel* rom_label; -static GtkCheckButton* audio_check; +static GtkCheckButton* sound_check; static GtkCheckButton* turbo_check; static GtkComboBox* framerate_combo; static GtkCheckButton* accu_check; @@ -166,6 +166,11 @@ static void controls_item_callback(GtkWidget * button, gpointer data) controls_dialog(get_parent_window()); } +static void advanced_item_callback(GtkWidget * button, gpointer data) +{ + advanced_dialog(get_parent_window()); +} + static void about_item_callback(GtkWidget * button, gpointer data) { about_dialog(get_parent_window()); @@ -217,10 +222,10 @@ static GtkWidget * load_plugin(void) #if MAEMO_VERSION >= 5 { GtkBox* opt_hbox1 = GTK_BOX(gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT)); - audio_check = + sound_check = HILDON_CHECK_BUTTON(hildon_check_button_new( HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT)); - gtk_button_set_label(GTK_BUTTON(audio_check), "Sound"); + gtk_button_set_label(GTK_BUTTON(sound_check), "Sound"); framerate_picker = HILDON_PICKER_BUTTON(hildon_picker_button_new( HILDON_SIZE_AUTO, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL)); @@ -252,14 +257,14 @@ static GtkWidget * load_plugin(void) gtk_box_pack_start(GTK_BOX(framerate_sel), GTK_WIDGET(framerate_sel_box), FALSE, FALSE, 0); gtk_widget_show_all(GTK_WIDGET(framerate_sel_box)); - gtk_box_pack_start_defaults(opt_hbox1, GTK_WIDGET(audio_check)); + gtk_box_pack_start_defaults(opt_hbox1, GTK_WIDGET(sound_check)); gtk_box_pack_start_defaults(opt_hbox1, GTK_WIDGET(framerate_picker)); gtk_box_pack_start(GTK_BOX(parent), GTK_WIDGET(opt_hbox1), FALSE, FALSE, 0); } #else { GtkBox* opt_hbox1 = GTK_BOX(gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT)); - audio_check = + sound_check = GTK_CHECK_BUTTON(gtk_check_button_new_with_label("Enable sound")); turbo_check = @@ -269,7 +274,7 @@ static GtkWidget * load_plugin(void) speedhacks_combo = GTK_COMBO_BOX(gtk_combo_box_new_text()); - gtk_box_pack_start(opt_hbox1, GTK_WIDGET(audio_check), FALSE, FALSE, 0); + gtk_box_pack_start(opt_hbox1, GTK_WIDGET(sound_check), FALSE, FALSE, 0); gtk_box_pack_start(opt_hbox1, GTK_WIDGET(display_fps_check), TRUE, FALSE, 0); gtk_box_pack_start(opt_hbox1, GTK_WIDGET(turbo_check), FALSE, FALSE, 0); gtk_box_pack_start_defaults(GTK_BOX(parent), GTK_WIDGET(opt_hbox1)); @@ -310,8 +315,8 @@ static GtkWidget * load_plugin(void) /* Load current configuration from GConf */ #if MAEMO_VERSION >= 5 - hildon_check_button_set_active(audio_check, - !gconf_client_get_bool(gcc, kGConfDisableAudio, NULL)); + hildon_check_button_set_active(sound_check, + gconf_client_get_bool(gcc, kGConfSound, NULL)); hildon_picker_button_set_active(framerate_picker, gconf_client_get_int(gcc, kGConfFrameskip, NULL)); hildon_check_button_set_active(turbo_check, @@ -319,8 +324,8 @@ static GtkWidget * load_plugin(void) hildon_check_button_set_active(display_fps_check, gconf_client_get_bool(gcc, kGConfDisplayFramerate, NULL)); #else - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(audio_check), - !gconf_client_get_bool(gcc, kGConfDisableAudio, NULL)); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sound_check), + gconf_client_get_bool(gcc, kGConfSound, NULL)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(turbo_check), gconf_client_get_bool(gcc, kGConfTurboMode, NULL)); gtk_combo_box_set_active(framerate_combo, @@ -357,22 +362,17 @@ static void write_config(void) { /* Write current settings to gconf */ #if MAEMO_VERSION >= 5 - gconf_client_set_bool(gcc, kGConfDisableAudio, - !hildon_check_button_get_active(audio_check), NULL); + gconf_client_set_bool(gcc, kGConfSound, + hildon_check_button_get_active(sound_check), NULL); gconf_client_set_int(gcc, kGConfFrameskip, hildon_picker_button_get_active(framerate_picker), NULL); gconf_client_set_bool(gcc, kGConfDisplayFramerate, hildon_check_button_get_active(display_fps_check), NULL); gconf_client_set_bool(gcc, kGConfTurboMode, hildon_check_button_get_active(turbo_check), NULL); - - // For now, transparencies are always enabled in Fremantle - gconf_client_set_bool(gcc, kGConfTransparency, TRUE, NULL); - // Speedhacks always disabled - gconf_client_set_int(gcc, kGConfSpeedhacks, FALSE, NULL); #else - gconf_client_set_bool(gcc, kGConfDisableAudio, - !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(audio_check)), NULL); + gconf_client_set_bool(gcc, kGConfSound, + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sound_check)), NULL); gconf_client_set_bool(gcc, kGConfTurboMode, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(turbo_check)), NULL); gconf_client_set_int(gcc, kGConfFrameskip, @@ -398,13 +398,15 @@ static GtkWidget **load_menu(guint *nitems) const HildonSizeType button_size = HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH; menu_items[0] = hildon_gtk_button_new(button_size); - gtk_button_set_label(GTK_BUTTON(menu_items[0]), "Placeholder"); + gtk_button_set_label(GTK_BUTTON(menu_items[0]), "Settings…"); menu_items[1] = hildon_gtk_button_new(button_size); gtk_button_set_label(GTK_BUTTON(menu_items[1]), "Controls…"); menu_items[2] = hildon_gtk_button_new(button_size); gtk_button_set_label(GTK_BUTTON(menu_items[2]), "About…"); *nitems = 3; + g_signal_connect(G_OBJECT(menu_items[0]), "clicked", + G_CALLBACK(advanced_item_callback), NULL); g_signal_connect(G_OBJECT(menu_items[1]), "clicked", G_CALLBACK(controls_item_callback), NULL); g_signal_connect(G_OBJECT(menu_items[2]), "clicked", @@ -415,15 +417,21 @@ static GtkWidget **load_menu(guint *nitems) *nitems = 2; GtkMenu* settings_menu = GTK_MENU(gtk_menu_new()); - GtkMenuItem* controls_item = - GTK_MENU_ITEM(gtk_menu_item_new_with_label("Controls…")); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_items[0]), GTK_WIDGET(settings_menu)); + + GtkMenuItem* controls_item = + GTK_MENU_ITEM(gtk_menu_item_new_with_label("Controls…")); gtk_menu_append(GTK_MENU(settings_menu), GTK_WIDGET(controls_item)); + GtkMenuItem* advanced_item = + GTK_MENU_ITEM(gtk_menu_item_new_with_label("Advanced…")); + gtk_menu_append(GTK_MENU(settings_menu), GTK_WIDGET(advanced_item)); + g_signal_connect(G_OBJECT(controls_item), "activate", G_CALLBACK(controls_item_callback), NULL); + g_signal_connect(G_OBJECT(advanced_item), "activate", + G_CALLBACK(advanced_item_callback), NULL); g_signal_connect(G_OBJECT(menu_items[1]), "activate", G_CALLBACK(about_item_callback), NULL); #endif diff --git a/gui/plugin.h b/gui/plugin.h index 65d5795..a883f84 100644 --- a/gui/plugin.h +++ b/gui/plugin.h @@ -24,9 +24,13 @@ void save_save(GtkWindow* parent); void save_save_as(GtkWindow* parent); /* controls.c */ +/** Fill in default controls */ void controls_setup(); void controls_dialog(GtkWindow* parent); +/* advanced.c */ +void advanced_dialog(GtkWindow* parent); + /* about.c */ void about_dialog(GtkWindow* parent); diff --git a/platform/hgw.cpp b/platform/hgw.cpp index ef5799a..022b857 100644 --- a/platform/hgw.cpp +++ b/platform/hgw.cpp @@ -65,9 +65,9 @@ void HgwConfig() DIE("No Rom in Gconf!"); } - char no_audio = FALSE; - if (hgw_conf_request_bool(hgw, kGConfDisableAudio, &no_audio) == HGW_ERR_NONE) { - Config.enableAudio = no_audio ? false : true; + char sound = FALSE; + if (hgw_conf_request_bool(hgw, kGConfSound, &sound) == HGW_ERR_NONE) { + Config.enableAudio = sound ? true : false; } char turbo = FALSE; @@ -85,14 +85,15 @@ void HgwConfig() Settings.Transparency = transparency ? TRUE : FALSE; } - char scaler[256]; - scaler[0] = '\0'; - if (hgw_conf_request_string(hgw, kGConfScaler, scaler) == HGW_ERR_NONE) { - if (strlen(scaler) > 0) { +#if CONF_XSP + char xsp = TRUE; + if (hgw_conf_request_bool(hgw, kGConfXSP, xsp) == HGW_ERR_NONE) { + if (!xsp) { free(Config.scaler); - Config.scaler = strdup(scaler); + Config.scaler = strdup("2x"); } } +#endif char displayFramerate = FALSE; if (hgw_conf_request_bool(hgw, kGConfDisplayFramerate, &displayFramerate) == HGW_ERR_NONE) { diff --git a/platform/hgw.h b/platform/hgw.h index 07c7d37..6c964a6 100644 --- a/platform/hgw.h +++ b/platform/hgw.h @@ -17,7 +17,7 @@ void HgwPollEvents(); #define kGConfPath "/apps/maemo/drnoksnes" #define kGConfRomFile kGConfPath "/" "rom" -#define kGConfDisableAudio kGConfPath "/" "no_audio" +#define kGConfSound kGConfPath "/" "sound" #define kGConfTurboMode kGConfPath "/" "turbo" #define kGConfFrameskip kGConfPath "/" "frameskip" #define kGConfTransparency kGConfPath "/" "transparency" @@ -25,6 +25,7 @@ void HgwPollEvents(); #define kGConfDisplayFramerate kGConfPath "/" "display-framerate" #define kGConfDisplayControls kGConfPath "/" "display-controls" #define kGConfSpeedhacks kGConfPath "/" "speedhacks" +#define kGConfXSP kGConfPath "/" "xsp" #define kGConfMapping kGConfPath "/" "mapping" #define kGConfKeysPath kGConfPath "/" "keys" diff --git a/platform/sdlv.cpp b/platform/sdlv.cpp index 8ccb574..e48c6fa 100644 --- a/platform/sdlv.cpp +++ b/platform/sdlv.cpp @@ -306,7 +306,7 @@ public: + (m_area.y * pitch); }; - int getDrawBufferPitch() const + unsigned int getDrawBufferPitch() const { return screen->pitch; }; -- 1.7.9.5