Gtk part of riccardom cleanup patch 2200793

This commit is contained in:
yabause 2008-10-31 14:02:54 +00:00
parent 6c1299f189
commit 0ca8d61cf6
2 changed files with 47 additions and 40 deletions

View File

@ -35,10 +35,8 @@
#include <pthread.h>
#include <SDL.h>
#include <gtk/gtk.h>
#include "../MMU.h"
//#include "../registers.h"
#include "../armcpu.h"
#include "../NDSSystem.h"
#include "../cflash.h"
@ -46,6 +44,5 @@
#include "../ctrlssdl.h"
#include "../types.h"
#include "../render3D.h"
#include "desmume.h"
#endif /* GLOBALS_H */

View File

@ -24,7 +24,10 @@
#include <gtk/gtkgl.h>
#endif
#include <gtk/gtk.h>
#include "globals.h"
#include "desmume.h"
#include "../debug.h"
#ifdef GDB_STUB
@ -80,8 +83,6 @@ static const GtkActionEntry action_entries[] = {
GtkActionGroup * action_group;
char * CONFIG_FILE;
SoundInterface_struct *SNDCoreList[] = {
&SNDDummy,
&SNDFile,
@ -288,7 +289,7 @@ joinThread_gdb( void *thread_handle) {
u16 Keypad_Temp[NB_KEYS];
static int Write_ConfigFile()
static int Write_ConfigFile(const gchar *config_file)
{
int i;
GKeyFile * keyfile;
@ -308,9 +309,9 @@ static int Write_ConfigFile()
// }
contents = g_key_file_to_data(keyfile, 0, 0);
ret = g_file_set_contents(CONFIG_FILE, contents, -1, NULL);
ret = g_file_set_contents(config_file, contents, -1, NULL);
if (!ret)
fprintf(stderr, "Failed to write to %s\n", CONFIG_FILE);
fprintf(stderr, "Failed to write to %s\n", config_file);
g_free (contents);
g_key_file_free(keyfile);
@ -318,7 +319,7 @@ static int Write_ConfigFile()
return 0;
}
static int Read_ConfigFile()
static int Read_ConfigFile(const gchar *config_file)
{
int i, tmp;
GKeyFile * keyfile = g_key_file_new();
@ -326,7 +327,7 @@ static int Read_ConfigFile()
load_default_config();
g_key_file_load_from_file(keyfile, CONFIG_FILE, G_KEY_FILE_NONE, 0);
g_key_file_load_from_file(keyfile, config_file, G_KEY_FILE_NONE, 0);
/* Load keyboard keys */
for(i = 0; i < NB_KEYS; i++) {
@ -382,7 +383,7 @@ float nds_screen_size_ratio = 1.0f;
static BOOL regMainLoop = FALSE;
static gint pStatusBar_Ctx;
#define pStatusBar_Change(t) gtk_statusbar_pop(GTK_STATUSBAR(pStatusBar), pStatusBar_Ctx); gtk_statusbar_push(GTK_STATUSBAR(pStatusBar), pStatusBar_Ctx, t);
#define pStatusBar_Change(t) gtk_statusbar_pop(GTK_STATUSBAR(pStatusBar), pStatusBar_Ctx); gtk_statusbar_push(GTK_STATUSBAR(pStatusBar), pStatusBar_Ctx, t)
gboolean EmuLoop(gpointer data);
@ -403,9 +404,8 @@ static void About(GtkWidget* widget, gpointer data)
static int Open(const char *filename, const char *cflash_disk_image)
{
int i = NDS_LoadROM( filename, MC_TYPE_AUTODETECT, 1,
return NDS_LoadROM( filename, MC_TYPE_AUTODETECT, 1,
cflash_disk_image);
return i;
}
static void Launch()
@ -413,7 +413,8 @@ static void Launch()
desmume_resume();
if(!regMainLoop) {
g_idle_add_full(EMULOOP_PRIO, &EmuLoop, pWindow, NULL); regMainLoop = TRUE;
g_idle_add_full(EMULOOP_PRIO, &EmuLoop, pWindow, NULL);
regMainLoop = TRUE;
}
pStatusBar_Change("Running ...");
@ -996,21 +997,22 @@ gint Modify_Key_Chosen = 0;
static void Modify_Key_Press(GtkWidget *w, GdkEventKey *e)
{
char YouPressed[128];
gchar *YouPressed;
Modify_Key_Chosen = e->keyval;
sprintf(YouPressed, "You pressed : %s\nClick OK to keep this key.", gdk_keyval_name(e->keyval));
YouPressed = g_strdup_printf("You pressed : %s\nClick OK to keep this key.", gdk_keyval_name(e->keyval));
gtk_label_set(GTK_LABEL(mkLabel), YouPressed);
g_free(YouPressed);
}
static void Modify_Key(GtkWidget* widget, gpointer data)
{
gint Key = GPOINTER_TO_INT(data);
char Title[64];
char Key_Label[64];
GtkWidget *mkDialog;
gchar *Key_Label;
gchar *Title;
sprintf(Title, "Press \"%s\" key ...\n", key_names[Key]);
Title = g_strdup_printf("Press \"%s\" key ...\n", key_names[Key]);
mkDialog = gtk_dialog_new_with_buttons(Title,
GTK_WINDOW(pWindow),
GTK_DIALOG_MODAL,
@ -1021,17 +1023,17 @@ static void Modify_Key(GtkWidget* widget, gpointer data)
g_signal_connect(G_OBJECT(mkDialog), "key_press_event", G_CALLBACK(Modify_Key_Press), NULL);
mkLabel = gtk_label_new(Title);
g_free(Title);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mkDialog)->vbox), mkLabel,TRUE, FALSE, 0);
gtk_widget_show_all(GTK_DIALOG(mkDialog)->vbox);
switch(gtk_dialog_run(GTK_DIALOG(mkDialog))) {
case GTK_RESPONSE_OK:
Keypad_Temp[Key] = Modify_Key_Chosen;
sprintf(Key_Label, "%s (%d)", key_names[Key], Keypad_Temp[Key]);
Key_Label = g_strdup_printf("%s (%d)", key_names[Key], Keypad_Temp[Key]);
gtk_button_set_label(GTK_BUTTON(widget), Key_Label);
g_free(Key_Label);
break;
case GTK_RESPONSE_CANCEL:
case GTK_RESPONSE_NONE:
@ -1045,10 +1047,10 @@ static void Modify_Key(GtkWidget* widget, gpointer data)
static void Edit_Controls(GtkWidget* widget, gpointer data)
{
char Key_Label[64];
int i;
GtkWidget *ecDialog;
GtkWidget *ecKey;
gchar *Key_Label;
int i;
memcpy(&Keypad_Temp, &keyboard_cfg, sizeof(keyboard_cfg));
@ -1060,8 +1062,9 @@ static void Edit_Controls(GtkWidget* widget, gpointer data)
NULL);
for(i = 0; i < NB_KEYS; i++) {
sprintf(Key_Label, "%s (%s)", key_names[i], gdk_keyval_name(Keypad_Temp[i]));
Key_Label = g_strdup_printf("%s (%s)", key_names[i], gdk_keyval_name(Keypad_Temp[i]));
ecKey = gtk_button_new_with_label(Key_Label);
g_free(Key_Label);
g_signal_connect(G_OBJECT(ecKey), "clicked", G_CALLBACK(Modify_Key), GINT_TO_POINTER(i));
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(ecDialog)->vbox), ecKey,TRUE, FALSE, 0);
}
@ -1451,9 +1454,10 @@ Uint32 fps, fps_SecStart, fps_FrameCount;
gboolean EmuLoop(gpointer data)
{
unsigned int i;
gchar *Title;
if(desmume_running()) { /* Si on est en train d'executer le programme ... */
static int limiter_frame_counter = 0;
static int limiter_frame_counter = 0;
fps_FrameCount += Frameskip + 1;
if(!fps_SecStart) fps_SecStart = SDL_GetTicks();
if(SDL_GetTicks() - fps_SecStart >= 1000) {
@ -1461,9 +1465,9 @@ gboolean EmuLoop(gpointer data)
fps = fps_FrameCount;
fps_FrameCount = 0;
char Title[32];
sprintf(Title, "Desmume - %dfps", fps);
Title = g_strdup_printf("Desmume - %dfps", fps);
gtk_window_set_title(GTK_WINDOW(pWindow), Title);
g_free(Title);
}
desmume_cycle(); /* Emule ! */
@ -1523,6 +1527,7 @@ static void dui_set_accel_group(gpointer action, gpointer group) {
static int
common_gtk_main( struct configured_features *my_config)
{
gchar * config_file;
int i;
SDL_TimerID limiter_timer;
@ -1638,8 +1643,8 @@ common_gtk_main( struct configured_features *my_config)
dTools_running = (BOOL*)malloc(sizeof(BOOL) * dTools_list_size);
for(i=0; i<dTools_list_size; i++) dTools_running[i]=FALSE;
CONFIG_FILE = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
Read_ConfigFile();
config_file = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
Read_ConfigFile(config_file);
/* Creation de la fenetre */
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
@ -1699,6 +1704,7 @@ common_gtk_main( struct configured_features *my_config)
GtkWidget *mSize_Radio[MAX_SCREENCOEFF];
GtkWidget *mLayers;
GtkWidget *mLayers_Radio[10];
gchar *buf;
mEmulation = gtk_menu_new();
@ -1718,10 +1724,12 @@ common_gtk_main( struct configured_features *my_config)
gtk_menu_shell_append(GTK_MENU_SHELL(mEmulation), pMenuItem);
for(i = 0; i < MAX_FRAMESKIP; i++) {
char frameskipRadio_buf[16];
sprintf(frameskipRadio_buf, "%d", i);
if(i>0) mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mFrameskip_Radio[i-1]), frameskipRadio_buf);
else mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, frameskipRadio_buf);
buf = g_strdup_printf("%d", i);
if (i>0)
mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mFrameskip_Radio[i-1]), buf);
else
mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, buf);
g_free(buf);
g_signal_connect(G_OBJECT(mFrameskip_Radio[i]), "activate", G_CALLBACK(Modify_Frameskip), GINT_TO_POINTER(i));
gtk_menu_shell_append(GTK_MENU_SHELL(mFrameskip), mFrameskip_Radio[i]);
}
@ -1740,10 +1748,12 @@ common_gtk_main( struct configured_features *my_config)
gtk_menu_shell_append(GTK_MENU_SHELL(mGraphics), pMenuItem);
for(i = 1; i < MAX_SCREENCOEFF; i++) {
char sizeRadio_buf[16];
sprintf(sizeRadio_buf, "x%d", i);
if(i>1) mSize_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mSize_Radio[i-1]), sizeRadio_buf);
else mSize_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, sizeRadio_buf);
buf = g_strdup_printf("x%d", i);
if (i>1)
mSize_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mSize_Radio[i-1]), buf);
else
mSize_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, buf);
g_free(buf);
g_signal_connect(G_OBJECT(mSize_Radio[i]), "activate", G_CALLBACK(Modify_ScreenCoeff), GINT_TO_POINTER(i));
gtk_menu_shell_append(GTK_MENU_SHELL(mSize), mSize_Radio[i]);
}
@ -2031,7 +2041,7 @@ common_gtk_main( struct configured_features *my_config)
SDL_Quit();
Write_ConfigFile();
Write_ConfigFile(config_file);
#ifdef GDB_STUB
if ( my_config->arm9_gdb_port != 0) {