mirror of
https://github.com/vanilla-wiiu/vanilla.git
synced 2026-10-28 09:43:51 +00:00
1 parent
f1ff2eab44
commit
7cd43591db
7 files changed
+54
-9
No files matched your search
@@ -183,6 +183,7 @@ void vpi_config_init()
|
||||
vpi_config.fullscreen = 1;
|
||||
vpi_config_reset_default_controls_internal();
|
||||
vpi_config.cursor_in_fullscreen = 0;
|
||||
vpi_config.autoconnect = -1;
|
||||
|
||||
// Load from file
|
||||
char config_fn[1024];
|
||||
|
||||
@@ -32,6 +32,7 @@ typedef struct {
|
||||
int cursor_in_fullscreen;
|
||||
int fast_drm;
|
||||
int force_software_decode;
|
||||
int autoconnect;
|
||||
} vpi_config_t;
|
||||
|
||||
extern vpi_config_t vpi_config;
|
||||
|
||||
+30
-1
@@ -1,3 +1,4 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <vanilla.h>
|
||||
@@ -21,9 +22,12 @@ void display_cli_help(const char **argv);
|
||||
|
||||
int SDL_main(int argc, const char **argv)
|
||||
{
|
||||
int ret = 1;
|
||||
|
||||
// Determine whether we're overriding the fullscreen setting in the config
|
||||
int override_fs = -1;
|
||||
int force_swdec = 0;
|
||||
long autoconnect = -1;
|
||||
|
||||
for (int i = 1, consumed; i < argc; i += consumed) {
|
||||
consumed = -1;
|
||||
@@ -36,6 +40,21 @@ int SDL_main(int argc, const char **argv)
|
||||
} else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--swdec")) {
|
||||
force_swdec = 1;
|
||||
consumed = 1;
|
||||
} else if (!strcmp(argv[i], "-a") || !strcmp(argv[i], "--autoconnect")) {
|
||||
if (i + 1 >= argc) {
|
||||
vpilog("%s requires an argument\n", argv[i]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *s_acId = argv[i+1];
|
||||
char *endptr;
|
||||
autoconnect = strtol(s_acId, &endptr, 10);
|
||||
if (errno == ERANGE || endptr == s_acId || *endptr != '\0' || autoconnect < 0) {
|
||||
vpilog("\"%s\" was not a valid argument for %s\n", s_acId, argv[i]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
consumed = 2;
|
||||
} else if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) {
|
||||
display_cli_help(argv);
|
||||
return 0;
|
||||
@@ -51,7 +70,12 @@ int SDL_main(int argc, const char **argv)
|
||||
|
||||
// Load config
|
||||
vpi_config_init();
|
||||
if (autoconnect >= vpi_config.connected_console_count) {
|
||||
vpilog("Console %li does not exist for auto-connection\n", autoconnect);
|
||||
goto exit_config;
|
||||
}
|
||||
|
||||
vpi_config.autoconnect = autoconnect;
|
||||
vpi_config.force_software_decode |= force_swdec;
|
||||
|
||||
#ifndef VANILLA_GUI_ENABLE_WINDOWED
|
||||
@@ -68,7 +92,6 @@ int SDL_main(int argc, const char **argv)
|
||||
vui_context_t *vui = vui_alloc(SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
|
||||
// Initialize SDL2
|
||||
int ret = 1;
|
||||
if (vui_init_sdl(vui, vpi_config.fullscreen)) {
|
||||
vpilog("Failed to initialize VUI\n");
|
||||
goto exit;
|
||||
@@ -89,6 +112,7 @@ exit:
|
||||
|
||||
vui_free(vui);
|
||||
|
||||
exit_config:
|
||||
vpi_config_free();
|
||||
|
||||
return ret;
|
||||
@@ -100,5 +124,10 @@ void display_cli_help(const char **argv) {
|
||||
vpilog(" -w, --window Run Vanilla in a window (overrides config)\n");
|
||||
vpilog(" -f, --fullscreen Run Vanilla full screen (overrides config)\n");
|
||||
vpilog(" -s, --swdec Force software decoding (overrides config)\n");
|
||||
vpilog(" -a <id>,\n");
|
||||
vpilog(" --autoconnect <id> Auto-connect to a console on startup\n");
|
||||
vpilog(" (<id> is the index of the console in the\n");
|
||||
vpilog(" menu, e.g. 0 is the first console, 1 is\n");
|
||||
vpilog(" the second, etc.)\n");
|
||||
vpilog(" -h, --help Show this help message\n");
|
||||
}
|
||||
+6
-2
@@ -23,8 +23,12 @@ void vpi_menu_init(vui_context_t *vui)
|
||||
// Set microphone callback
|
||||
vui_mic_callback_set(vui, vpi_mic_callback, 0);
|
||||
|
||||
// Start with main menu
|
||||
vpi_menu_main(vui, 0);
|
||||
if (vpi_config.autoconnect != -1) {
|
||||
vpi_menu_game(vui, (void *)(intptr_t) vpi_config.autoconnect);
|
||||
} else {
|
||||
// Start with main menu
|
||||
vpi_menu_main(vui, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void get_valid_filename(const char *fmt, char *abs_buf, size_t size_abs_buf, const char *preferred_dir)
|
||||
|
||||
@@ -127,7 +127,7 @@ int vpi_menu_show_error(vui_context_t *vui, int status, int fade_fglayer, vui_bu
|
||||
return bglayer;
|
||||
}
|
||||
|
||||
static void do_quit(vui_context_t *vui, void *v)
|
||||
void vpi_menu_do_quit(vui_context_t *vui, void *v)
|
||||
{
|
||||
vui_reset(vui);
|
||||
vui_enable_background(vui, 0);
|
||||
@@ -136,5 +136,5 @@ static void do_quit(vui_context_t *vui, void *v)
|
||||
|
||||
void vpi_menu_quit_vanilla(vui_context_t *vui)
|
||||
{
|
||||
vui_transition_fade_black_in(vui, do_quit, 0);
|
||||
vui_transition_fade_black_in(vui, vpi_menu_do_quit, 0);
|
||||
}
|
||||
@@ -12,6 +12,7 @@ void vpi_menu_create_back_button(vui_context_t *vui, int layer, vui_button_callb
|
||||
void vpi_menu_start_pipe(vui_context_t *vui, int fade_fglayer, vui_callback_t success_action, void *success_data, vui_callback_t cancel_action, void *cancel_data);
|
||||
int vpi_menu_show_error(vui_context_t *vui, int status, int fade_fglayer, vui_button_callback_t ok_action, void *ok_data);
|
||||
|
||||
void vpi_menu_do_quit(vui_context_t *vui, void *v);
|
||||
void vpi_menu_quit_vanilla(vui_context_t *vui);
|
||||
|
||||
#endif // VANILLA_MENU_COMMON_H
|
||||
#endif // VANILLA_MENU_COMMON_H
|
||||
+12
-3
@@ -62,10 +62,19 @@ static struct {
|
||||
|
||||
static _Atomic int vpi_game_queued_error = VANILLA_SUCCESS;
|
||||
|
||||
void vpi_menu_game_exit(vui_context_t *vui, void *v)
|
||||
{
|
||||
if (vpi_config.autoconnect == -1) {
|
||||
vpi_menu_main(vui, v);
|
||||
} else {
|
||||
vpi_menu_do_quit(vui, v);
|
||||
}
|
||||
}
|
||||
|
||||
void back_to_main_menu(vui_context_t *vui, int button, void *v)
|
||||
{
|
||||
int layer = (intptr_t) v;
|
||||
vui_transition_fade_layer_out(vui, layer, vpi_menu_main, (void *) (intptr_t) 1);
|
||||
vui_transition_fade_layer_out(vui, layer, vpi_menu_game_exit, (void *) (intptr_t) 1);
|
||||
}
|
||||
|
||||
void show_error(vui_context_t *vui, void *v)
|
||||
@@ -95,7 +104,7 @@ void cancel_connect(vui_context_t *vui, int button, void *v)
|
||||
{
|
||||
int layer = (intptr_t) v;
|
||||
vanilla_stop();
|
||||
vui_transition_fade_layer_out(vui, layer, vpi_menu_main, 0);
|
||||
vui_transition_fade_layer_out(vui, layer, vpi_menu_game_exit, 0);
|
||||
}
|
||||
|
||||
static void update_battery_information(vui_context_t *vui, int64_t time)
|
||||
@@ -1068,7 +1077,7 @@ void vpi_display_update(vui_context_t *vui, int64_t time, void *v)
|
||||
if (vpi_game_queued_error != VANILLA_ERR_SHUTDOWN) {
|
||||
show_error(vui, (void*)(intptr_t) vpi_game_queued_error);
|
||||
} else {
|
||||
vpi_menu_main(vui, 0);
|
||||
vpi_menu_game_exit(vui, 0);
|
||||
}
|
||||
vpi_game_queued_error = VANILLA_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user