*** empty log message ***

svn path=/trunk/boinc/; revision=2614
This commit is contained in:
David Anderson 2003-10-31 22:37:46 +00:00
parent c75b85ca1b
commit 5e2bc9d74b
18 changed files with 359 additions and 250 deletions

View File

@ -79,18 +79,13 @@ bool boinc_is_standalone() {
return standalone;
}
// read the INIT_DATA and FD_INIT files
// parse the init data file.
// This is done at startup, and also if a "reread prefs" message is received
//
int boinc_init(bool standalone_ /* = false */) {
int boinc_parse_init_data_file() {
FILE* f;
int retval;
#ifdef _WIN32
freopen(STDERR_FILE, "a", stderr);
#endif
standalone = standalone_;
// If in standalone mode, use init files if they're there,
// but don't demand that they exist
//
@ -119,6 +114,23 @@ int boinc_init(bool standalone_ /* = false */) {
return retval;
}
}
return 0;
}
// read the INIT_DATA and FD_INIT files
//
int boinc_init(bool standalone_ /* = false */) {
FILE* f;
int retval;
#ifdef _WIN32
freopen(STDERR_FILE, "a", stderr);
#endif
standalone = standalone_;
retval = boinc_parse_init_data_file();
if (retval) return retval;
f = fopen(FD_INIT_FILE, "r");
if (f) {

View File

@ -55,6 +55,7 @@ public:
};
int boinc_init(bool standalone = false);
int boinc_parse_init_data_file();
int boinc_get_init_data(APP_INIT_DATA&);
int boinc_finish(int);
int boinc_resolve_filename(const char*, char*, int len);

View File

@ -56,7 +56,7 @@ HANDLE hQuitEvent;
GRAPHICS_INFO gi;
bool graphics_inited = false;
int boinc_init_opengl() {
int boinc_init_graphics() {
#ifdef HAVE_GL_LIB
FILE* f;
int retval;
@ -149,7 +149,7 @@ int boinc_init_opengl() {
return !graphics_inited;
}
int boinc_finish_opengl() {
int boinc_finish_graphics() {
#ifdef _WIN32
if (graphics_inited) {
win_loop_done = TRUE;
@ -205,7 +205,7 @@ bool throttled_app_render(int x, int y, double t) {
if (boinc_max_gfx_cpu_frac) {
boinc_cpu_time(t0, m);
}
app_render(x, y, t);
app_graphics_render(x, y, t);
if (boinc_max_gfx_cpu_frac) {
boinc_cpu_time(t1, m);
total_render_time += t1 - t0;
@ -257,7 +257,7 @@ GLenum ReSizeGLScene(GLsizei width, GLsizei height) {
err = glGetError();
if (err) return err;
app_resize(width,height);
app_graphics_resize(width,height);
return GL_NO_ERROR;
}
#endif

View File

@ -73,8 +73,8 @@
#endif
// The API (functions called by the app)
extern int boinc_init_opengl();
extern int boinc_finish_opengl();
extern int boinc_init_graphics();
extern int boinc_finish_graphics();
#ifdef HAVE_GL_LIB
extern GLvoid glPrint(GLuint font, const char *fmt, ...);
@ -82,9 +82,14 @@ extern GLvoid glPrint(GLuint font, const char *fmt, ...);
// Functions that must be supplied by the app
//
extern void app_render(int xs, int ys, double time_of_day);
extern void app_init_gl();
extern void app_resize(int width, int height);
extern void app_graphics_render(int xs, int ys, double time_of_day);
extern void app_graphics_init();
// called each time a window is opened;
// called in the graphics thread
extern void app_graphics_reread_prefs();
// called when get REREAD_PREFS message from core client.
// called in the graphics thread
extern void app_graphics_resize(int width, int height);
// Implementation stuff
//

View File

@ -710,7 +710,7 @@ void MOVING_TEXT_PANEL::sort(MOVING_TEXT_PANEL* tp, int n) {
qsort(tp, n, sizeof(MOVING_TEXT_PANEL), compare_tp);
}
PROGRESS::PROGRESS(
void PROGRESS::init(
GLfloat* p, GLfloat l, GLfloat r, GLfloat in, GLfloat* c, GLfloat* ic
) {
memcpy(pos, p, sizeof(pos));
@ -728,7 +728,7 @@ void PROGRESS::draw(float x) {
drawCylinder(false, pos, len, rad);
}
PROGRESS_2D::PROGRESS_2D(
void PROGRESS_2D::init(
GLfloat* p, GLfloat l, GLfloat w, GLfloat in, GLfloat* c, GLfloat* ic
) {
memcpy(pos, p, sizeof(pos));
@ -780,7 +780,7 @@ void PROGRESS_2D::draw(float x) {
//----------------- RIBBON_GRAPH ---------------------
RIBBON_GRAPH::RIBBON_GRAPH(float* p, float* s, float* c, float* tc, float ty) {
void RIBBON_GRAPH::init(float* p, float* s, float* c, float* tc, float ty) {
memcpy(pos, p, sizeof(pos));
memcpy(size, s, sizeof(size));
memcpy(color, c, sizeof(color));
@ -792,10 +792,10 @@ void RIBBON_GRAPH::set_pos(float* p) {
memcpy(pos, p, sizeof(pos));
}
float yvec[] = {0., 1., 0.};
float xvec[] = {1., 0., 0.};
float xvecneg[] = {-1., 0., 0.};
float zvec[] = {0, 0, 1};
static float yvec[] = {0., 1., 0.};
static float xvec[] = {1., 0., 0.};
static float xvecneg[] = {-1., 0., 0.};
static float zvec[] = {0, 0, 1};
// draw XZ rect from i to i+1, with height data[i]
//
@ -927,7 +927,11 @@ void crossProd(float a[3], float b[3], float out[3])
normalize(out);
}
//makes a list of stars that lie on cocentric circles (inefficient, most will be out of sight)
STARFIELD::STARFIELD() {
stars = NULL;
}
//
//
void STARFIELD::build_stars(int sz, float sp) {
float modelview[16];
@ -940,6 +944,7 @@ void STARFIELD::build_stars(int sz, float sp) {
speed=sp;
size=sz;
if (stars) free(stars);
stars = (STAR*)calloc(sizeof(STAR), size);
if(get_matrix_invert(modelview)==false)
@ -1053,6 +1058,13 @@ void STARFIELD::replace_star(int i) {
// ------------ TEXTURE STUFF --------------------
//
struct tImageJPG {
int rowSpan;
int sizeX;
int sizeY;
unsigned char *data;
};
struct Vertex
{
float tu, tv;

View File

@ -104,7 +104,7 @@ class PROGRESS {
float len, rad, inner_rad;
public:
float pos[3];
PROGRESS(float* pos, float len, float diam, float inner, float* c, float* ic);
void init(float* pos, float len, float diam, float inner, float* c, float* ic);
void draw(float);
};
@ -115,7 +115,7 @@ class PROGRESS_2D {
float pos[3];
public:
void set_pos(float*);
PROGRESS_2D(float* pos, float len, float width, float inner_width, float* c, float* ic);
void init(float* pos, float len, float width, float inner_width, float* c, float* ic);
void draw(float);
};
@ -134,7 +134,7 @@ class RIBBON_GRAPH {
float pos[3];
public:
void set_pos(float*);
RIBBON_GRAPH(float* pos, float* size, float* color, float* tick_color, float tick_yfrac=0.2);
void init(float* pos, float* size, float* color, float* tick_color, float tick_yfrac=0.2);
void draw(float* data, int len, bool with_ticks=false);
void add_tick(float x, int index);
};
@ -164,7 +164,7 @@ public:
};
// ----- STUFF RELATED TO STARFIELDS
// ----- STARFIELDS
//
#define COS_30 0.8720254037f
#define XY_HEIGHT 1656.85f
@ -183,21 +183,15 @@ class STARFIELD {
void replace_star(int);
bool is_visible(int,double[16],double[16],int[4]);
STAR* stars;
public:
public:
STARFIELD();
void build_stars(int, float);
void update_stars(float);
};
// ----- STUFF RELATED TO TEXTURES AND IMAGES
#if 0
#define IMAGE_TYPE_JPG 0
#define IMAGE_TYPE_PPM 1
#define IMAGE_TYPE_BMP 2
#define IMAGE_TYPE_TGA 3
#endif
// ----- TEXTURES AND IMAGES
#define ALIGN_BOTTOM 0
#define ALIGN_CENTER 1
@ -216,17 +210,8 @@ struct TEXTURE_DESC {
int CreateTextureTGA(char* strFileName);
};
struct tImageJPG {
int rowSpan;
int sizeX;
int sizeY;
unsigned char *data;
};
extern tImageJPG *LoadJPG(const char *filename);
// ----- STUFF RELATED TO FONTS
// ----- FONTS
//
extern unsigned int listBase;
extern unsigned int MyCreateFont(char *fontName, int Size,int weight);

View File

@ -43,7 +43,7 @@ void REDUCED_ARRAY::set_max_dims(int mx, int my) {
// Prepare to receive a source array.
// (sx, sy) are dimensions of source array
//
void REDUCED_ARRAY::init(int sx, int sy) {
void REDUCED_ARRAY::init_data(int sx, int sy) {
sdimx = sx;
sdimy = sy;
if (sdimx > rdimx_max) {
@ -80,8 +80,10 @@ void REDUCED_ARRAY::reset() {
last_ry_count = 0;
}
void REDUCED_ARRAY::init_draw(GRAPH_STYLE st, float* p, float* s, double h0, double dh, float trans,
char* xl,char* yl,char* zl) {
void REDUCED_ARRAY::init_display(
GRAPH_STYLE st, float* p, float* s, double h0, double dh, float trans,
char* xl, char* yl, char* zl
) {
memcpy(draw_pos, p, sizeof(draw_pos));
memcpy(draw_size, s, sizeof(draw_size));
draw_deltax = draw_size[0]/rdimx;
@ -399,7 +401,7 @@ void REDUCED_ARRAY::draw_row_rect_x(int row) {
*/
// }
glEnd();
break;
break;
case GRAPH_STYLE_SURFACE:
glBegin(GL_TRIANGLE_STRIP);
@ -434,7 +436,7 @@ void REDUCED_ARRAY::draw_row_rect_x(int row) {
}
}
glEnd();
break;
break;
case GRAPH_STYLE_WIREFRAME:
glLineWidth(1.0f);
z0 = draw_pos[2] + (draw_size[2]*row)/rdimy;
@ -473,7 +475,7 @@ void REDUCED_ARRAY::draw_row_rect_x(int row) {
}
glEnd();
glDisable(GL_LINE_SMOOTH);
break;
break;
case GRAPH_STYLE_PLANES:
z0 = draw_pos[2] + (draw_size[2]*row)/rdimy;
z1 = z0+.14f;
@ -650,7 +652,8 @@ void REDUCED_ARRAY::draw_axis_labels() {
void REDUCED_ARRAY::draw_axes() {
//float adj2=-.18f;
// comment??
float adj2=0.0f;//-(draw_size[2]*1)/rdimy;
float adj=0.0f;
@ -753,9 +756,8 @@ void REDUCED_ARRAY::draw_labels() {
float wd=.015f;
float l=1.0f;
// char* zlabel = "Time(sec)";
// char* xlabel = "Frequency(HZ)";
// char* plabel = "Power";
// what the hell are the following doing here??
char* zmax = "107.4";
char* zmin = "0";
@ -796,14 +798,11 @@ void REDUCED_ARRAY::draw_labels() {
//unscale modelview matrix
double aspect_ratio = 4.0/3.0;
if ((double)h*aspect_ratio > (double)w)
{
if ((double)h*aspect_ratio > (double)w) {
model[1]*=1.0f/(((double)w/aspect_ratio)/(double)h);
model[5]*=1.0f/(((double)w/aspect_ratio)/(double)h);
model[9]*=1.0f/(((double)w/aspect_ratio)/(double)h);
}
else
{
} else {
model[0]*=1.0f/(((double)h*aspect_ratio)/(double)w);
model[4]*=1.0f/(((double)h*aspect_ratio)/(double)w);
model[8]*=1.0f/(((double)h*aspect_ratio)/(double)w);

View File

@ -64,8 +64,10 @@ public:
REDUCED_ARRAY();
~REDUCED_ARRAY();
void init(int, int);
void init_draw(GRAPH_STYLE, float*, float*, double, double, float,char*,char*,char*);
void init_data(int, int);
void init_display(
GRAPH_STYLE, float*, float*, double, double, float, char*, char*, char*
);
void set_max_dims(int, int);
void reduce_source_row(float*, float*);
void add_source_row(float*);

View File

@ -163,13 +163,13 @@ void SetMode(int mode) {
// do GL initialization every time, since we're creating a new window
//
InitGL();
app_init_gl();
app_graphics_init();
// tell the core client that we're entering new mode
//
if (app_client_shm) {
app_client_shm->send_graphics_mode_msg(
APP_CORE_GFX_SEG, current_graphics_mode
app_client_shm->send_graphics_msg(
APP_CORE_GFX_SEG, GRAPHICS_MSG_SET_MODE, current_graphics_mode
);
}
}
@ -182,7 +182,7 @@ LRESULT CALLBACK WndProc( HWND hWnd, // Handle For This Window
LPARAM lParam) // Additional Message Information
{
RECT rt;
int width, height, new_mode;
int width, height, new_mode, msg;
static bool visible = true;
switch(uMsg) {
@ -235,8 +235,17 @@ LRESULT CALLBACK WndProc( HWND hWnd, // Handle For This Window
ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));
return 0;
case WM_TIMER:
if (app_client_shm && app_client_shm->get_graphics_mode_msg(CORE_APP_GFX_SEG, new_mode)) {
SetMode(new_mode);
if (app_client_shm) {
if (app_client_shm->get_graphics_msg(CORE_APP_GFX_SEG, msg, new_mode)) {
switch (msg) {
case GRAPHICS_MSG_SET_MODE:
SetMode(new_mode);
break;
case GRAPHICS_MSG_REREAD_PREFS:
app_graphics_reread_prefs();
break;
}
}
}
if (!visible) return 0;
if (current_graphics_mode == MODE_HIDE_GRAPHICS) return 0;

View File

@ -6537,34 +6537,34 @@ Karl 2003/10/02
configxml.py
David Oct 4 2003
- throttled_app_render() returns true iff it rendered anything.
This lets the caller do swapbuffers only if needed
- app_render() now returns void
- added functions that read graphics files (JPEG, PPM, BMP, TGA)
and create textures (moved from SETI@home)
- throttled_app_render() returns true iff it rendered anything.
This lets the caller do swapbuffers only if needed
- app_render() now returns void
- added functions that read graphics files (JPEG, PPM, BMP, TGA)
and create textures (moved from SETI@home)
api/
graphics_api.C,h
gutil.C,h
windows_opengl.C
lib/
xml_util.C
api/
graphics_api.C,h
gutil.C,h
windows_opengl.C
lib/
xml_util.C
David Oct 6 2003
- Created class MOVING_TEXT_PANEL (in boinc/api/gutil.h)
to do Astropulse-type text display
- Created class TEXTURE_DESC (same place)
to represent an OpenGL texture (including its ID and size).
- Modify draw_texture() to not change the aspect ratio of the picture;
it shrinks the image in one dimension or the other, and centers
it in the allotted space
- Add a GRAPH_DRAW_STYLE field to REDUCED_ARRAY
- Eliminate methods of REDUCED_ARRAY that take a style argument
- Created class MOVING_TEXT_PANEL (in boinc/api/gutil.h)
to do Astropulse-type text display
- Created class TEXTURE_DESC (same place)
to represent an OpenGL texture (including its ID and size).
- Modify draw_texture() to not change the aspect ratio of the picture;
it shrinks the image in one dimension or the other, and centers
it in the allotted space
- Add a GRAPH_DRAW_STYLE field to REDUCED_ARRAY
- Eliminate methods of REDUCED_ARRAY that take a style argument
api/
graphics_api.C
gutil.C,h
reduce.C,h
api/
graphics_api.C
gutil.C,h
reduce.C,h
Karl 2003/10/06
- client release 2.04
@ -6627,13 +6627,13 @@ Oliver Oct 8 2003
windows_opengl.c
David Oct 8 2003
- made draw, CreateTextureJPG etc. into member functions of TEXTURE_DESC
- added xalign, yalign args to TEXTURE_DESC::draw()
- attempted to turn off rendering when window is hidden (don't think I succeeded)
- made draw, CreateTextureJPG etc. into member functions of TEXTURE_DESC
- added xalign, yalign args to TEXTURE_DESC::draw()
- attempted to turn off rendering when window is hidden (don't think I succeeded)
api/
gutil.C,h
windows_opengl.C
api/
gutil.C,h
windows_opengl.C
Oliver Oct 9 2003
- fixed error handling when jpeglib fails
@ -6662,11 +6662,11 @@ Karl 2003/10/08
transitioner.C
David Oct 10 2003
- made STARFIELD CLASS
- implement tickmarks for RIBBON_GRAPH
- made STARFIELD CLASS
- implement tickmarks for RIBBON_GRAPH
api/
gutil.C,h
api/
gutil.C,h
David Oct 10 2003
- various web stuff
@ -6747,20 +6747,20 @@ Oliver Oct 13 2003
David Oct 14 2003
- don't call boinc_finish_opengl() in boinc_finish()!!
- max frame rate and max graphics CPU are accessible to app
(via global variables boinc_max_fps and boinc_max_gfx_cpu_frac)
- in windows_opengl.C, moved InitGL() and app_init_gl() calls
from SetMode() to start of win_graphics_event_loop()
(just want to call these once, right?)
- in windows_opengl.C: if in standalone mode and get WM_CLOSE event,
actually exit (makes debugging easier).
- don't call boinc_finish_opengl() in boinc_finish()!!
- max frame rate and max graphics CPU are accessible to app
(via global variables boinc_max_fps and boinc_max_gfx_cpu_frac)
- in windows_opengl.C, moved InitGL() and app_init_gl() calls
from SetMode() to start of win_graphics_event_loop()
(just want to call these once, right?)
- in windows_opengl.C: if in standalone mode and get WM_CLOSE event,
actually exit (makes debugging easier).
api/
boinc_api.C
graphics_api.C,h
gutil.C
windows_opengl.C
api/
boinc_api.C
graphics_api.C,h
gutil.C
windows_opengl.C
Oliver Oct 14 2003
- stars now draw in visible pyramid with original coordinate system
@ -6774,11 +6774,11 @@ Oliver Oct 14 2003
David Oct 14 2003
- extended MOVING_TEXT_PANEL interface to let you draw text on
particular line numbers,
and get the coords the start of a line number
particular line numbers,
and get the coords the start of a line number
api/
gutil.C,h
api/
gutil.C,h
Karl 2003-10-14
- makefiles:
@ -6848,14 +6848,14 @@ David 16 Oct 2003
since it's included (and needed) in UNIX as well as Windows
Oliver 16 Oct 2003
- Implemented scaling factor to center objects
- Fixed starfields
- Right justified text
- Implemented scaling factor to center objects
- Fixed starfields
- Right justified text
api/
graphics_api.C
gutil.C,h
windows_opengl.C
api/
graphics_api.C
gutil.C,h
windows_opengl.C
Karl 2003-10-16
- updated python database API with new workunit.userid field
@ -6939,9 +6939,9 @@ Karl 2003-10-19
wingui_mainwindow.cpp
David 20 Oct 2003
- fixed bug that prevented screensaver from launching core client
- fixed bug that prevented screensaver from launching core client
win_screensaver.cpp
win_screensaver.cpp
Karl 2003-10-20
- BOINC client release 2.05
@ -6972,12 +6972,12 @@ David 20 Oct 2003
David 20 Oct 2003
- changed CPU benchmark code to store all times as doubles.
This might fix the "negative fpops/sec" bug
- changed CPU benchmark code to store all times as doubles.
This might fix the "negative fpops/sec" bug
client/
cpu_benchmark.C
cs_benchmark.C
client/
cpu_benchmark.C
cs_benchmark.C
David 20 Oct 2003
- changed overflowing integer calculation in CPU checkpoint code.
@ -6999,34 +6999,34 @@ David 22 Oct 2003
cs_files.C
David 22 Oct 2003
- fixed bug that caused project disk usage to be reported as zero
- Added debugging printfs (enabled by #define DEBUG)
- fixed bug that caused project disk usage to be reported as zero
- Added debugging printfs (enabled by #define DEBUG)
to wingui_mainwindow.cpp. These write to C:/temp/core.txt.
- In CMyApp::InitInstance(), changed 2nd arg of CreateMutex
- In CMyApp::InitInstance(), changed 2nd arg of CreateMutex
from false to true. This matches "1 instance" code samples from web.
Thought it might fix startup bug - no.
- Added debugging printfs (enabled by #define DEBUG) into screensaver;
causes it to write info to C:/temp/boinc_scr.txt
- Removed CREATE_NO_WINDOW and IDLE_PRIORITY flags from
CreateProcess() call in screensaver.
These aren't listed in the MSDN man page; are they needed?
- slight change to startup logic in screensaver:
- send it a BOINC_SS_START message only if it's already running
(not needed if start it ourselves, since we give it -saver arg)
- don't wait for 3 seconds after starting it
- In the cmdline passed to the core client from screensaver,
make argv[0] the real path of the executable.
Thought this might fix startup bug - no.
- Change "start_saver" to "started_by_screensaver". Truth in advertising.
Thought it might fix startup bug - no.
- Added debugging printfs (enabled by #define DEBUG) into screensaver;
causes it to write info to C:/temp/boinc_scr.txt
- Removed CREATE_NO_WINDOW and IDLE_PRIORITY flags from
CreateProcess() call in screensaver.
These aren't listed in the MSDN man page; are they needed?
- slight change to startup logic in screensaver:
- send it a BOINC_SS_START message only if it's already running
(not needed if start it ourselves, since we give it -saver arg)
- don't wait for 3 seconds after starting it
- In the cmdline passed to the core client from screensaver,
make argv[0] the real path of the executable.
Thought this might fix startup bug - no.
- Change "start_saver" to "started_by_screensaver". Truth in advertising.
client/
client_state.C,h
cs_cmdline.C
win/
win_screensaver.cpp
wingui_mainwindow.cpp
lib/
filesys.C
client/
client_state.C,h
cs_cmdline.C
win/
win_screensaver.cpp
wingui_mainwindow.cpp
lib/
filesys.C
David 24 Oct 2003
- complete Bob's addition of SETI@home "grandfather" fields to DB
@ -7043,7 +7043,7 @@ Oliver 24 Oct 2003
is created
api/
reduce.h,C
reduce.h,C
David 24 Oct 2003
- db_dump generates valid XML
@ -7068,21 +7068,21 @@ Karl 2003-10-25
David 25 Oct 2003
- removed code that caps backoff count at one
TODO: we still need to reexamine the backoff policy,
so that multiple file failures don't lead to huge backoffs
- moved OpenGL init calls from the start of the event loop
back to SetMode, undoing an earlier change.
Turns out the need to be in SetMode because it creates a new
window every time.
This should fix the bug that cause Astropulse to show no graphics.
TODO: make sure that when an application window is hidden,
no rendering work gets done.
- removed code that caps backoff count at one
TODO: we still need to reexamine the backoff policy,
so that multiple file failures don't lead to huge backoffs
- moved OpenGL init calls from the start of the event loop
back to SetMode, undoing an earlier change.
Turns out the need to be in SetMode because it creates a new
window every time.
This should fix the bug that cause Astropulse to show no graphics.
TODO: make sure that when an application window is hidden,
no rendering work gets done.
api/
windows_opengl.C
client/
scheduler_op.C
api/
windows_opengl.C
client/
scheduler_op.C
Karl 2003-10-25
- updated_versions: don't be so verbose unless "-v" verbose command-line
@ -7098,36 +7098,36 @@ Karl 2003-10-25
tools.py
David 27 Oct 2003
- Parse project-specific prefs correctly (i.e. based on venue)
These prefs are read from account files.
Account files are read before the client state file is parsed.
This presented a problem because the host venue,
which is needed to decide which project prefs to use,
is kept in the client state file.
So I added a new function, parse_venue(), that gets the
host venue from the state file; this is done before parsing account files.
- Also added <project_name> element to account file so that we can
display that correctly in message about project prefs
- Parse project-specific prefs correctly (i.e. based on venue)
These prefs are read from account files.
Account files are read before the client state file is parsed.
This presented a problem because the host venue,
which is needed to decide which project prefs to use,
is kept in the client state file.
So I added a new function, parse_venue(), that gets the
host venue from the state file; this is done before parsing account files.
- Also added <project_name> element to account file so that we can
display that correctly in message about project prefs
api/
windows_opengl.C
client/
client_state.C,h
client_types.C
cs_statefile.C
pers_file_xfer.h
prefs.C
api/
windows_opengl.C
client/
client_state.C,h
client_types.C
cs_statefile.C
pers_file_xfer.h
prefs.C
Oliver 27 Oct 2003
- Fixed efficiency bugs in starfield
api/
gutil.C,h
- Fixed efficiency bugs in starfield
api/
gutil.C,h
Eric K 27 Oct 2003
- xml_indent() is now limited to a max of 40 spaces.
- xml_indent() is now limited to a max of 40 spaces.
lib/
xml_util.h
xml_util.h
David 27 Oct 2003
- let users see list of all their results
@ -7197,16 +7197,16 @@ Oliver 29 Oct 2003
- fixed improperly scaled logos
api/
gutil.C,h
gutil.C,h
David 28 Oct 2003
- app library: don't access shared memory if it's not there
(should keep non-standalone version from crashing
when run in isolation)
- app library: don't access shared memory if it's not there
(should keep non-standalone version from crashing
when run in isolation)
api/
windows_opengl.C
api/
windows_opengl.C
Karl 2003-10-29
- removed test_sanity check from configure
@ -7218,18 +7218,18 @@ Karl 2003-10-29
make_project
David 30 Oct 2003
- On call to CreateEvent() to make "event" object for
core client to ask app to quit (Windows)
changed ManualReset argument to false.
This fixes a bug where, after resetting a project,
all apps get quit signal immediately
- Change CLIENT_STATE::report_result_error() so that it
takes a format string and varargs
- On call to CreateEvent() to make "event" object for
core client to ask app to quit (Windows)
changed ManualReset argument to false.
This fixes a bug where, after resetting a project,
all apps get quit signal immediately
- Change CLIENT_STATE::report_result_error() so that it
takes a format string and varargs
client/
app.C
client_state.C,h
pers_file_xfer.C
client/
app.C
client_state.C,h
pers_file_xfer.C
David 30 Oct 2003
- API writes to stderr if get quit request
@ -7267,3 +7267,51 @@ David 31 Oct 2003
prefs.php
prefs_edit_action.php
stats.php (new)
David 31 Oct 2003
- Added a mechanism allowing applications to change their graphics
"on the fly" in response to new project preferences:
- Added a new message type <reread_prefs/> to the
core->app graphics segment
- When the graphics framework (windows_opengl.C) gets this message,
it calls an application function app_graphics_reread_prefs().
This function can call boinc_parse_init_data_file() (see below)
to get the new prefs
- Core client: when get new project preferences,
write new init_data.xml files for all running apps,
and send them <reread_prefs/> messages.
New functions:
ACTIVE_TASK::write_app_init_file()
ACTIVE_TASK::request_reread_prefs()
ACTIVE_TASK_SET::request_reread_prefs(PROJECT*)
- name changes:
old new
boinc_init_opengl boinc_init_graphics
boinc_finish_opengl boinc_finish_graphics
app_init_gl app_graphics_init
app_render app_graphics_render
app_resize app_graphics_resize
REDUCED_ARRAY::init init_data
REDUCED_ARRAY::init_draw init_display:$
- changed graphics objects (PROGRESS, PROGRESS2D, RIBBON_GRAPH)
to use init() functions instead of constructor for setup;
changed STARFIELD::build_stars() so that it can be called repeatedly
- factored code to read init_data.xml into a new function
boinc_parse_init_data_file()
- moved tImageJPG out of the .h file - it's not interface
api/
boinc_api.C,h
graphics_api.C,h
gutil.C,h
reduce.C,h
windows_opengl.C
client/
app.C,h
cs_scheduler.C
doc/
graphics.sxd (new)
graphics.png (new)
lib/
app_ipc.C
parse.C,h

View File

@ -130,36 +130,10 @@ int ACTIVE_TASK::init(RESULT* rp) {
return 0;
}
// Start a task in a slot directory.
// This includes setting up soft links,
// passing preferences, and starting the process
//
// Current dir is top-level BOINC dir
//
int ACTIVE_TASK::start(bool first_time) {
char exec_name[256], file_path[256], link_path[256], buf[256], exec_path[256];
unsigned int i;
FILE_REF file_ref;
FILE_INFO* fip;
int retval;
char init_data_path[256], graphics_data_path[256], fd_init_path[256];
int ACTIVE_TASK::write_app_init_file(APP_INIT_DATA& aid) {
FILE *f;
APP_INIT_DATA aid;
GRAPHICS_INFO gi;
ScopeMessages scope_messages(log_messages, ClientMessages::DEBUG_TASK);
scope_messages.printf("ACTIVE_TASK::start(first_time=%d)\n", first_time);
if (first_time) {
checkpoint_cpu_time = 0;
}
current_cpu_time = checkpoint_cpu_time;
starting_cpu_time = checkpoint_cpu_time;
fraction_done = 0;
gi.xsize = 800;
gi.ysize = 600;
gi.refresh_period = 0.1;
char init_data_path[256];
int retval;
memset(&aid, 0, sizeof(aid));
@ -167,11 +141,14 @@ int ACTIVE_TASK::start(bool first_time) {
safe_strcpy(aid.user_name, wup->project->user_name);
safe_strcpy(aid.team_name, wup->project->team_name);
if (wup->project->project_specific_prefs) {
#if 0
extract_venue(
wup->project->project_specific_prefs,
gstate.host_venue,
aid.app_preferences
);
#endif
strcpy(aid.app_preferences, wup->project->project_specific_prefs);
}
aid.user_total_credit = wup->project->user_total_credit;
aid.user_expavg_credit = wup->project->user_expavg_credit;
@ -203,9 +180,43 @@ int ACTIVE_TASK::start(bool first_time) {
#endif
retval = write_init_data_file(f, aid);
if (retval) return retval;
fclose(f);
return retval;
}
// Start a task in a slot directory.
// This includes setting up soft links,
// passing preferences, and starting the process
//
// Current dir is top-level BOINC dir
//
int ACTIVE_TASK::start(bool first_time) {
char exec_name[256], file_path[256], link_path[256], buf[256], exec_path[256];
unsigned int i;
FILE_REF file_ref;
FILE_INFO* fip;
int retval;
char graphics_data_path[256], fd_init_path[256];
FILE *f;
GRAPHICS_INFO gi;
APP_INIT_DATA aid;
ScopeMessages scope_messages(log_messages, ClientMessages::DEBUG_TASK);
scope_messages.printf("ACTIVE_TASK::start(first_time=%d)\n", first_time);
if (first_time) {
checkpoint_cpu_time = 0;
}
current_cpu_time = checkpoint_cpu_time;
starting_cpu_time = checkpoint_cpu_time;
fraction_done = 0;
gi.xsize = 800;
gi.ysize = 600;
gi.refresh_period = 0.1;
retval = write_app_init_file(aid);
if (retval) return retval;
sprintf(graphics_data_path, "%s%s%s", slot_dir, PATH_SEPARATOR, GRAPHICS_DATA_FILE);
f = fopen(graphics_data_path, "w");
@ -798,10 +809,27 @@ bool ACTIVE_TASK::read_stderr_file() {
return false;
}
void ACTIVE_TASK::request_reread_prefs() {
int ACTIVE_TASK::request_reread_prefs() {
int retval;
APP_INIT_DATA aid;
retval = write_app_init_file(aid);
if (retval) return retval;
app_client_shm.send_graphics_msg(
CORE_APP_GFX_SEG, GRAPHICS_MSG_REREAD_PREFS, 0
);
return 0;
}
void ACTIVE_TASK_SET::request_reread_prefs(PROJECT* project) {
unsigned int i;
ACTIVE_TASK* atp;
for (i=0; i<active_tasks.size(); i++) {
atp = active_tasks[i];
if (atp->result->project != project) continue;
atp->request_reread_prefs();
}
}
void ACTIVE_TASK::request_graphics_mode(int mode) {

View File

@ -99,6 +99,7 @@ public:
int graphics_acked_mode; // most recent mode reported by app
int graphics_mode_before_ss; // mode before last screensaver request
void request_graphics_mode(int);
int request_reread_prefs();
void check_graphics_mode_ack();
ACTIVE_TASK();
@ -121,6 +122,7 @@ public:
double est_time_to_completion();
bool read_stderr_file();
bool supports_graphics();
int write_app_init_file(APP_INIT_DATA&);
int write(FILE*);
int parse(FILE*, CLIENT_STATE*);
@ -155,6 +157,7 @@ public:
void hide_apps();
void restore_apps();
void check_graphics_mode_ack();
void request_reread_prefs(PROJECT*);
int write(FILE*);
int parse(FILE*, CLIENT_STATE*);

View File

@ -468,6 +468,7 @@ int CLIENT_STATE::handle_scheduler_reply(
strcpy(project->project_specific_prefs, sr.project_prefs_xml);
retval = project->write_account_file();
if (retval) return retval;
active_tasks.request_reread_prefs(project);
}
}

BIN
doc/graphics.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
doc/graphics.sxd Normal file

Binary file not shown.

View File

@ -33,6 +33,8 @@ char* xml_graphics_modes[5] = {
"<mode_blankscreen/>"
};
#define REREAD_PREFS_MSG "<reread_prefs/>"
int write_init_data_file(FILE* f, APP_INIT_DATA& ai) {
if (strlen(ai.app_name)) {
fprintf(f, "<app_name>%s</app_name>\n", ai.app_name);

View File

@ -203,6 +203,7 @@ void replace_element(char* buf, char* start, char* end, char* replacement) {
strcat(p, temp);
}
#if 0
// if the given XML has an element of the form
// <venue name="venue_name">
// ...
@ -231,6 +232,7 @@ void extract_venue(const char* in, const char* venue_name, char* out) {
}
}
}
#endif
// copy a line from the given string.
// kinda like fgets() when you're reading from a string

View File

@ -37,7 +37,7 @@ extern int dup_element_contents(FILE* in, const char* end_tag, char** pp);
extern int copy_element_contents(FILE* in, const char* end_tag, char* p, int len);
extern int read_file_malloc(const char* pathname, char*& str);
extern void replace_element(char* buf, char* start, char* end, char* replacement);
extern void extract_venue(const char* in, const char* venue_name, char* out);
//extern void extract_venue(const char* in, const char* venue_name, char* out);
extern char* sgets(char* buf, int len, char* &in);
extern bool extract_xml_record(const std::string &field, const char *tag, std::string &record);