diff --git a/api/graphics_api.C b/api/graphics_api.C index 807195107a..7496b127a3 100755 --- a/api/graphics_api.C +++ b/api/graphics_api.C @@ -2,23 +2,30 @@ #include "parse.h" -void write_graphics_file(FILE* f, GRAPHICS_INFO& gi) { +int write_graphics_file(FILE* f, GRAPHICS_INFO& gi) { fprintf(f, - "%d\n" - "%d\n" - "%f\n", + "\n" + " %d\n" + " %d\n" + " %d\n" + " %f\n" + "\n", gi.xsize, gi.ysize, + gi.graphics_mode, gi.refresh_period ); + + return 0; } int parse_graphics_file(FILE* f, GRAPHICS_INFO& gi) { char buf[256]; while (fgets(buf, 256, f)) { - if (match_tag(buf, "")) return 0; + if (match_tag(buf, "")) return 0; else if (parse_int(buf, "", gi.xsize)) continue; else if (parse_int(buf, "", gi.ysize)) continue; + else if (parse_int(buf, "", gi.graphics_mode)) continue; else if (parse_double(buf, "", gi.refresh_period)) continue; else fprintf(stderr, "parse_core_file: unrecognized %s", buf); } diff --git a/api/graphics_api.h b/api/graphics_api.h index 85766c505b..b8d143daa2 100755 --- a/api/graphics_api.h +++ b/api/graphics_api.h @@ -1,10 +1,18 @@ #include +#define MODE_NO_GRAPHICS -1 +#define MODE_WINDOW 0 +#define MODE_FULLSCREEN 1 + struct GRAPHICS_INFO { int xsize; int ysize; + int graphics_mode; double refresh_period; }; struct APP_OUT_GRAPHICS { }; + +int write_graphics_file(FILE* f, GRAPHICS_INFO& gi); +int parse_graphics_file(FILE* f, GRAPHICS_INFO& gi); diff --git a/client/Makefile.in b/client/Makefile.in index 1d126a0faa..c534bede98 100644 --- a/client/Makefile.in +++ b/client/Makefile.in @@ -53,7 +53,8 @@ OBJS = \ ../lib/crypt.o \ ../lib/util.o \ ../RSAEuro/source/rsaeuro.a \ - ../api/boinc_api.o + ../api/boinc_api.o \ + ../api/graphics_api.o TEST_NET_XFER_OBJS = \ http.o \ diff --git a/client/app.C b/client/app.C index a1636f9e1d..546b782d16 100644 --- a/client/app.C +++ b/client/app.C @@ -68,6 +68,7 @@ #include "app.h" #include "boinc_api.h" +#include "graphics_api.h" // take a string containing some space separated words. // return an array of pointers to the null-terminated words. @@ -137,9 +138,10 @@ int ACTIVE_TASK::start(bool first_time) { FILE_REF file_ref; FILE_INFO* fip; int retval; - char init_data_path[256], fd_init_path[256]; + char init_data_path[256], graphics_data_path[256], fd_init_path[256]; FILE *f; APP_INIT_DATA aid; + GRAPHICS_INFO gi; if (first_time) { checkpoint_cpu_time = 0; @@ -148,9 +150,10 @@ int ACTIVE_TASK::start(bool first_time) { starting_cpu_time = checkpoint_cpu_time; fraction_done = 0; - //app_prefs.graphics.xsize = 640; - //app_prefs.graphics.ysize = 480; - //app_prefs.graphics.refresh_period = 5; + gi.xsize = 640; + gi.ysize = 480; + gi.graphics_mode = MODE_WINDOW; + gi.refresh_period = 0.1; memset(&aid, 0, sizeof(aid)); @@ -170,6 +173,17 @@ int ACTIVE_TASK::start(bool first_time) { retval = write_init_data_file(f, aid); fclose(f); + sprintf(graphics_data_path, "%s%s%s", slot_dir, PATH_SEPARATOR, GRAPHICS_DATA_FILE); + f = fopen(graphics_data_path, "w"); + if (!f) { + if (log_flags.task_debug) { + printf("Failed to open core to app graphics prefs file %s.\n", graphics_data_path); + } + return ERR_FOPEN; + } + retval = write_graphics_file(f, gi); + fclose(f); + sprintf(fd_init_path, "%s%s%s", slot_dir, PATH_SEPARATOR, FD_INIT_FILE); f = fopen(fd_init_path, "w"); if (!f) {