Gtk part of riccardom cleanup patch 2200793
This commit is contained in:
parent
6c1299f189
commit
0ca8d61cf6
|
@ -35,10 +35,8 @@
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
#include "../MMU.h"
|
#include "../MMU.h"
|
||||||
//#include "../registers.h"
|
|
||||||
#include "../armcpu.h"
|
#include "../armcpu.h"
|
||||||
#include "../NDSSystem.h"
|
#include "../NDSSystem.h"
|
||||||
#include "../cflash.h"
|
#include "../cflash.h"
|
||||||
|
@ -46,6 +44,5 @@
|
||||||
#include "../ctrlssdl.h"
|
#include "../ctrlssdl.h"
|
||||||
#include "../types.h"
|
#include "../types.h"
|
||||||
#include "../render3D.h"
|
#include "../render3D.h"
|
||||||
#include "desmume.h"
|
|
||||||
|
|
||||||
#endif /* GLOBALS_H */
|
#endif /* GLOBALS_H */
|
||||||
|
|
|
@ -24,7 +24,10 @@
|
||||||
#include <gtk/gtkgl.h>
|
#include <gtk/gtkgl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
#include "desmume.h"
|
||||||
#include "../debug.h"
|
#include "../debug.h"
|
||||||
|
|
||||||
#ifdef GDB_STUB
|
#ifdef GDB_STUB
|
||||||
|
@ -80,8 +83,6 @@ static const GtkActionEntry action_entries[] = {
|
||||||
|
|
||||||
GtkActionGroup * action_group;
|
GtkActionGroup * action_group;
|
||||||
|
|
||||||
char * CONFIG_FILE;
|
|
||||||
|
|
||||||
SoundInterface_struct *SNDCoreList[] = {
|
SoundInterface_struct *SNDCoreList[] = {
|
||||||
&SNDDummy,
|
&SNDDummy,
|
||||||
&SNDFile,
|
&SNDFile,
|
||||||
|
@ -288,7 +289,7 @@ joinThread_gdb( void *thread_handle) {
|
||||||
|
|
||||||
u16 Keypad_Temp[NB_KEYS];
|
u16 Keypad_Temp[NB_KEYS];
|
||||||
|
|
||||||
static int Write_ConfigFile()
|
static int Write_ConfigFile(const gchar *config_file)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
GKeyFile * keyfile;
|
GKeyFile * keyfile;
|
||||||
|
@ -308,9 +309,9 @@ static int Write_ConfigFile()
|
||||||
// }
|
// }
|
||||||
|
|
||||||
contents = g_key_file_to_data(keyfile, 0, 0);
|
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)
|
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_free (contents);
|
||||||
|
|
||||||
g_key_file_free(keyfile);
|
g_key_file_free(keyfile);
|
||||||
|
@ -318,7 +319,7 @@ static int Write_ConfigFile()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int Read_ConfigFile()
|
static int Read_ConfigFile(const gchar *config_file)
|
||||||
{
|
{
|
||||||
int i, tmp;
|
int i, tmp;
|
||||||
GKeyFile * keyfile = g_key_file_new();
|
GKeyFile * keyfile = g_key_file_new();
|
||||||
|
@ -326,7 +327,7 @@ static int Read_ConfigFile()
|
||||||
|
|
||||||
load_default_config();
|
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 */
|
/* Load keyboard keys */
|
||||||
for(i = 0; i < NB_KEYS; i++) {
|
for(i = 0; i < NB_KEYS; i++) {
|
||||||
|
@ -382,7 +383,7 @@ float nds_screen_size_ratio = 1.0f;
|
||||||
static BOOL regMainLoop = FALSE;
|
static BOOL regMainLoop = FALSE;
|
||||||
|
|
||||||
static gint pStatusBar_Ctx;
|
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);
|
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)
|
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);
|
cflash_disk_image);
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Launch()
|
static void Launch()
|
||||||
|
@ -413,7 +413,8 @@ static void Launch()
|
||||||
desmume_resume();
|
desmume_resume();
|
||||||
|
|
||||||
if(!regMainLoop) {
|
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 ...");
|
pStatusBar_Change("Running ...");
|
||||||
|
@ -996,21 +997,22 @@ gint Modify_Key_Chosen = 0;
|
||||||
|
|
||||||
static void Modify_Key_Press(GtkWidget *w, GdkEventKey *e)
|
static void Modify_Key_Press(GtkWidget *w, GdkEventKey *e)
|
||||||
{
|
{
|
||||||
char YouPressed[128];
|
gchar *YouPressed;
|
||||||
|
|
||||||
Modify_Key_Chosen = e->keyval;
|
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);
|
gtk_label_set(GTK_LABEL(mkLabel), YouPressed);
|
||||||
|
g_free(YouPressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Modify_Key(GtkWidget* widget, gpointer data)
|
static void Modify_Key(GtkWidget* widget, gpointer data)
|
||||||
{
|
{
|
||||||
gint Key = GPOINTER_TO_INT(data);
|
gint Key = GPOINTER_TO_INT(data);
|
||||||
char Title[64];
|
|
||||||
char Key_Label[64];
|
|
||||||
|
|
||||||
GtkWidget *mkDialog;
|
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,
|
mkDialog = gtk_dialog_new_with_buttons(Title,
|
||||||
GTK_WINDOW(pWindow),
|
GTK_WINDOW(pWindow),
|
||||||
GTK_DIALOG_MODAL,
|
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);
|
g_signal_connect(G_OBJECT(mkDialog), "key_press_event", G_CALLBACK(Modify_Key_Press), NULL);
|
||||||
|
|
||||||
mkLabel = gtk_label_new(Title);
|
mkLabel = gtk_label_new(Title);
|
||||||
|
g_free(Title);
|
||||||
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mkDialog)->vbox), mkLabel,TRUE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mkDialog)->vbox), mkLabel,TRUE, FALSE, 0);
|
||||||
|
|
||||||
gtk_widget_show_all(GTK_DIALOG(mkDialog)->vbox);
|
gtk_widget_show_all(GTK_DIALOG(mkDialog)->vbox);
|
||||||
|
|
||||||
switch(gtk_dialog_run(GTK_DIALOG(mkDialog))) {
|
switch(gtk_dialog_run(GTK_DIALOG(mkDialog))) {
|
||||||
case GTK_RESPONSE_OK:
|
case GTK_RESPONSE_OK:
|
||||||
|
|
||||||
Keypad_Temp[Key] = Modify_Key_Chosen;
|
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);
|
gtk_button_set_label(GTK_BUTTON(widget), Key_Label);
|
||||||
|
g_free(Key_Label);
|
||||||
break;
|
break;
|
||||||
case GTK_RESPONSE_CANCEL:
|
case GTK_RESPONSE_CANCEL:
|
||||||
case GTK_RESPONSE_NONE:
|
case GTK_RESPONSE_NONE:
|
||||||
|
@ -1045,10 +1047,10 @@ static void Modify_Key(GtkWidget* widget, gpointer data)
|
||||||
|
|
||||||
static void Edit_Controls(GtkWidget* widget, gpointer data)
|
static void Edit_Controls(GtkWidget* widget, gpointer data)
|
||||||
{
|
{
|
||||||
char Key_Label[64];
|
|
||||||
int i;
|
|
||||||
GtkWidget *ecDialog;
|
GtkWidget *ecDialog;
|
||||||
GtkWidget *ecKey;
|
GtkWidget *ecKey;
|
||||||
|
gchar *Key_Label;
|
||||||
|
int i;
|
||||||
|
|
||||||
memcpy(&Keypad_Temp, &keyboard_cfg, sizeof(keyboard_cfg));
|
memcpy(&Keypad_Temp, &keyboard_cfg, sizeof(keyboard_cfg));
|
||||||
|
|
||||||
|
@ -1060,8 +1062,9 @@ static void Edit_Controls(GtkWidget* widget, gpointer data)
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
for(i = 0; i < NB_KEYS; i++) {
|
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);
|
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));
|
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);
|
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)
|
gboolean EmuLoop(gpointer data)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
gchar *Title;
|
||||||
|
|
||||||
if(desmume_running()) { /* Si on est en train d'executer le programme ... */
|
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;
|
fps_FrameCount += Frameskip + 1;
|
||||||
if(!fps_SecStart) fps_SecStart = SDL_GetTicks();
|
if(!fps_SecStart) fps_SecStart = SDL_GetTicks();
|
||||||
if(SDL_GetTicks() - fps_SecStart >= 1000) {
|
if(SDL_GetTicks() - fps_SecStart >= 1000) {
|
||||||
|
@ -1461,9 +1465,9 @@ gboolean EmuLoop(gpointer data)
|
||||||
fps = fps_FrameCount;
|
fps = fps_FrameCount;
|
||||||
fps_FrameCount = 0;
|
fps_FrameCount = 0;
|
||||||
|
|
||||||
char Title[32];
|
Title = g_strdup_printf("Desmume - %dfps", fps);
|
||||||
sprintf(Title, "Desmume - %dfps", fps);
|
|
||||||
gtk_window_set_title(GTK_WINDOW(pWindow), Title);
|
gtk_window_set_title(GTK_WINDOW(pWindow), Title);
|
||||||
|
g_free(Title);
|
||||||
}
|
}
|
||||||
|
|
||||||
desmume_cycle(); /* Emule ! */
|
desmume_cycle(); /* Emule ! */
|
||||||
|
@ -1523,6 +1527,7 @@ static void dui_set_accel_group(gpointer action, gpointer group) {
|
||||||
static int
|
static int
|
||||||
common_gtk_main( struct configured_features *my_config)
|
common_gtk_main( struct configured_features *my_config)
|
||||||
{
|
{
|
||||||
|
gchar * config_file;
|
||||||
int i;
|
int i;
|
||||||
SDL_TimerID limiter_timer;
|
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);
|
dTools_running = (BOOL*)malloc(sizeof(BOOL) * dTools_list_size);
|
||||||
for(i=0; i<dTools_list_size; i++) dTools_running[i]=FALSE;
|
for(i=0; i<dTools_list_size; i++) dTools_running[i]=FALSE;
|
||||||
|
|
||||||
CONFIG_FILE = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
|
config_file = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
|
||||||
Read_ConfigFile();
|
Read_ConfigFile(config_file);
|
||||||
|
|
||||||
/* Creation de la fenetre */
|
/* Creation de la fenetre */
|
||||||
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
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 *mSize_Radio[MAX_SCREENCOEFF];
|
||||||
GtkWidget *mLayers;
|
GtkWidget *mLayers;
|
||||||
GtkWidget *mLayers_Radio[10];
|
GtkWidget *mLayers_Radio[10];
|
||||||
|
gchar *buf;
|
||||||
|
|
||||||
|
|
||||||
mEmulation = gtk_menu_new();
|
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);
|
gtk_menu_shell_append(GTK_MENU_SHELL(mEmulation), pMenuItem);
|
||||||
|
|
||||||
for(i = 0; i < MAX_FRAMESKIP; i++) {
|
for(i = 0; i < MAX_FRAMESKIP; i++) {
|
||||||
char frameskipRadio_buf[16];
|
buf = g_strdup_printf("%d", i);
|
||||||
sprintf(frameskipRadio_buf, "%d", i);
|
if (i>0)
|
||||||
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);
|
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, frameskipRadio_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));
|
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]);
|
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);
|
gtk_menu_shell_append(GTK_MENU_SHELL(mGraphics), pMenuItem);
|
||||||
|
|
||||||
for(i = 1; i < MAX_SCREENCOEFF; i++) {
|
for(i = 1; i < MAX_SCREENCOEFF; i++) {
|
||||||
char sizeRadio_buf[16];
|
buf = g_strdup_printf("x%d", i);
|
||||||
sprintf(sizeRadio_buf, "x%d", i);
|
if (i>1)
|
||||||
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);
|
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, sizeRadio_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));
|
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]);
|
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();
|
SDL_Quit();
|
||||||
|
|
||||||
Write_ConfigFile();
|
Write_ConfigFile(config_file);
|
||||||
|
|
||||||
#ifdef GDB_STUB
|
#ifdef GDB_STUB
|
||||||
if ( my_config->arm9_gdb_port != 0) {
|
if ( my_config->arm9_gdb_port != 0) {
|
||||||
|
|
Loading…
Reference in New Issue