Commit Graph

1156 Commits

Author SHA1 Message Date
Charlie Fenton 32dfd64156 Mac GFX Library: fix bugs introduced in commit baac677 when rendering some graphics apps. Project graphics apps for Macintosh should be relinked with libboinc_graphics2.a built using these updated source files. 2018-02-04 03:21:54 -08:00
Charlie Fenton 6ae2b433c3 Mac: Changes to Xcode project to support screensaver changes for Mac OS 10.13. Added file needed for Mach-O communication. 2017-10-02 18:02:00 -07:00
Charlie Fenton 2dbdc578b4 api: fix Mac compiler warning by eliminating unnecessary include file 2017-10-01 03:04:54 -07:00
Charlie Fenton baac6772d2 api: BOINC graphics library changes to support Mac OS 10.13 2017-09-30 04:57:59 -07:00
Vitalii Koshura bd9ada5aa8
api: Move 'strlen' function outside of the loop
From PVS Studio:
V814
Decreased performance. The 'strlen' function was called multiple times inside the body of a loop.
https://www.viva64.com/en/w/V814/print

Signed-off-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
2017-05-02 16:10:00 +03:00
David Anderson cae62587af API, Android: don't show time/pid in debug message prefix; causes crashes 2017-04-14 11:58:29 -07:00
David Anderson d71616dd7c Android API: fix bug when using MSGS_FROM_FILE (from David K) 2017-04-13 23:57:32 -07:00
David Anderson 247e6b096b API: check for null FILE pointers with MSGS_FROM_FILE option. 2017-04-12 18:25:24 -07:00
David Anderson ea0e453bc6 API: fix Android version, hopefully. Add new debugging mechanism.
See http://boinc.berkeley.edu/trac/wiki/AppDebug#TestingwithoutaBOINCclientpart2
2017-04-12 13:47:23 -07:00
David Anderson 163adf784d Forgot to turn off debug flag in API code 2017-04-09 11:20:46 -07:00
David Anderson 13a5b9bf3e change multiple-inclusion guard names to BOINC_FILENAME_H 2017-04-07 23:54:49 -07:00
David Anderson b717942bb3 API: add debugging mechanism for control messages.
Set MSGS_FROM_FILE in boinc_api.cpp, put msgs in "msgs.txt"
e.g. writing "<quit/>" to msgs.txt tells the app to quit
2017-04-07 17:38:57 -07:00
David Anderson d726d1b0bc API: my revisions to David Kim's Android version 2017-04-07 16:46:45 -07:00
Fabrice Fontaine bf807980c1 Fix LDFLAGS for cross-compilation
Remove "-L$(libdir) -rapth $(libdr)" from LDFLAGS of boinc libraries in
Makefile.am of api, lib, sched and zlib directories to be able to
cross-compile boinc.

Indeed, libdir is not equal to the path where BOINC will be installed
but to exec_prefix/lib. The full installation path is
$(DESTDIR)/$(libdir).

To cross-compile boinc, exec_prefix will be set to the target path (for
example: /usr) and DESTDIR will be set (during make install) to the
staging or target directory on the host (for example /home/xxx/target).
The issue of adding -L$(libdir) is that it is not allowed by the
compiler, the error "unsafe header/library path used in
cross-compilation: '-L/usr/lib'" will be raised.

As a result, remove "-L$(libdir) -rapth $(libdr)" from LDFLAGS, the
default library search paths are sufficient for "standard" compilation
or can be updated manually by passing the additional search path to
LDFLAGS during the configure call for cross-compilation.

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2017-03-04 16:46:41 +01:00
Charlie Fenton 35ec133677 Mac: add comments that mac_icon.cpp and MakeAppIcon_h utility are obsolete, describing new preferred method for adding icons to Mac science applications. 2017-02-27 06:37:48 -08:00
Rom Walton 826437f244 API: Cleanup low hanging fruit with regards to cleaning up strcpy and strcat use.
Use safe_strcpy and safe_strcat when dealing with non-pointer data types.
2016-02-15 20:11:03 -05:00
David Anderson d5f5918111 Replace strncpy() with strlcpy() various places.
Except for very specific cases, strncpy() should never be used.
It can result in a non-terminated string.

Also replace strncat() with strlcat(); the latter is simpler
because you don't have to calculate remaining buffer space.
2016-02-01 20:23:18 -08:00
Eric J Korpela 8fe6f95548 API GRAPHICS Fixed the reason the SETI@home 3D graph wasn't showing up. If
this is a problem for other projects we can attempt to fork this file into
SETI@home.
2015-12-09 12:59:40 -08:00
Christian Beer 365ca7960f initialize fields in constructors
fixes CID 28025 found by Coverity Scan
2015-10-20 17:57:57 +02:00
David Anderson 8b540139e0 API: tweak "waiting for lock" message that users see 2015-06-24 12:25:33 -07:00
David Anderson 55a998fc01 Fix build errors 2015-01-16 09:29:49 -08:00
Rom Walton 8bdf177e4e HTMLGFX: Checkpoint (Continuation of previous commit.)
* Custom IE Javascript interface is gone, it was replaced with a cross-browser Web RPC.
In the HTML doc you can add:
<script type='text/javascript' src='/api/static/boinc.js'></script>

In the JavaScript code you can:
var boinc = new BOINC();

From there you can get the username like:
var userName = boinc.getUserName();

* Default resources are embedded within the executable in much the same way XPM images are embedded in the manager.
  /api/static/index.html
  /api/static/boinc.png
  /api/static/boinc.js
2015-01-16 00:49:17 -05:00
David Anderson d53a3e3718 API: hard-write filename for graphics status; initialize stuff in parse 2015-01-05 15:16:35 -08:00
David Anderson 0bae306002 API: move graphics-related code to appropriate file 2015-01-05 14:04:22 -08:00
Rom Walton 4affcff684 API: Introduce the graphics_status APIs which will be used by vboxwrapper/wrapper/project app to inform htmlgfx what is going on. 2014-12-26 17:20:40 -05:00
David Anderson f0c39bdf51 API: fix bug where app doesn't exit if client dies while app in critical section
There were two parts to this:
- In the timer thread, we need to check for client death even if
  we're in a critical section.
  If both conditions hold, set the no_heartbeat status flag.
- In boinc_end_critical_section(), check no_heartbeat and exit if set.

Also: the various checks in boinc_end_critical_section()
(quit, abort, no heartbeat) should be conditioned on
options.direct_process_action.
Otherwise wrappers that use critical sections won't do the right thing.
2014-10-31 10:37:56 -07:00
Charlie Fenton 328d87be26 API: Fix a bug in boinc_get_opencl_ids() which incorrectly returned CL_INVALID_DEVICE on some systems. This would happen on hosts with multiple GPUs if:
* the host has GPUs from two different vendors with different OpenCL platforms (e.g., NVIDIA and AMD), and
 * the second platform queried has more GPUs than the first one, and
 * the requested GPU is a higher numbed one in the second platform.
2014-09-22 04:57:23 -07:00
David Anderson 58f3bedb3a API and client: add boinc_finish_message(): exit and show message to user 2014-09-15 23:13:32 -07:00
David Anderson 60140836b6 API: don't return error if trickle-up message is empty 2014-07-28 08:58:02 -07:00
David Anderson 65c82b067f API: remove handle_trickle_down and handle_trickle_up from BOINC_OPTIONS.
Sending or receiving trickle messages required setting flags in BOINC_OPTIONS.
There were two problems with this:
1) it wasn't documented
2) it's not necessary; the act of calling boinc_send_trickle_up()
   tells the runtime system to do the trickle-up-related stuff.

Furthermore, because intermediate file upload shares message channels
with trickles, these functions also required the option flags
(also undocumented).

With this change, you don't need to set options to use
trickle messages are intermediate file upload.
2014-07-04 11:11:38 -07:00
David Anderson 4d6ebcf6a1 change "core client" to "client" in some comments. 2014-05-30 12:29:08 -07:00
David Anderson f15f6d2ba0 API/client/vboxwrapper: show notice if need Vbox upgrade
Vboxwrapper detects known buggy versions of Vbox and calls
boinc_temporary_exit().
The "Incompatible version" message appears in the task status
in the BOINC Manager, where some users may never see it.
It needs to appear as a notice, telling the user to upgrade VBox.

To do this, I added an optional argument to boinc_temporary_exit()
saying that the message should be delivered as a notice.
This is conveyed to the client by adding
a line containing "notice" to the temp exit file.
I changed the client and vboxwrapper to use this.
2014-05-28 11:05:56 -07:00
David Anderson e5810f3061 client/server: change implementation of "exact fraction done".
My last commit did this using a new API call.
But this would require rebuilding apps any time you want to change it;
too much work.
So instead make it an attribute of apps,
which you can set via the admin web interface.

Corresponding changes to client.
2014-05-04 00:02:32 -07:00
David Anderson 77c4dd7b32 API/client: let apps say that fraction done is precise
Currently the duration estimate for a task is a combination of
- a static estimate, based on wu.rsc_fpops_est and the estimated FLOPS
- a dynamic estimate, based on fraction done (FD) and elapsed time
The weighting of the dynamic estimate is FD^2;
the assumption is that fraction done is imprecise and improves
toward the end of a task.

This isn't ideal for apps that can supply accurate FD.

Solution: add a new API function
boinc_fraction_done_exact().
This notifies the client that the FD is accurate,
and that it should use only the dynamic estimate.
(New clients will do this; old clients will use the FD as the currently do).
2014-05-02 23:11:34 -07:00
U-X1\korpela 34fbfd3297 WIN32 Cross Compile Fixes 2014-05-01 17:44:34 -07:00
U-X1\korpela b86e0fcca6 WIN32 cross compile fixes 2014-05-01 17:41:06 -07:00
Charlie Fenton 79d7c3372a API: fix to previous commit. 2014-05-01 02:21:35 -07:00
Charlie Fenton c42457f305 API: return CL_INVALID_DEVICE from boinc_get_opencl_ids() if init_data.xml passes a value for gpu_opencl_dev_index which does not correspond to an OpenCL capable device. 2014-05-01 02:16:28 -07:00
David Anderson 0543cb0c1e API: message tweak 2014-04-16 21:59:41 -07:00
David Anderson ed8b75a55c API: fix bug causing CPU time under-reporting for compound apps
Check options.send_status_msgs before reporting CPU time on exit
2014-03-03 15:42:04 -08:00
David Anderson 6d78613af0 API: make boinc_api_fortran.cpp compile 2014-02-06 14:27:52 -08:00
David Anderson 02d6a53211 API, Linux: shared memory between app and graphics app shouldn't be world RW 2014-02-03 15:19:19 -08:00
David Anderson 09a642295b ttfont: code format 2014-01-19 16:52:40 -08:00
David Anderson 4466458c80 remove -lpthread from api/Makefile.am; fix example_app build error 2014-01-17 11:23:17 -08:00
David Anderson a3b2be239f Compile fixes for C++11, from Rene Ladan 2013-11-05 09:19:27 -08:00
Rom Walton 3aaeadaf99 API: On Windows, when BOINC runs under 'boinc_master' and a project application runs under 'boinc_project' the new heartbeat mechanism was failing. OpenProcess would return a NULL handle and set GetLastError() to ERROR_ACCESS_DENIED. Account for that situation instead of claiming the client isn't running and shutting down the project application. 2013-11-05 11:24:24 -05:00
David Anderson e0dd68194e API (Android): workaround for Android bug in per-thread signal masking
Per-thread signal masking doesn't work in Android pre-4.1.
As a result, the SIGALRM signals used by the BOINC runtime system,
which are supposed to be handled by the worker thread,
sometimes are handled by the timer thread.
As a result, suspended apps never resume.
Workaround: in the SIGALRM handler, see if we're the timer thread.
If so, use pthread_kill() to send a SIGALRM to the work thread, and return.
2013-09-10 11:29:34 -07:00
David Anderson 174c90218c API (Android): fix typo 2013-08-07 09:11:45 -07:00
David Anderson 920df081e4 API (Android): check whether the SIGALRM signal is erroneously being handled by the timer thread 2013-08-02 13:43:58 -07:00
David Anderson 9eb232ab08 API (Android) sched_yield() before sleep() in signal handler
Trying to fix bug where timer thread stops doing anything
after first suspend on Android (old, 1-core devices).
I suspect that the sleep() in the worker thread's signal handle
is sleeping the entire process.
Insert a sched_yield() before the sleep so that the time thread will run.
2013-07-30 11:04:09 -07:00