Commit Graph

125 Commits

Author SHA1 Message Date
Robert Osfield
a13f8cf4b4 Merge pull request #973 from arnauddgbes/OpenSceneGraph-3.6
fixed installation of PDB files on Windows with Ninja generator.
2020-11-10 16:41:46 +00:00
Alberto Luaces
2ade061ced Code comments, log strings and some variable spell fixes. 2020-10-29 15:14:29 +00:00
Arnaud Huck
855212548d fixed installation of PDB files on Windows with Ninja generator.
Also added installation of PDB files for OpenThreads
2020-07-14 12:09:53 +02:00
Robert Osfield
d1ff16614c Added Thread::CurrentThreadId() method to wrap up thread id functionality in a more platform appropriate way. 2020-01-06 18:39:51 +00:00
Dmitry Marakasov
27e3f57da2 Add FreeBSD-specific code bits for pthread_setaffinity_np support 2019-12-12 13:58:23 +00:00
Thomas Hogarth
e8ba57b22f Improved iOS cmake support for xcode 9.4 and cmake 3.11 2018-12-10 08:22:36 -07:00
Robert Osfield
ed13576d03 From Chris White, Cygwin build fix 2018-08-08 14:42:04 +01:00
Alberto Luaces
02c310982e Fix typos and spelling. 2018-04-23 11:03:37 +01:00
Robert Osfield
862c36a08b Added check if thraeding is running before executing start thread. 2018-03-25 12:13:50 +01:00
Victor
d18f61688d Fixed bug of determining availability of functions ‘pthread_getconcurrency’, ‘pthread_setconcurrency’, ‘pthread_setaffinity_np’ in ‘pthread’ library
CMake cannot find 'pthread_getconcurrency’, ‘pthread_setconcurrency’ and ‘pthread_setaffinity_np' functions in 'pthread' library because when linking internal cmake test did’t specifed ‘-l pthread’.
2018-03-22 08:37:09 +00:00
Alessandro Terenzi
9010fd8035 iOS CMake project generation improvements (bitcode option)
when building for iOS, Xcode allows developers to specify to enable or disable the 'bitcode' compilation option. There's not a preferred way to go and the choice is really up to the developer but considering that:

1. Currently the generated project defaults the option to YES
2. There are almost 90 projects targets that should be modified if one wants to disable the bitcode option (which considerably reduces the footprint of the app)
3. Even though one can select all the 90+ targets and set the option to NO for all of them, the updates could take a few seconds and could be error prone because one could miss to select some targets

I propose to add a CMake setting that is displayed only when building for iOS. By setting this option "before" the project generation would speed up things for developers and would avoid errors at compiling time.
2018-03-09 10:17:59 +00:00
Laurens Voerman
59500d78d0 remove conficting defenition of _WIN32_WINNT in OSG_DETERMINE_WIN_VERSION is ON 2018-02-12 10:47:37 +01:00
Philippe Renon
b843fb19fc openthread: silence some log output 2017-03-30 11:29:53 +02:00
Curtis Rubel
98827b1d49 Missed the printf define at the top of this file.
Put back this:
#ifdef DEBUG
# define DPRINTF(arg) printf arg
#else
# define DPRINTF(arg)
#endif

I think that should do it now...
2016-12-02 08:07:15 -05:00
Curtis Rubel
c829ecf08f Removed all OSGNOTIFY messages and put back all printf output as requested.
Sorry about this mixup, I was not aware that this particular directory was to be considered a separate project and must not rely on any dependencies from the rest of the OSG project.  All OSGNOTIFY messages have been removed and the previous printf statements have been put back.
2016-12-02 08:05:30 -05:00
Curtis Rubel
fab6bff310 Fixed compile time errors that occur when you have ALLOW_PRIORITY_SCHEDULING
defined.  I also replaced all printf's with OSGNOTIFY to get this
more inline with the rest of OSG CGR
2016-12-01 16:36:20 -05:00
Laurens Voerman
16a282ccea unlock cpu's 32-63 on 64 bit windows 2016-10-14 17:19:50 +02:00
Robert Osfield
afb046a196 Bumped OpenThreads version numbers to reflect changes in ABI 2016-10-13 17:43:29 +01:00
OpenSceneGraph git repository
05ed7d1336 Merge pull request #152 from aluaces/spelling2
Some spelling fixes in comments.
2016-10-07 17:05:58 +01:00
Robert Osfield
548c9739ed Restructed how CPU affinity is set to fix build problems when local pthreads doesn't support setting affinity 2016-10-07 15:57:01 +01:00
Robert Osfield
171e4f0f29 Implemented setting thread affinity for threads that aren't OpenThreads threads, such as main thread 2016-10-07 12:17:03 +01:00
Robert Osfield
b9869e137d First cut of OpenThrads::Affinity support for Win32. 2016-10-07 12:17:03 +01:00
Robert Osfield
bc44da49e6 Introduced new OpenThreads::Affinity class to wrap up specification of thread affinity.
Simplified the OpenThreads::SetProcessorAffinityOfCurrentThread/Thread::SetProcessorAffinity() to utilize the new Affinity class
2016-10-07 12:17:03 +01:00
Robert Osfield
0f8a5a86e2 Introduced OpenThreads::SetProcessorAffinityMaskOfCurrentThread(unsigned long cpumask) and Threads::setProcessorAffinityMask(unsigned long cpumask) to allow finer grained control over the CPU affinity. 2016-10-07 12:17:03 +01:00
Alberto Luaces
7f3c92f492 Some spelling fixes in comments. 2016-10-05 18:10:46 +02:00
Robert Osfield
1bdd2aceab Removed __sgi blocks as IRIX is no longer available 2016-09-26 10:03:32 +01:00
Robert Osfield
13fa75fc12 Removed qt threads 2016-09-26 09:22:10 +01:00
Robert Osfield
05f37bec53 Removed IRIX Sproc thead support as IRIX is load dead 2016-09-26 09:08:56 +01:00
Robert Osfield
2c39fa52b8 Removed IRIX Sproc threading support form OpenThreads as IRIX is long dead. 2016-09-26 09:06:28 +01:00
Robert Osfield
552c9b037f Moved initializer to constructors 2016-06-23 08:53:46 +01:00
Robert Osfield
55d0e6918d Moved intializers into constructor. 2016-06-23 08:41:47 +01:00
Robert Osfield
954f782807 Added missing handling of return value 2016-06-23 08:28:25 +01:00
Robert Osfield
1a3a851f6e Fixed unused parameter warning. 2016-06-08 09:34:34 +01:00
Robert Osfield
f16b805e0d Moved status check to quieten coverity warning 2016-06-02 14:56:43 +01:00
Davide Raccagni
6428c33d30 Fixed version of CMakeLists.txt when you check BUILD_OPENTHREAD_WITH_QT and compile with Visual Studio 2015 2016-06-02 10:06:58 +01:00
Robert Osfield
a58f50e6fd Fixed line endings 2016-06-02 10:04:36 +01:00
Ralf Habacker
fc3e30ef25 Install msvc debug files along with the binaries 2016-05-31 17:02:33 +01:00
Alberto Luaces
68baf15806 defines for building on Hurd and BSD kernels 2016-05-31 12:58:57 +01:00
Robert Osfield
e878e53cab From Curtis Rubel, "I would like to submit the attached file for inclusion in future releases of
OpenSceneGraph and the OpenThreads library.

The changes in the file simply remove a few ifndef's that currently
do not allow Linux systems to fully utilize the PThread real-time
scheduling API.

Since Linux now fully supports the PThread scheduling API it would
be beneficial to have it available to use as necessary.  I have
been testing this change since OSG release 3.3.7 and have not seen
any ill affects.

The Priority scheduling api is further protected by another ifdef:

#ifdef ALLOW_PRIORITY_SCHEDULING

that only appears to be defined in the pthreads implementation as
well.  This would make it unlikely that anyone would be affected
by this unless they are intentionally wanting to run with priority
scheduling.  In which case on Linux they would need to make
these same modifications themselves to utilize it to its full extent.

Attached file is for the current trunk as of this date.
"


git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@15140 16af8721-9629-0410-8352-f15c8da7e697
2015-09-25 10:11:52 +00:00
Robert Osfield
ba9dfb2ff6 From Albert Luaces, typo fixes.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14883 16af8721-9629-0410-8352-f15c8da7e697
2015-06-01 13:40:20 +00:00
Robert Osfield
0a1db3d6fc From Jannik Heller, typo fixes
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14832 16af8721-9629-0410-8352-f15c8da7e697
2015-04-13 10:43:56 +00:00
Robert Osfield
70b5297575 From Jannik Heller, typo fixes
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14826 16af8721-9629-0410-8352-f15c8da7e697
2015-04-07 18:01:12 +00:00
Robert Osfield
e5f5c30e4d Removed include/osg/Version and include/OpenThreads/Version headers as these are autogenerated.
Changed the paths for the OpenThreads/osg Version headers to be placed in the PROJECT_BINARY_DIR.


git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14557 16af8721-9629-0410-8352-f15c8da7e697
2014-11-28 16:10:14 +00:00
Robert Osfield
d7c6bb1c4b Standardized on defined(__ANDROID__)
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14556 16af8721-9629-0410-8352-f15c8da7e697
2014-11-28 10:54:40 +00:00
Robert Osfield
b9a529148a From Rafa Gaitan, "I finally had some time to change the build system for Android using a Toolchain, which, I think, will be easier to maintain and uses cmake standard system to build it.
My changes:
-------------------
- I changed the cmake files and added a toolchain for building OSG in Android. The toolchain is based on the one used at OpenCV. For building OSG for android you just need to do:

    mkdir build_android_static_gles2 && cd build_android_static_gles2
    cmake .. -DANDROID_NDK=<path-to-the-android-ndk>
                  -DCMAKE_TOOLCHAIN_FILE=../PlatformSpecifics/Android/android.toolchain.cmake
                  -DOPENGL_PROFILE="GLES2"
                  -DDYNAMIC_OPENTHREADS=OFF
                  -DDYNAMIC_OPENSCENEGRAPH=OFF
                  -DANDROID_NATIVE_API_LEVEL=15 # optional
                  -DANDROID_ABI=armeabim #optional
                  -DCMAKE_INSTALL_PREFIX=<path-to-the-install-path> #optional
make -j 8
make install

    The OPENGL_PROFILE works as expected, changing it to "GLES1" it builds and links OSG using GLES1.
    The DYNAMIC_OPENTHREADS/DYNAMIC_OPENSCENEGRAPH parameters also allows to build the dynamic libraries

- I also added some build fixes for android related to the texture formats and added some missing USE_OSG_SERIALIZER_WRAPPER in the osg serializer library to support loading osgb files in static."


git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14514 16af8721-9629-0410-8352-f15c8da7e697
2014-11-21 10:37:33 +00:00
Robert Osfield
5177298dad Change isRunning variable to an Atomic to address possible race condition asscoiated with reading and writing to the variable from different threads.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14464 16af8721-9629-0410-8352-f15c8da7e697
2014-11-04 20:06:05 +00:00
Robert Osfield
28a676e105 Replaced use of while(isRunning()) { YieldCurrentThread(); } style loops with use of join() to avoid false positives being reported by valgrind when using the helgrind tool for thread debugging.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14460 16af8721-9629-0410-8352-f15c8da7e697
2014-11-04 10:46:59 +00:00
Robert Osfield
490b351330 Replaced obsolete __linux usage. 2014-05-06 16:38:57 +00:00
Robert Osfield
1f33e2a2a0 From Ali Botorabi, "recently I ran into a problem with Microsoft's Appverifier while using OpenThreads on win32 platform. The Appverifier complained about an invalid thread handle during starting of a new thread. After looking closer into the problem it seemed that indeed a potential root of problem may be in the thread startup code. See the line below in Win32Thread.cpp (line number 347):
pd->tid.set( (void*)_beginthreadex(NULL,static_cast<unsigned>(pd->stackSize),ThreadPrivateActions::StartThread,static_cast<void *>(this),0,&ID));

the method "pd->tid.set" sets the thread id, however via the startup function "ThreadPrivateActions::StartThread" that thread id is used (see further down the call hierarchy the line "int status = SetThreadPriority( pd->tid.get(), prio);".

Until now I never ran into any problem in debug or release builds, though. It seems that furtunately the tid.set method was executed always before the tid.get method in the startup code. However, this may make trouble in the furture. A simple solution is the following: just replace the line above with following two lines:

    pd->tid.set( (void*)_beginthreadex(NULL,static_cast<unsigned>(pd->stackSize),ThreadPrivateActions::StartThread,static_cast<void *>(this),CREATE_SUSPENDED,&ID));
    ResumeThread(pd->tid.get());


The trick is just starting the thread in suspended mode so the StartThread function does not get executed and we can safely store the tid by pd->tid.set. Then start the Thread by calling ResumeThread."
2014-05-02 09:11:16 +00:00
Robert Osfield
64979a0c1a From Marcel Pursche, "The problem is that when OpenThreads is build with the Linux pthreads implementation all threads inherit the processor affinity from their parent thread.
This behavior is also described in the pthreads man page (http://man7.org/linux/man-pages/man3/pthread_create.3.html):

>
> Linux-specific details
> The new thread inherits copies of the calling thread's capability
> sets (see capabilities(7)) and CPU affinity mask (see
> sched_setaffinity(2)).
>

To prevent this behaviour I wrote a patch that explicitly sets the affinity mask to all cores of the system, if no specific affinity was defined with PThread::setProcessorAffinity(unsigned int) .

Thank you!
"
2014-04-07 14:11:14 +00:00