*** empty log message ***

svn path=/trunk/boinc/; revision=4601
This commit is contained in:
David Anderson 2004-11-18 22:18:00 +00:00
parent dfb9d1a3b0
commit f342486b5f
8 changed files with 55 additions and 53 deletions

View File

@ -21,7 +21,6 @@ static int acked_graphics_mode;
static int xpos = 100, ypos = 100;
static int clicked_button;
static int win=0;
extern int userclose;
extern void graphics_thread_init();
static void set_mode(int mode);
@ -68,22 +67,6 @@ void keyboardD(unsigned char key, int x, int y) {
}
}
#if 0
void onIdle(){
static double oldTime = 0;
double currentTime = dtime();
if (userclose == 1){
userclose = 0;
set_mode(MODE_HIDE_GRAPHICS);
}
if (currentTime - oldTime > .001){
timer_handler();
oldTime = currentTime;
}
}
#endif
static void maybe_render() {
int width, height;
if (visible && (current_graphics_mode != MODE_HIDE_GRAPHICS)) {
@ -106,9 +89,13 @@ static void close_func() {
static void make_new_window(int mode){
char* args[] = {"foobar", 0};
int one=1;
static bool first = false;
if (mode == MODE_WINDOW || mode == MODE_FULLSCREEN){
glutInit(&one, args);
if (first) {
glutInit(&one, args);
first = false;
}
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowPosition(xpos, ypos);
glutInitWindowSize(600, 400);
@ -167,12 +154,6 @@ static void timer_handler(int) {
char buf[MSG_CHANNEL_SIZE];
GRAPHICS_MSG m;
#if 0
if (userclose) {
close_func();
userclose = false;
}
#endif
int new_mode;
if (app_client_shm) {
if (app_client_shm->shm->graphics_request.get_msg(buf)) {
@ -221,11 +202,6 @@ void xwin_graphics_event_loop() {
graphics_thread = pthread_self();
if (boinc_is_standalone()) {
set_mode(MODE_WINDOW);
#if 0
if (userclose) {
return;
}
#endif
} else {
wait_for_initial_message();
timer_handler(0);
@ -233,8 +209,7 @@ void xwin_graphics_event_loop() {
}
int retval = setjmp(jbuf);
if (retval) {
fprintf(stderr, "graphics thread restarted\n");
fflush(stderr);
//fprintf(stderr, "graphics thread restarted\n"); fflush(stderr);
set_mode(MODE_HIDE_GRAPHICS);
}
glutTimerFunc(TIMER_INTERVAL_MSEC, timer_handler, 0);

View File

@ -19819,3 +19819,20 @@ David 18 Nov 2004
team_display.php
team_email_lsit.php
top_*.php
David 18 Nov 2004
- UNIX app graphics: only call glutInit() once (avoid error msg)
- UNIX: if app exits with external signal, restart it
- check_suspend_activities(), check_suspend_network():
don't do anything more than once every 5 seconds
- call do_something() every 0.1 second,
to improve response time to GUI RPCs
api/
x_opengl.C
client/
app_control.C
app_graphics.C
client_state.C,h
cs_prefs.C
main.C

View File

@ -276,16 +276,11 @@ bool ACTIVE_TASK::handle_exited_app(int stat) {
// The process looks like it exited normally
// but there's no "finish file".
// Assume it was externally killed,
// and just leave it there
// (assume user is about to exit core client)
// and arrange for it to get restarted.
//
#if 0
state = PROCESS_IN_LIMBO;
#else
scheduler_state = CPU_SCHED_PREEMPTED;
state = PROCESS_UNINITIALIZED;
detach_and_destroy_shmem();
#endif
limbo_message(*this);
return true;
}
@ -300,14 +295,15 @@ bool ACTIVE_TASK::handle_exited_app(int stat) {
// if the process was externally killed, allow it to restart.
//
switch(got_signal) {
switch (got_signal) {
case SIGHUP:
case SIGINT:
case SIGQUIT:
case SIGKILL:
case SIGTERM:
case SIGSTOP:
state = PROCESS_IN_LIMBO;
scheduler_state = CPU_SCHED_PREEMPTED;
state = PROCESS_UNINITIALIZED;
limbo_message(*this);
return true;
}

View File

@ -64,7 +64,7 @@ void ACTIVE_TASK::check_graphics_mode_ack() {
if (!app_client_shm.shm) return;
if (app_client_shm.shm->graphics_reply.get_msg(buf)) {
app_client_shm.decode_graphics_msg(buf, gm);
BOINCTRACE("got graphics ack %s for %s\n", buf, result->name);
//BOINCTRACE("got graphics ack %s for %s\n", buf, result->name);
if (gm.mode != MODE_REREAD_PREFS) {
graphics_mode_acked = gm.mode;
}
@ -105,7 +105,7 @@ void ACTIVE_TASK_SET::save_app_modes() {
atp->graphics_mode_acked = MODE_HIDE_GRAPHICS;
}
atp->graphics_mode_before_ss = atp->graphics_mode_acked;
BOINCTRACE("saved mode %d\n", atp->graphics_mode_acked);
//BOINCTRACE("saved mode %d\n", atp->graphics_mode_acked);
}
}
@ -186,11 +186,11 @@ ACTIVE_TASK* CLIENT_STATE::get_next_graphics_capable_app() {
best_atp = atp;
}
if (best_atp) {
BOINCTRACE("chose SS: %s\n", best_atp->result->name);
return atp;
}
//BOINCTRACE("chose SS: %s\n", best_atp->result->name);
return atp;
}
}
}
BOINCTRACE("no SS to choose\n");
//BOINCTRACE("no SS to choose\n");
return NULL;
}

View File

@ -342,7 +342,7 @@ bool CLIENT_STATE::do_something(double now) {
start_cpu_benchmarks();
}
check_suspend_activities(reason);
check_suspend_activities(now, reason);
if (reason) {
if (!activities_suspended) {
suspend_activities(reason);
@ -367,7 +367,7 @@ bool CLIENT_STATE::do_something(double now) {
return gui_rpcs.poll(dtime());
}
check_suspend_network(reason);
check_suspend_network(now, reason);
if (reason) {
if (!network_suspended) {
suspend_network(reason);

View File

@ -186,7 +186,13 @@ private:
// --------------- cs_apps.C:
public:
bool must_schedule_cpus;
// set when a result is newly runnable or finished
// Reschedule CPUs ASAP. Set when:
// - core client starts (CS::init())
// - an app exits (ATS::check_app_exited())
// - a result's input files finish downloading (CS::update_results())
// - an app fails to start (CS::schedule_cpus())
// - any project op is done via RPC (suspend/resume)
// - any result op is done via RPC (suspend/resume)
int restart_tasks();
int quit_activities();
void set_ncpus();
@ -238,10 +244,10 @@ public:
int allowed_disk_usage(double&);
int allowed_project_disk_usage(double&);
private:
void check_suspend_activities(int&);
void check_suspend_activities(double, int&);
int suspend_activities(int reason);
int resume_activities();
void check_suspend_network(int&);
void check_suspend_network(double, int&);
int suspend_network(int reason);
int resume_network();
void install_global_prefs();

View File

@ -131,9 +131,13 @@ inline bool now_between_two_hours(int start_hour, int end_hour) {
// See if (on the basis of user run request and prefs)
// we should suspend activities.
//
void CLIENT_STATE::check_suspend_activities(int& reason) {
void CLIENT_STATE::check_suspend_activities(double now, int& reason) {
static double last_time = 0;
reason = 0;
if (now - last_time < 5.0) return;
last_time = now;
// Don't work while we're running CPU benchmarks
//
if (are_cpu_benchmarks_running()) {
@ -204,9 +208,13 @@ int CLIENT_STATE::resume_activities() {
return 0;
}
void CLIENT_STATE::check_suspend_network(int& reason) {
void CLIENT_STATE::check_suspend_network(double now, int& reason) {
static double last_time=0;
reason = 0;
if (now - last_time < 5.0) return;
last_time = now;
if (user_network_request == USER_RUN_REQUEST_ALWAYS) return;
if (user_network_request == USER_RUN_REQUEST_NEVER) {
reason |= SUSPEND_REASON_USER_REQ;

View File

@ -279,7 +279,7 @@ int boinc_main_loop(int argc, char** argv) {
dt = dtime();
if (!gstate.do_something(dt)) {
dt = dtime();
gstate.net_sleep(1.);
gstate.net_sleep(0.1);
dt = dtime() - dt;
log_messages.printf(CLIENT_MSG_LOG::DEBUG_TIME, "SLEPT %f SECONDS\n", dt);
fflush(stdout);