From 5efd1cf38aee26f3cea92c01bc529528959d0e37 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 29 Jan 2008 19:51:26 +0000 Subject: [PATCH] - graphics API: default max graphics CPU fraction is 0.2 (see accompanying changes in example app; app should parse project-specific prefs) svn path=/trunk/boinc/; revision=14635 --- api/graphics2.C | 4 +++- checkin_notes | 8 ++++++++ doc/ogm.png | Bin 5111 -> 10101 bytes 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/api/graphics2.C b/api/graphics2.C index 7c069c88a9..81c7098980 100644 --- a/api/graphics2.C +++ b/api/graphics2.C @@ -26,7 +26,9 @@ #include "graphics2.h" double boinc_max_fps = 30.; -double boinc_max_gfx_cpu_frac; +double boinc_max_gfx_cpu_frac = 0.2; + // needs to be fairly low. Graphics apps run at normal priority, + // so they can prevent main app from getting any time bool throttled_app_render(int x, int y, double t) { static double total_render_time = 0; diff --git a/checkin_notes b/checkin_notes index ea2a2017a6..be7696d8af 100644 --- a/checkin_notes +++ b/checkin_notes @@ -862,3 +862,11 @@ Charlie Jan 29 2008 ViewProjectsGrid.cpp ViewWork.cpp ViewWorkGrid.cpp + +David Jan 20 2008 + - graphics API: default max graphics CPU fraction is 0.2 + (see accompanying changes in example app; + app should parse project-specific prefs) + + api/ + graphics2.C diff --git a/doc/ogm.png b/doc/ogm.png index 86a494e6c83e288a5211f48ff3a338cad9db78df..4a360f98cdd38b63271ae6ff4b8334b29c9ffc63 100644 GIT binary patch literal 10101 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 UaFnJo>>xl=R8Hi#kp8#-11o0$*#H0l literal 5111 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