gui: add config entry for recording/screenshot dir

Fixes #339
This commit is contained in:
itsmattkc committed 2026-02-15 09:41:04 -08:00
1 parent a161a2b9a4
commit 1bec364c35
5 files changed
+25 -13

No files matched your search

+6
View File
@@ -83,6 +83,8 @@ void vpi_config_save()
sprintf(buf, "%i", vpi_config.cursor_in_fullscreen);
xmlTextWriterWriteElement(writer, BAD_CAST "cursorinfullscreen", BAD_CAST buf);
xmlTextWriterWriteElement(writer, BAD_CAST "recordingdir", BAD_CAST vpi_config.recording_dir);
xmlTextWriterEndElement(writer); // vanilla
xmlTextWriterEndDocument(writer);
@@ -151,6 +153,10 @@ void vpi_config_init()
if (child->children) {
vui_strncpy(vpi_config.wireless_interface, (const char *) child->children->content, sizeof(vpi_config.wireless_interface));
}
} else if (!strcmp((const char *) child->name, "recordingdir")) {
if (child->children) {
vui_strncpy(vpi_config.recording_dir, (const char *) child->children->content, sizeof(vpi_config.recording_dir));
}
} else if (!strcmp((const char *) child->name, "connectionsetup")) {
vpi_config.connection_setup = atoi((const char *) child->children->content);
} else if (!strcmp((const char *) child->name, "region")) {
+1
View File
@@ -17,6 +17,7 @@ typedef struct {
vpi_console_entry_t *connected_console_entries;
uint32_t server_address;
char wireless_interface[VPI_CONSOLE_MAX_NAME];
char recording_dir[1024];
int connection_setup;
int region;
int swap_abxy;
+5 -4
View File
@@ -7,6 +7,7 @@
#include <unistd.h>
#include <vanilla.h>
#include "config.h"
#include "menu_common.h"
#include "menu_game.h"
#include "menu_main.h"
@@ -26,14 +27,14 @@ void vpi_menu_init(vui_context_t *vui)
vpi_menu_main(vui, 0);
}
void get_valid_filename(const char *fmt, char *abs_buf, size_t size_abs_buf)
void get_valid_filename(const char *fmt, char *abs_buf, size_t size_abs_buf, const char *preferred_dir)
{
char buf[100];
int index = 0;
do {
index++;
snprintf(buf, sizeof(buf), fmt, index);
vpi_get_data_filename(abs_buf, size_abs_buf, buf);
vpi_get_data_filename(abs_buf, size_abs_buf, buf, preferred_dir);
} while (access(abs_buf, F_OK) == 0);
}
@@ -43,7 +44,7 @@ void vpi_menu_action(vui_context_t *vui, vpi_extra_action_t action)
case VPI_ACTION_SCREENSHOT:
{
char ss_fn[4096];
get_valid_filename("Screenshot-%04i.png", ss_fn, sizeof(ss_fn));
get_valid_filename("Screenshot-%04i.png", ss_fn, sizeof(ss_fn), vpi_config.recording_dir);
vpi_decode_screenshot(ss_fn);
break;
}
@@ -52,7 +53,7 @@ void vpi_menu_action(vui_context_t *vui, vpi_extra_action_t action)
int recording = vpi_decode_is_recording();
if (!recording) {
char mov_fn[4096];
get_valid_filename("Recording-%04i.mp4", mov_fn, sizeof(mov_fn));
get_valid_filename("Recording-%04i.mp4", mov_fn, sizeof(mov_fn), vpi_config.recording_dir);
vpi_decode_record(mov_fn);
} else {
vpi_decode_record_stop();
+11 -7
View File
@@ -15,17 +15,21 @@ static char pref_path[4096] = {0};
void vpi_config_filename(char *out, size_t out_size)
{
vpi_get_data_filename(out, out_size, "config.xml");
vpi_get_data_filename(out, out_size, "config.xml", NULL);
}
void vpi_get_data_filename(char *out, size_t out_size, const char *filename)
void vpi_get_data_filename(char *out, size_t out_size, const char *filename, const char *preferred_dir)
{
if (!pref_path[0]) {
char *s = SDL_GetPrefPath("", "Vanilla");
vui_strncpy(pref_path, s, sizeof(pref_path));
SDL_free(s);
if (preferred_dir && preferred_dir[0]) {
snprintf(out, out_size, "%s/%s", preferred_dir, filename);
} else {
if (!pref_path[0]) {
char *s = SDL_GetPrefPath("", "Vanilla");
vui_strncpy(pref_path, s, sizeof(pref_path));
SDL_free(s);
}
snprintf(out, out_size, "%s%s", pref_path, filename);
}
snprintf(out, out_size, "%s%s", pref_path, filename);
}
void vpilog_va(const char *fmt, va_list va)
+2 -2
View File
@@ -5,7 +5,7 @@
#include <stdlib.h>
void vpi_config_filename(char *out, size_t out_size);
void vpi_get_data_filename(char *out, size_t out_size, const char *filename);
void vpi_get_data_filename(char *out, size_t out_size, const char *filename, const char *preferred_dir);
void vpilog_va(const char *fmt, va_list va);
void vpilog(const char *fmt, ...);
@@ -14,4 +14,4 @@ void vpi_asset_filename(char *buf, size_t size, const char *type, const char *fi
void *vpi_start_process(const char **args);
#endif // VANILLA_PI_PLATFORM_H
#endif // VANILLA_PI_PLATFORM_H