DEPRECATED - the samples directory is now part of the BOINC tree David 7 April 2006 - extended upper_case so that it draws graphics (text, image, bouncing ball) NOTE: to get this to work, you have to put in your build dir: - file called "logo.jpg" (the image) - Helvetica.txf - a file called "in" (any old text) - added text functions to library uppercase/ upper_case.C win_build/ libboincapi.vcproj Charlie 11 April 2006 - Mac: updated XCode project for upper_case mac_build/ UpperCase.xcodeproj/ project.pbxproj David 12 Apr 2006 - split out graphics code into separate file uppercase/ uc_graphics.C (new) upper_case.C win_build/ upper_case.vcproj David 13 Apr 2006 - got graphics to work under Linux; added a Makefile uppercase/ Makefile (new) README (new) upper_case.C David 13 Apr 2006 - handle mouse events uppercase/ uc_graphics.C David 21 Apr 2006 - resolve logo filename uppercase/ uc_graphics.C upper_case.C Charlie 27 April 2006 - Mac: updated XCode project for upper_case, fixed jconfig.h to be cross-platform. upper_case now works fully on Intel and PowerPC Macs. jpeglib/ jconfig.h mac_build/ UpperCase.xcodeproj/ project.pbxproj David 29 Apr 2006 - use project preferences () for graphics color - remove -exit, -signal options from upper_case uppercase/ uc_graphics.C upper_case.C David 1 May 2006 - implement boinc_reread_prefs() uppercase/ uc_graphics.C David 26 May 2006 - Added sleeper application (to test non-CPU-intensive features) sleeper/ sleeper.C Makefile David 29 May 2006 - moved wrapper application here from boinc/apps win_build sleeper.vcproj wrapper.vcproj wrapper/ wrapper.C Makefile Rom 31 May 2006 - Demonstrate delay load functionality on graphics libraries for Windows. uppercase/ uc_graphics.C David 13 June 2006 - Added "worker" (for testing wrapper) worker/ Makefile worker.C David 13 June 2006 - added Win project file for worker, fixed names in project files, got stuff to compile uppercase/ upper_case.C win_build/ samples.sln sleeper.vcproj worker.vcproj (new) worker/ worker.C wrapper/ wrapper.C David 14 June 2006 - debugged and updated "wrapper" program. It works now, more or less, on Windows. - wrapper no longer copies input/output files. You must use the attribute in the file reference instead. - attempted to have wrapper pass stderr handle to worker (Windows). Doesn't work yet. worker/ worker.C wrapper/ wrapper.C David 16 June 2006 - generalized wrapper.C so task descriptions are kept in structs; changed format of job file (suggested by Janus) wrapper/ Makefile wrapper.C David 12 Aug 2006 - wrapper: add support for stdin/stdout files (adapted from Eric Myers) - changed project files to VS 2005 win_build/ *.vcproj wrapper/ wrapper.C David 16 Aug 2006 - wrapper: get it to compile on Win, and fix XML parsing wrapper/ wrapper.C David 9 Sept 2006 - change wrapper to use new XML parser wrapper/ wrapper.C David 11 Sept 2006 - added library dependencies to makefiles uppercase/Makefile sleeper/Makefile worker/ Makefile worker.C wrapper/Makefile David 11 Sept 2006 - include all apps in VS solution win_build/samples.sln David 26 Sept 2006 - close state file in uppercase (from Ian/Tigher) uppercase/ upper_case.C David 4 Nov 2006 - uppercase: call boinc_graphics_possible() instead of using a bunch of mysterious inline code. This is supposed to be a good example, not a bad one. uppercase/ upper_case.C Rom 6 Nov 2006 - Checkin VS 2003 project files. David 8 Nov 2006 - The upper_case project file (but not the others) needs GDI32.DLL;OPENGL32.DLL;GLU32.DLL in its list of Delay Loaded DLLs (Linker properties), and delayimp.lib in its Additional Dependencies uppercase/ logo.jpg (new) David 23 Nov 2006 - don't include util.h in worker.C! - fix win compile worker/ worker.C David 24 Nov 2006 - change "worker" to use stdin/stdout - change "worker" to take nsec CPU arg - add example job file worker/ worker.C wrapper/ job.xml David 25 Nov 2006 - wrapper: redirection of stdin/stdout wasn't working correctly on Windows. Need to open files with CreateFile(). win_build/ samples.sln wrapper/ wrapper.C David 5 Dec 2006 - changed upper_case options to -early_crash -early_exit uppercase/ upper_case.C David 8 Dec 2006 - added -early_sleep option to upper_case (for debugging core client) uppercase/ uc_graphics.C upper_case.C David 18 Dec 2006 - compile fix win_build/ libboinc_vcproj David 27 Dec 2006 - comment out boinc_graphics_possible() call uppercase/ upper_case.C David 11 Jan 2007 - upper_case: if checkpoint found, truncate the output file to the indicated size. Otherwise a checkpoint/restart generally produces a bad result. uppercase/ upper_case.C David 21 Feb 2007 - compile fixes sleeper/ sleeper.C uppercase/ upper_case.C win_build/ libboinc.vcproj wrapper/ wrapper.C David 20 Mar 2007 - wrapper (Unix) get actual CPU time of child (not wall time) - uppercase (Unix): change makefile to work on FC6 uppercase/ Makefile uc_graphics.C wrapper/ wrapper.C David 20 Mar 2007 - wrapper (Unix): use more efficient way of getting CPU time wrapper/ wrapper.C David 26 Apr 2007 - wrapper: pass wrapper's command-line args to application, after those in the job file (if any). This lets you pass different command-line args to the app for different workunits, without creating a new app version per workunit. NOTE: actually, I don't think this is necessary; the job file can be part of the workunit, not part of the app version. wrapper/ wrapper.C Rom 9 May 2007 - Update Windows build files so that the advanced features of Visual Studio can be supported, like building multiple binaries at a time. win_build/ *.vcproj David 22 May 2007 - add version 6-style app example_app/ Makefile uc2.C uc2_graphics.C David 22 May 2007 - first stab at getting it to work on Win win_build/ libboincapi.vcproj libgraphics2.vcproj (new) samples.sln uc2.vcproj (new) uc2_graphics.vcproj (new) David 23 May 2007 - version 6 example app works on Win example_app/ uc2.C uc2.h (new) uc2_graphics.C win_build/ libgraphics2.vcproj samples.sln uc2.vcproj uc2_graphics.vcproj David 23 May 2007 - version 6 example app works on Linux example_app/ uc2.h uppercase/ Makefile David 28 May 2007 - Wrapper can handle multiple tasks wrapper/ job.xml wrapper.C David 8 June 2007 - Wrapper: use default diag options wrapper/ wrapper.C David 8 June 2007 example_app/ uc2.C,h uc2_graphics.C David 13 June 2007 - wrapper: set thread priority of worker processes to IDLE class (Win); set prior of worker processes to PROCESS_IDLE_PRIORITY (Unix) uppercase/ upper_case.C wrapper/ wrapper.C David 19 June 2007 example_app/ uc2_graphics.C David 28 June 2007 - wrapper: report CPU time correctly when >1 job wrapper/ wrapper.C David 17 July 2007 - fix fraction done for uppercase. fixes #341 uppercase/ upper_case.C David 20 July 2007 - example_app: #ifdef graphics stuff so we can use this in boinc/apps example_app/ Makefile uc2.C Charlie 29 Aug 2007 - Mac: new XCode project for version 6 example_app. mac_build/ UpperCase2.xcodeproj/ project.pbxproj David 17 Aug 2007 - project file fix win_build/ libgraphics2.vcproj Charlie 29 Aug 2007 - Mac: new XCode project for version 6 example_app. - Mac example_app: Redirect stderr to gfx_stderr.txt so we have a way to get error messages from system for graphics app; fix bugs. example_app/ uc2_graphics.C mac_build/ UpperCase2.xcodeproj/ project.pbxproj Charlie 2 Sep 2007 - Mac: remove jpeg sources from worker app in example_app XCode project. - example_app: put boinc_graphics_get_shmem in main graphics loop to retry if worker application has not yet created shared memory. example_app/ uc2_graphics.C mac_build/ UpperCase2.xcodeproj/ project.pbxproj Charlie 4 Sep 2007 - Mac: redirect stderr only on Development builds so as not to violate sandbox security. example_app/ uc2_graphics.C mac_build/ UpperCase2.xcodeproj/ project.pbxproj David 12 Sept 2007 - uppercase: fix crash in standalone mode - wrapper: fix append mode in win_fopen() uppercase/ uc_graphics.C wrapper/ wrapper.C David 20 Sept 2007 - wrapper: fix append mode in win_fopen() (2nd try) wrapper/ wrapper.C Charlie 25 Sep 2007 - example_app: Set backwards_compatible_graphics" flag. - example_app: Port David's crash fix of 12 Sept into uc2_graphics.C. example_app/ uc2.C uc2_graphics.C David 26 Sept 2007 - example_app: don't set above flag (it's set by default now) example_app/ uc2.C David 26 Sept 2007 - minor stuff example_app uc2.C uc2_graphics.C Charlie 27 Sep 2007 Mac: remove "-DAPP_GRAPHICS" from XCode project C flags to fix a compiler warning now that it is defined in the source file. mac_build/ UpperCase2.xcodeproj/ project.pbxproj David 27 Nov 2007 - wrapper, Win: if GetProcessTimes() fails (which it does on Win 98/ME), use wall CPU time as estimate of CPU time wrapper/ wrapper.C Charlie 28 Nov 2007 Mac: Add x86_64_Deployment build configuration to XCode project for use with V6 Clients running under OS 10.5 on 64-bit capable Intel Macs. mac_build/ UpperCase2.xcodeproj/ project.pbxproj David 6 Jan 2008 - small bug fix wrapper/ wrapper.C David 28 Jan 2008 - example app: parse and from project-specific prefs. This gives the user a couple of ways of limiting CPU usage for graphics. - example app: define APP_GRAPHICS in project file, not source example_app/ uc2.C uc2_graphics.C Charlie 19 Feb 2008 Mac: Restore "-DAPP_GRAPHICS" to XCode project C flags. mac_build/ UpperCase2.xcodeproj/ project.pbxproj Charlie 21 Feb 2008 Mac: Add an application icon to example_app graphics application. example_app/ uc2_graphics.C mac/ uc2_graphics.icns app_icon.h David 6 Mar 2008 - wrapper: if a child exits with nonzero status X, call boinc_finish() with ERR_CHILD_FAILED rather than X. If X is zero in the low-order byte (e.g. if the program isn't executable) the BOINC client will restart us, which isn't what we want. wrapper/ wrapper.C David 6 Mar 2008 - wrapper (Win): suspend or resume all the threads in an app, not just the initial one. - wrapper: merge app_suspended and TASK::suspended variables wrapper/ wrapper.C David 6 Mar 2008 - Wrapper (Mac): use elapse wall time as CPU time; there's no easy way to get another process's CPU time in Mac OS X wrapper/ wrapper.C David 9 Mar 2008 - wrapper: compile fixes for Mac wrapper/ wrapper.C Charlie 11 Mar 2008 - UpperCase: delete XCode project for deprecated uppercase application. mac_build/ UpperCase.xcodeproj/ (removed) project.pbxproj (removed) Rom 13 Mar 2008 - Uppercase: Initialize the diagnostics framework for graphics application. example_app/ uc2_graphics.C David 14 Mar 2008 - added example multi-thread application multi_thread/ Makefile multi_thread.C David 14 Mar 2008 - get multi_thread to work on Windows, and fix it up multi_thread/ multi_thread.C win_build/ multi_thread.vcproj (new) samples.sln David 17 Mar 2008 - multi_thread: default to 1 thread; print to stderr at end multi_thread/ multi_thread.C David 20 Mar 2008 - multi-thread: the Windows version was running unexpectedly fast. It turned out that the VS2005 C++ compiler was noticing that giga_flop() didn't use any inputs or globals, so it was caching its value after the first run. Very impressive! multi_thread/ multi_thread.C win_build/ multi_thread.vcproj Charlie 25 Mar 2008 - example_app: Create Mac makefile and build script to demonstrate building project applications for the Mac using makefiles. example_app/ Makefile_mac (new) MakeMacExample.sh (new) Charlie 26 Mar 2008 - example_app: Update Mac makefile and build script, create second, stand-alone makefile to demonstrate another way to build Mac applications. example_app/ Makefile_mac Makefile_mac2 (new) MakeMacExample.sh David 27 Mar 2008 - multi_thread: maintain fraction done; get nthreads from command line, not init file multi_thread/ multi_thread.C Charlie 28 Mar 2008 - example_app: Fixes to Mac build script. example_app/ MakeMacExample.sh David 28 Mar 2008 - multi_thread: suspend/resume didn't work in the Unix implementation. REMINDER TO SELF: you can't suspend or resume pthreads - period. So I changed things so that in the Unix implementation, we fork a second process, in which the threads run. The first process handles suspend/resume messages by signaling the 2nd process. The 2nd process generates system messages (frac done, CPU time) multi_thread/ multi_thread.C David 31 Mar 2008 - example graphics app: if no heartbeat, quit after 5 seconds example_app/ uc2_graphics.C Charlie 1 Apr 2008 - example_app: Remove -fvisibility* compiler flags from all 3 Mac build methods. example_app/ Makefile_mac2 MakeMacExample.sh mac_build/ UpperCase2.xcodeproj/ project.pbxproj Rom 8 May 2008 - Uc2 - Change the call to diagnostics_init to boinc_init_graphics_diagnostics for the graphics application. example_app/ uc2_graphics.C Rom 8 May 2008 - Example_App - Rename Uc2 stuff to example_app stuff. win_build/ David 8 May 2008 - uppercase: use binary output mode on Win, otherwise results don't match. - graphics app: call boinc_finish_diag() instead of diagnostics_finish() (API calls should start with boinc_; it would be nice it the init/finish names matched) example_app/ uc2_graphics.C uc2.C David 14 May 2008 - uppercase: borrow CPU-burning routine from multithread (won't be optimized out) example_app/ uc2.C David 16 May 2008 - wrapper: when run a job, write program name and cmdline to stderr wrapper/ wrapper.C David 10 June 2008 - graphics: if no graphics app is running, don't bother updating shmem (not important in the example app, but a useful technique if updating the shmem is expensive) example_app/ uc2.C,h uc2_graphics.C David 17 June 2008 - wrapper: add two new features. 1) each task can include a (double, default=1). The task's contribution to total fraction done is proportional to the weight. 2) each task can include a (string) This names a checkpoint file used by the app. If its mod time changes, we'll assume a checkpoint has been done and notify the client. wrapper/ wrapper.C David 18 June 2008 - change name of exit code wrapper/ wrapper.C David 18 June 2008 - wrapper: replace $PROJECT_DIR with project dir in task command lines - wrapper: if program name starts with $PROJECT_DIR, substitute with project dir and treat as physical name wrapper/ wrapper.C David 18 June 2008 - wrapper: Win: change slashes to backslashes in executable path wrapper/ wrapper.C David 19 June 2008 - wrapper, Win: put quotes around program name in command-line arg to CreateProcess() (in case it contains spaces) - wrapper: close files wrapper/ wrapper.C David 26 June 2008 - wrapper: added --graphics cmdline arg. Use this if your app has a graphics app. wrapper/ wrapper.C David 27 July 2009 - example app: fix a bug in June 10 checkin. If we don't update the update_time field, the graphics app will immediately exit. example_app/ uc2.C uc2_graphics.C Charlie 11 Feb 2009 - Mac Samples: adjust XCode project for current source file names (*.cpp instead of *.C). samples/ mac_build/ UpperCase2.xcodeproj