- client, scheduler, RPC protocol:
- If the scheduler doesn't have any app versions for resource type X, it includes an element <no_X_apps>1</no_X_apps> in the reply msg (e.g., <no_cpu_apps>1</no_cpu_apps>)
- The client parses and stores these flags, and doesn't ask a project for work for a resource if the project doesn't have app versions for it. Apparently I started this change in  (October 2009) and forgot to finish it.
- client: fix "Snooze GPU"
- client: change scheduling policy to allow multithread jobs to coexist with GPU jobs that use significant CPU time. Old: run a MT job only if total CPU usage will be < #CPUs + 1. So if you have some GPU jobs running and their CPU usage sums to < 1, BOINC will run a MT job too. But if CPU usage > 1 BOINC won't run the MT job, and some CPUs will be idle. Note: to maximize throughput, it might be better to run either GPU jobs or MT jobs, but not both at the same time. However, volunteers don't like it when CPUs are idle. So... New: ignore the CPU usage of GPU jobs in deciding whether to run MT jobs. So we'll run a 4-core MT job (at low priority) even if GPU jobs (which run at normal priority) use > 1 CPU. (Yes, the MT job might run very slow)
- manager: don't show resources redundantly on task properties page
- boinccmd: --get_cc_status now prints its result
- client: fix yesterday's checkin  for anonymous platform: if project P is anonymous platform don't request work for resource R from P if there is no app version using R in P/app_info.xml else don't request work for resource R from P if P tells us it has no app versions using R
- MGR: Disable balloons on Linux for the time being.